@phin-tech/dottie 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
- /*! dottie.js 0.7.0 | Apache-2.0 | https://github.com/phin-tech/dottie */
2
- "use strict";(()=>{var Rn=Object.defineProperty;var Gi=(t,e,n)=>e in t?Rn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Bi=(t,e)=>{for(var n in e)Rn(t,n,{get:e[n],enumerable:!0})};var v=(t,e,n)=>Gi(t,typeof e!="symbol"?e+"":e,n);var Mn={};Bi(Mn,{BOIL_DRAWINGS:()=>Oe,BUNDLED_FONTS:()=>Bt,DottieFormatError:()=>rt,DottiePlayer:()=>Ot,KINDS:()=>En,KNOWN_FIELDS:()=>In,MAX_DURATION:()=>Tt,MAX_MARCH:()=>De,Playback:()=>te,SUPPORTED_VERSION:()=>Ce,VERSION:()=>mr,addFonts:()=>de,allowedURL:()=>kt,black:()=>xt,bounds:()=>ht,cameraView:()=>Dt,clampFPS:()=>St,clampMarch:()=>Ln,clampTime:()=>z,clear:()=>Fn,cloneElement:()=>G,definePlayer:()=>Fe,elementIndex:()=>Ji,fontFaces:()=>Ge,fontFile:()=>ze,frameTimes:()=>Re,inkOnDark:()=>Cn,inspect:()=>$i,inspectFrame:()=>wn,inspectPage:()=>Pn,isAutomaticInk:()=>Gt,luminance:()=>Et,orderedElements:()=>st,pageIndex:()=>ee,parseDottie:()=>zt,plan:()=>Yt,posterTime:()=>yt,render:()=>hr,repeatIsValid:()=>ce,resolved:()=>nt,sameColor:()=>At,sampleTimes:()=>kn,sceneAt:()=>wi,setFontBase:()=>zn,stableSortBy:()=>ae,still:()=>ki,svg:()=>Le,svgParts:()=>gt,themeNamed:()=>vt,themes:()=>gn,transientElements:()=>Pi,usedFonts:()=>me,webLink:()=>$t,withRoughness:()=>ne});function le(t){return t.length<=64&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)}function Ni(t){let e=[];for(let n of t.split("||"))for(let i of n.split("&&")){let o=se(i);if(o.startsWith("!")&&(o=se(o.slice(1))),!le(o))return null;e.push(o)}return e}function Zi(t,e){return Ni(t)===null?!1:t.split("||").some(n=>n.split("&&").every(i=>{let o=se(i),r=!1;return o.startsWith("!")&&(r=!0,o=se(o.slice(1))),(e[o]??!1)!==r}))}function Xi(t,e){return e==="all"?null:e==="initial"?{...t.variables??{}}:{...t.variables??{},...e}}function vn(t,e){let n=Xi(t,e),i=new Set;if(!n)return i;for(let o of t.elements)o.when!==null&&!Zi(o.when,n)&&i.add(o.id);return i}function Tn(t){return!!t&&(Object.keys(t.set??{}).length>0||(t.toggle??[]).length>0)}function An(t,e){let n={...e};for(let[i,o]of Object.entries(t.set??{}))n[i]=o;for(let i of t.toggle??[])n[i]=!(n[i]??!1);return n}function se(t){return t.replace(/^[ \t ]+|[ \t ]+$/g,"")}var Ce=2,En=["rectangle","ellipse","diamond","text","connector","freehand","path","note","image","symbol"],Ui=["linear","easeIn","easeOut","easeInOut","hold","spring","bounce","elastic"],In={file:["version","pages","images"],page:["id","name","layers","elements","theme","guidesX","guidesY","guidesLocked","timeline","symbols","variables"],symbol:["id","name","width","height","layers","elements","timeline","button","params"],layer:["id","name","visible","locked"],rgba:["r","g","b","a"],style:["stroke","fill","fillStyle","strokeWidth","dash","roughness","bowing","fontSize","font","gridSize","opacity","dashOffset","textColor"],element:["id","kind","x","y","width","height","style","seed","layerID","text","connector","groupID","points","path","subpaths","evenOdd","rotation","link","url","anchor","click","hover","when","symbol","playback","offset","args","image","reveal","ports","labelRect","extension"],strokePoint:["x","y"],subpath:["closed","coords"],inlineImage:["data","format"],endpoint:["elementID","port","portIndex","x","y"],extensionRef:["id","shape","version","params"],normalizedPoint:["x","y"],normalizedRect:["x","y","width","height"],connector:["start","end","routing","startHead","endHead","waypoints","hops"],waypoint:["x","y"],timeline:["fps","duration","boil","settle","poster","tracks","camera","markers"],track:["element","keys","boil","follow","repeats","march"],keyframe:["t","x","y","width","height","rotation","strokeWidth","stroke","fill","visible","reveal","opacity","ease"],follow:["path","start","end","ease","reverse","orient","laps"],repeat:["start","end","count"],cameraKey:["t","x","y","width","height","ease"],marker:["t","name","loop"],click:["scene","url","set","toggle"],hover:["stroke","fill","opacity"]},Tt=3600,De=1e4,Ln=t=>t===void 0||!Number.isFinite(t)||t===0?null:Math.min(Math.max(t,-De),De),Oe=3,xt={r:.12,g:.12,b:.13,a:1},Fn={r:0,g:0,b:0,a:0},Cn={r:.93,g:.93,b:.94,a:1},rt=class extends Error{},E=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),A=t=>typeof t=="number"&&Number.isFinite(t)?t:void 0,L=t=>typeof t=="string"?t:void 0,Sn=t=>E(t)&&Object.values(t).every(e=>typeof e=="string")?{...t}:null,N=t=>typeof t=="boolean"?t:void 0,j=t=>typeof t=="string"?t.toUpperCase():void 0;function z(t){return Number.isFinite(t)?Math.min(Math.max(t,0),Tt):t===1/0?Tt:0}function St(t){return Number.isFinite(t)?Math.min(Math.max(t,1),60):12}function kt(t){let e=t.trim();return!/^(https?:\/\/|mailto:)/i.test(e)||[...e].length<=7||/[\u0000-\u001f\u007f-\u009f]/.test(e)?null:e}function $t(t){return t?kt(t):null}function bt(t){if(!E(t))return;let e=A(t.r),n=A(t.g),i=A(t.b);if(!(e===void 0||n===void 0||i===void 0))return{r:e,g:n,b:i,a:A(t.a)??1}}var Ye=class{constructor(){v(this,"warnings",[]);v(this,"seen",new Set)}warn(e){this.seen.has(e)||(this.seen.add(e),this.warnings.push(e))}fields(e,n){let i=In[n];for(let o of Object.keys(e))i.includes(o)||this.warn(`Unknown field "${o}" on ${n}, ignored`)}style(e){let n=E(e)?e:{};this.fields(n,"style");let i=L(n.fillStyle)??"solid",o=L(n.dash)??"solid";return["solid","hachure","crossHatch","grid"].includes(i)||this.warn(`Unknown fill style "${i}", drawn solid`),["solid","dashed","dotted"].includes(o)||this.warn(`Unknown dash "${o}", drawn solid`),{stroke:bt(n.stroke)??{...xt},fill:bt(n.fill)??{...Fn},fillStyle:["solid","hachure","crossHatch","grid"].includes(i)?i:"solid",strokeWidth:A(n.strokeWidth)??2,dash:["solid","dashed","dotted"].includes(o)?o:"solid",roughness:A(n.roughness)??1,bowing:A(n.bowing)??1,fontSize:A(n.fontSize)??18,font:L(n.font)||null,gridSize:A(n.gridSize)??null,opacity:A(n.opacity)??null,dashOffset:A(n.dashOffset)??null,textColor:bt(n.textColor)??null}}endpoint(e){let n=E(e)?e:{},i=L(n.port),o=A(n.portIndex);return{elementID:j(n.elementID)??null,port:i&&["top","right","bottom","left"].includes(i)?i:null,portIndex:o!==void 0&&Number.isInteger(o)&&o>=0?o:null,x:A(n.x)??0,y:A(n.y)??0}}connector(e){if(!E(e))return null;this.fields(e,"connector");let n=(o,r)=>{let l=L(o);return l&&["none","arrow","triangle","dot","bar"].includes(l)?l:r},i=L(e.routing);return{start:this.endpoint(e.start),end:this.endpoint(e.end),routing:i&&["straight","curved","elbow"].includes(i)?i:"straight",startHead:n(e.startHead,"none"),endHead:n(e.endHead,"arrow"),waypoints:Array.isArray(e.waypoints)?e.waypoints.filter(E).map(o=>(this.fields(o,"waypoint"),{x:A(o.x)??0,y:A(o.y)??0})):null,hops:typeof e.hops=="boolean"?e.hops:null}}image(e,n){if(!E(e))return null;let i=L(e.ref);if(i!==void 0)return n[i]??{data:"",format:"png"};let o=L(e.data);return o===void 0?null:this.picture(o,L(e.format))}picture(e,n){return ji.test(e)?{data:e.replace(/\s+/g,""),format:n==="jpeg"?"jpeg":"png"}:(this.warn("Skipped a picture whose data isn't base64"),{data:"",format:"png"})}element(e,n){if(!E(e))return null;this.fields(e,"element");let i=j(e.id),o=L(e.kind),r=j(e.layerID);if(!i||!o||!r)return this.warn("Skipped an element without an id, kind or layer"),null;En.includes(o)||this.warn(`Unknown element kind "${o}", drawn as a placeholder`);let l=Array.isArray(e.subpaths)?e.subpaths.filter(E).map(s=>({closed:N(s.closed)??!1,coords:Array.isArray(s.coords)?s.coords.filter(a=>typeof a=="number"):[]})):null;return{id:i,kind:o,layerID:r,x:A(e.x)??0,y:A(e.y)??0,width:A(e.width)??0,height:A(e.height)??0,style:this.style(e.style),seed:(A(e.seed)??1)>>>0,text:L(e.text)??null,connector:this.connector(e.connector),groupID:j(e.groupID)??null,points:Array.isArray(e.points)?e.points.filter(E).map(s=>({x:A(s.x)??0,y:A(s.y)??0})):null,path:Array.isArray(e.path)?e.path.filter(s=>typeof s=="number"):null,subpaths:l,evenOdd:N(e.evenOdd)??null,rotation:A(e.rotation)??null,link:j(e.link)??null,url:L(e.url)??null,anchor:L(e.anchor)??null,click:this.click(e.click),hover:this.hover(e.hover),when:L(e.when)??null,symbol:j(e.symbol)??null,playback:this.playback(e.playback),offset:A(e.offset)??null,args:Sn(e.args),image:this.image(e.image,n),reveal:A(e.reveal)??null,ports:Array.isArray(e.ports)?e.ports.map(s=>{let a=E(s)?s:{};return{x:A(a.x)??0,y:A(a.y)??0}}):null,labelRect:this.labelRect(e.labelRect),extension:this.extension(e.extension)}}labelRect(e){return E(e)?(this.fields(e,"normalizedRect"),{x:A(e.x)??0,y:A(e.y)??0,width:A(e.width)??0,height:A(e.height)??0}):null}extension(e){if(!E(e))return null;this.fields(e,"extensionRef");let n=L(e.id),i=L(e.shape),o=L(e.version);if(n===void 0||i===void 0||o===void 0)return this.warn("Skipped an extension without an id, shape or version"),null;let r={};if(E(e.params))for(let[l,s]of Object.entries(e.params))(typeof s=="number"||typeof s=="boolean"||typeof s=="string")&&(r[l]=s);return{id:n,shape:i,version:o,params:r}}variables(e){if(!E(e))return null;let n={};for(let[i,o]of Object.entries(e))typeof o=="boolean"&&(n[i]=o);return Object.keys(n).length>0?n:null}click(e){if(!E(e))return null;this.fields(e,"click");let n=L(e.url),i=n===void 0?null:kt(n);n!==void 0&&i===null&&this.warn("Skipped a click link that isn't http, https or mailto");let o=null;if(E(e.set)){o={};for(let[s,a]of Object.entries(e.set))typeof a=="boolean"&&le(s)&&(o[s]=a);Object.keys(o).length===0&&(o=null)}let r=typeof e.toggle=="string"?[e.toggle]:Array.isArray(e.toggle)&&e.toggle.every(s=>typeof s=="string")?e.toggle:null,l=r?r.filter(le):null;return{scene:L(e.scene)??null,url:i,set:o,toggle:l&&l.length>0?l:null}}playback(e){let n=L(e);return n===void 0?null:["loop","once","still","click"].includes(n)?n:"loop"}symbol(e,n){if(!E(e))return null;this.fields(e,"symbol");let i=j(e.id);if(!i)return this.warn("Skipped a symbol without an id"),null;let o=l=>{let s=A(l);return Math.max(1,s??100)},r=(Array.isArray(e.layers)?e.layers:[]).filter(E).flatMap(l=>{let s=j(l.id);return s?[{id:s,name:L(l.name)??"",visible:N(l.visible)??!0,locked:N(l.locked)??!1}]:[]});return r.length===0&&r.push({id:`${i}-LAYER`,name:"Layer 1",visible:!0,locked:!1}),{id:i,name:L(e.name)??"Symbol",width:o(e.width),height:o(e.height),layers:r,elements:(Array.isArray(e.elements)?e.elements:[]).map(l=>this.element(l,n)).filter(l=>l!==null),timeline:this.timeline(e.timeline),button:N(e.button)??null,params:Sn(e.params)}}hover(e){return E(e)?(this.fields(e,"hover"),{stroke:bt(e.stroke)??null,fill:bt(e.fill)??null,opacity:A(e.opacity)??null}):null}ease(e){let n=L(e);return n===void 0?null:Ui.includes(n)?n:(this.warn(`Unknown ease "${n}", played linear`),null)}keyframe(e){if(!E(e))return null;this.fields(e,"keyframe");let n=A(e.t);if(n===void 0)return null;let i={t:n};for(let a of["x","y","width","height","rotation","strokeWidth","reveal","opacity"]){let u=A(e[a]);u!==void 0&&(i[a]=u)}let o=bt(e.stroke),r=bt(e.fill),l=N(e.visible),s=this.ease(e.ease);return o&&(i.stroke=o),r&&(i.fill=r),l!==void 0&&(i.visible=l),s&&(i.ease=s),i}track(e){if(!E(e))return null;this.fields(e,"track");let n=j(e.element);if(!n)return null;let i=(Array.isArray(e.keys)?e.keys:[]).map(l=>this.keyframe(l)).filter(l=>l!==null&&l.t>=0&&l.t<=Tt);ae(i,l=>l.t);let o=Array.isArray(e.follow)?e.follow.filter(E).flatMap(l=>{let s=j(l.path),a=A(l.start),u=A(l.end);return!s||a===void 0||u===void 0||a<0||u>Tt?[]:[{path:s,start:a,end:u,ease:this.ease(l.ease),reverse:N(l.reverse)??null,orient:N(l.orient)??null,laps:A(l.laps)??null}]}):null,r=Array.isArray(e.repeats)?e.repeats.filter(E).flatMap(l=>{let s=A(l.start),a=A(l.end);if(s===void 0||a===void 0)return[];let u=A(l.count),c={start:s,end:a,count:u===void 0?null:Math.trunc(u)};return ce(c)?[c]:[]}):null;return{element:n,keys:i,boil:N(e.boil)??null,follow:o,repeats:r,march:Ln(A(e.march))}}timeline(e){if(!E(e))return null;this.fields(e,"timeline");let n=A(e.boil),i=Array.isArray(e.camera)?e.camera.filter(E).flatMap(l=>{let s=A(l.t),a=A(l.x),u=A(l.y),c=A(l.width),h=A(l.height);return s===void 0||a===void 0||u===void 0||c===void 0||h===void 0?[]:c>1&&h>1&&s>=0?[{t:s,x:a,y:u,width:c,height:h,ease:this.ease(l.ease)}]:[]}):null;i&&ae(i,l=>l.t);let o=Array.isArray(e.markers)?e.markers.filter(E).flatMap(l=>{let s=A(l.t);return s!==void 0&&s>=0?[{t:s,name:L(l.name)??"",loop:N(l.loop)??null}]:[]}):null;o&&ae(o,l=>l.t);let r=A(e.poster);return{fps:St(A(e.fps)??12),duration:z(A(e.duration)??0),boil:n!==void 0&&Number.isInteger(n)&&n>0?Math.min(n,1e4):null,settle:N(e.settle)??null,poster:r===void 0?null:z(r),tracks:(Array.isArray(e.tracks)?e.tracks:[]).map(l=>this.track(l)).filter(l=>l!==null),camera:i,markers:o}}page(e,n,i){if(!E(e))throw new rt(`Page ${i} is not an object`);this.fields(e,"page");let o=(Array.isArray(e.layers)?e.layers:[]).filter(E).flatMap(r=>{let l=j(r.id);return l?[{id:l,name:L(r.name)??"",visible:N(r.visible)??!0,locked:N(r.locked)??!1}]:[]});return o.length===0&&(this.warn(`Page ${i} has no layers`),o.push({id:"LAYER",name:"Layer 1",visible:!0,locked:!1})),{id:j(e.id)??`PAGE-${i}`,name:L(e.name)??`Page ${i}`,layers:o,elements:(Array.isArray(e.elements)?e.elements:[]).map(r=>this.element(r,n)).filter(r=>r!==null),theme:L(e.theme)??null,timeline:this.timeline(e.timeline),symbols:Array.isArray(e.symbols)?e.symbols.map(r=>this.symbol(r,n)).filter(r=>r!==null):null,variables:this.variables(e.variables)}}},ji=/^[A-Za-z0-9+/=\s]*$/;function ce(t){return Number.isFinite(t.start)&&Number.isFinite(t.end)&&t.start>=0&&t.end-t.start>.001&&t.end<=Tt&&(t.count===null||t.count>=1&&t.count<=1e4)}function ae(t,e){let n=t.map((i,o)=>[i,o]);n.sort((i,o)=>e(i[0])-e(o[0])||i[1]-o[1]);for(let i=0;i<t.length;i++)t[i]=n[i][0]}function zt(t){let e=t;if(typeof t=="string")try{e=JSON.parse(t)}catch(l){throw new rt(`Not JSON: ${l.message}`)}if(!E(e))throw new rt("Not a Dottie drawing");let n=A(e.version);if(n===void 0)throw new rt("Not a Dottie drawing (no version)");if(!Array.isArray(e.pages)||e.pages.length===0)throw new rt("A drawing needs at least one page");let i=new Ye;i.fields(e,"file"),n>Ce&&i.warn(`File version ${n} is newer than this player knows (${Ce}); some things may not show`);let o={};if(E(e.images))for(let[l,s]of Object.entries(e.images))E(s)&&typeof s.data=="string"&&(o[l]=i.picture(s.data,L(s.format)));let r=e.pages.map((l,s)=>i.page(l,o,s+1));if(new Set(r.map(l=>l.id)).size!==r.length)throw new rt("Two pages share an id");return{version:n,pages:r,warnings:i.warnings}}function Et(t){return .2126*t.r+.7152*t.g+.0722*t.b}function At(t,e){return t.r===e.r&&t.g===e.g&&t.b===e.b&&t.a===e.a}function Gt(t){return At(t,xt)||At(t,Cn)}function G(t){return{...t,style:{...t.style,stroke:{...t.style.stroke},fill:{...t.style.fill},textColor:t.style.textColor?{...t.style.textColor}:null},connector:t.connector?{...t.connector,start:{...t.connector.start},end:{...t.connector.end},waypoints:t.connector.waypoints?.map(e=>({...e}))??null}:null}}function st(t){if(t.layers.length<=1)return t.elements;let e=new Map;t.layers.forEach((i,o)=>{e.has(i.id)||e.set(i.id,o)});let n=t.layers.map(()=>[]);for(let i of t.elements)n[e.get(i.layerID)??0].push(i);return n.flat()}function Ji(t){let e=new Map;for(let n of t.elements)e.has(n.id)||e.set(n.id,n);return e}var Dn=.60205078125,Yn=.92822265625,On=.23583984375,wt={"Architects Daughter":{faces:{regular:{ascent:.986328125,descent:.4033203125,k:{},leading:0,w:{" ":400.39,_:686.52,"-":310.55,"\u2013":310.55,"\u2014":411.13,",":177.73,";":124.02,":":166.99,"!":134.77,"?":505.86,".":140.63,"\u2026":422.85,"\xB7":140.63,"'":162.11,"\u2018":162.11,"\u2019":162.11,'"':236.33,"\u201C":236.33,"\u201D":236.33,"(":297.85,")":351.56,"[":424.8,"]":541.02,"{":352.54,"}":478.52,"@":1042.97,"*":507.81,"/":455.08,"\\":501.95,"&":669.92,"#":637.7,"%":518.55,"\u2022":192.38,"`":171.88,"^":306.64,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":524.41,"\xD7":470.7,"<":475.59,"=":492.19,">":471.68,"|":145.51,"~":444.34,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556.64,0:630.86,1:127.93,2:572.27,3:508.79,4:680.66,5:708.01,6:626.95,7:615.23,8:648.44,9:569.34,a:508.79,A:640.63,b:561.52,B:710.94,c:632.81,C:708.01,d:512.7,D:648.44,e:541.02,E:591.8,\u00E9:541.02,f:593.75,F:692.38,g:515.63,G:692.38,h:495.12,H:605.47,i:151.37,I:151.37,j:177.73,J:529.3,k:614.26,K:605.47,l:157.23,L:692.38,m:778.32,M:827.15,n:500,N:626.95,o:562.5,O:669.92,p:556.64,P:637.7,q:513.67,Q:712.89,r:551.76,R:712.89,s:501.95,S:642.58,t:404.3,T:623.05,u:507.81,U:561.52,v:518.55,V:626.95,w:808.59,W:940.43,x:470.7,X:599.61,y:548.83,Y:534.18,z:495.12,Z:784.18}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},Caveat:{faces:{bold:{ascent:.9600067138671875,descent:.3000030517578125,k:{AC:-20,AE:-10,AG:-10,AH:-10,AI:10,Aj:10,AJ:10,AL:-10,AM:10,An:-10,AO:-20,AP:-10,Aq:-10,AQ:-20,Ar:-10,As:-10,AS:-35,AT:-50,Au:-10,AU:-20,av:-20,Av:-5,AV:-40,aw:-10,AW:-20,Ax:10,AX:-10,ay:-20,Ay:-10,AY:-65,Az:20,AZ:-10,ba:-10,bc:-10,BC:-20,bd:-10,Bf:10,BF:-20,Bg:10,bh:-5,Bi:10,BI:-10,bj:-5,Bj:10,BJ:-10,Bk:10,Bl:10,Bm:10,BP:-10,BR:-10,BS:-20,BT:-40,bu:-10,BU:-20,BV:-50,BW:-50,bx:-10,Bx:10,BX:-40,by:-10,BY:-65,Bz:40,BZ:-30,CA:-20,Cc:-5,CC:-10,Cd:-10,CE:-10,CG:-10,Cj:10,CJ:-10,CK:-10,cl:10,Cl:5,Cn:-5,CO:-10,CP:-10,CQ:-20,Cs:-10,CS:-10,Ct:10,CT:-20,Cu:-10,CU:-10,Cv:-20,CV:-20,cw:-10,Cw:-10,CW:-20,Cx:20,CX:-30,cy:-5,CY:-35,Cz:20,CZ:-40,DA:-10,Db:10,Dc:10,De:10,Df:20,DF:-10,Dg:10,Dh:10,Di:15,DI:-10,Dj:5,DJ:-10,Dk:10,Dl:10,Dm:20,DM:-5,dn:-10,Do:10,Dp:10,Dq:10,Dr:10,Ds:10,dt:10,Dt:20,DT:-40,du:-10,Dv:30,DV:-30,Dw:20,DW:-10,Dx:20,DX:-50,Dy:10,DY:-50,Dz:30,DZ:-30,EC:-10,ED:-10,EG:-10,EJ:-10,el:10,EO:-10,EQ:-20,ES:-40,ET:-10,EU:-20,Ev:-10,EV:-25,Ew:-10,EW:-30,Ex:10,EX:-40,Ey:-10,EY:-50,Ez:20,EZ:-20,fa:-10,Fa:-30,FA:-40,Fc:-20,FC:-10,Fd:-20,FD:20,Fe:-15,ff:10,Ff:10,FF:20,Fg:-10,fh:10,Fh:20,fi:10,Fi:10,FI:10,fj:10,Fj:10,FJ:20,Fk:10,fl:20,Fl:20,FL:10,fm:10,FM:-10,Fn:-20,FN:10,Fo:-20,FO:10,Fp:-10,FP:-10,Fq:-10,FQ:10,Fr:-10,FS:10,ft:40,Ft:10,FT:-30,Fu:-10,fv:10,Fv:10,FV:10,FW:10,fy:10,FY:10,Fz:10,FZ:-10,GA:-10,Gf:10,Gh:10,gi:10,Gi:10,GI:-10,Gj:10,GJ:-10,Gk:10,Gl:10,Gm:10,GM:-10,GN:10,GP:-20,GS:-10,Gt:10,GU:-10,Gv:10,GV:-10,GW:-20,Gx:10,GX:-40,gy:10,GY:-40,Gz:10,GZ:-20,Hb:10,hf:-10,Hf:10,hg:-20,Hh:10,Hi:10,Hj:20,Hk:10,Hl:10,Hm:10,hq:-10,hs:-10,Ht:20,hv:-30,Hv:10,hw:-15,Hx:20,hy:-30,Hy:10,Hz:20,Ia:-10,IA:10,Ib:10,Ic:-10,Id:-10,ID:30,Ie:-10,if:10,If:20,IF:40,Ig:-10,Ih:30,Ii:20,II:30,Ij:30,IJ:40,Ik:20,IK:10,Il:20,IL:10,IM:30,In:-10,IN:20,Io:-10,Ip:10,Iq:-20,Ir:-10,IR:10,Is:-10,It:10,Iu:-10,IU:10,iv:10,Iv:-20,IV:30,Iw:-25,IW:20,Ix:10,IX:10,Iy:-10,IY:30,Iz:20,IZ:20,Ja:-10,Jb:10,Jc:-10,Jd:-10,Je:-10,Jf:10,Jh:10,Ji:10,JI:-10,Jj:20,JJ:10,Jk:10,Jl:20,Jn:-10,Jo:-10,JO:-10,Jp:10,JP:-10,Jq:-10,JQ:-10,JR:-10,jt:10,Jt:20,JT:10,ju:-10,Ju:-20,JU:-10,jx:10,JX:-25,jy:10,JY:-20,jz:10,Jz:10,JZ:-20,Ka:-40,kc:20,Kc:-40,KC:-10,Kd:-40,KD:10,ke:10,Ke:-40,kf:20,Kf:10,KF:20,Kg:-40,KG:-10,kh:10,Kh:10,ki:10,Ki:10,Kj:40,KJ:20,kk:20,Kk:10,kl:20,Kl:10,km:10,KM:20,Kn:-40,ko:10,Ko:-50,KO:-10,Kp:10,Kq:-50,kr:10,Ks:-40,kt:10,Kt:10,KT:-10,ku:10,Ku:-60,kv:10,Kv:-30,Kw:-40,Kx:-10,KX:-10,ky:-10,Ky:-30,kz:10,Lb:-10,LC:-20,LE:-20,Lf:10,Lg:-10,LG:-20,Lh:-10,Li:10,LI:-40,Lj:20,Lk:10,ll:10,Ll:10,LL:-20,Ln:-20,LO:-25,Lp:10,Lq:-40,LQ:-30,Ls:-10,LS:-65,lt:10,Lt:-10,LT:-70,Lu:-40,LU:-45,Lv:-60,LV:-70,Lw:-40,LW:-40,Lx:10,Ly:-20,LY:-90,lz:20,Lz:30,LZ:-10,Mb:10,md:10,Mf:10,Mh:10,Mi:10,MJ:10,Mk:10,Ml:10,mo:20,Mp:10,MP:-10,Mq:-10,MQ:-10,MS:-20,Mt:20,MT:-30,Mu:-10,MU:-20,mv:-15,Mv:10,MV:-20,mw:-10,MW:-30,Mx:10,MX:-10,my:-10,My:-10,MY:-50,Mz:10,MZ:-10,nb:-15,Nb:10,Ne:10,Nf:10,Ng:10,Nh:10,Ni:20,Nj:20,Nk:20,Nl:20,Nm:10,Nq:10,ns:-5,nt:-10,Nt:20,nu:-10,nv:-20,Nv:30,nw:-20,NW:-10,Nx:30,NX:-20,ny:-20,Ny:10,NY:-20,Nz:40,NZ:-10,OA:-10,OD:-10,Of:20,Og:20,Oh:10,Oi:20,OI:-10,oj:-5,Oj:20,Ok:10,Ol:20,OL:10,Om:20,Oo:10,Op:10,Oq:10,OQ:10,Os:10,Ot:20,OT:-10,ou:-10,ov:5,Ov:30,OV:-10,ow:-10,Ow:10,OW:-10,Ox:30,OX:-40,oy:-10,Oy:20,OY:-40,Oz:30,OZ:-20,Pa:-40,PA:-40,Pc:-30,Pd:-40,PD:-10,Pe:-20,Pf:10,Pg:-10,Ph:10,Pi:10,PI:-10,Pj:20,PJ:-10,Pk:10,Pl:10,Pm:10,PM:-30,pn:-10,Pn:-10,PN:-10,Po:-30,Pq:-30,Ps:-20,PS:10,Pt:20,pu:-10,Pu:-30,Pv:10,Px:10,PX:-35,py:-10,PY:-20,Pz:10,PZ:-50,Qb:10,Qf:20,Qg:20,qh:-10,Qh:10,Qi:20,qj:10,Qj:90,QJ:80,Qk:10,Ql:20,Qm:20,qn:-10,qo:-10,Qp:20,Qt:30,QT:-10,qu:-10,Qv:20,QV:-10,QW:-10,Qx:20,QX:-20,Qy:50,QY:-30,Qz:40,QZ:-10,ra:-5,Ra:-10,RA:-25,RB:-10,Rc:-10,RC:-20,Rd:-10,RD:10,Re:-10,RE:-20,Rf:20,RF:10,Rg:-10,RG:-10,ri:5,RI:-10,Rj:30,RJ:30,RL:-10,RM:-20,Rn:-10,RN:10,Ro:-10,RO:-10,Rp:20,Rq:-30,RQ:-10,Rr:-10,Rs:-10,Rt:10,RT:-10,Ru:-30,RU:-20,rv:20,RV:-10,Rw:-10,RW:-10,Rx:10,RX:-20,Ry:10,RY:-30,Rz:20,RZ:-45,Sa:-10,Sb:10,Sc:-20,Sd:-25,SD:20,Se:-20,SE:-10,sf:10,Sf:20,SF:30,Sg:-20,Sh:20,Si:20,SI:10,Sj:30,SJ:30,Sk:10,Sl:20,SL:20,Sn:-20,SN:10,So:-10,SO:10,Sq:-20,Sr:-10,Ss:-10,st:10,St:20,Su:-20,sv:20,Sv:-50,SV:20,Sw:-30,SW:10,sx:15,Sx:10,Sy:-15,SY:10,sz:20,Sz:20,SZ:-10,Ta:-90,TA:-50,Tc:-80,TC:-10,Td:-110,TD:10,Te:-90,TE:-10,Tf:20,TF:30,Tg:-80,TG:-10,Th:20,ti:5,TI:10,Tj:20,Tk:10,Tl:20,Tm:-50,TM:-30,Tn:-90,To:-90,Tp:-80,Tq:-120,Tr:-80,Ts:-80,Tt:10,TT:-30,Tu:-90,tv:10,Tv:-70,TV:10,Tw:-100,tx:20,Tx:-60,TX:-10,Ty:-50,tz:30,Tz:-40,TZ:-10,ub:-10,Ub:20,UE:10,uf:10,Uf:30,UF:10,Ug:10,Uh:30,ui:10,Ui:30,Uj:40,uk:10,Uk:20,ul:10,Ul:30,Um:30,Up:10,UQ:30,Ur:10,UR:10,Us:10,Ut:50,UT:20,Uu:10,UU:10,Uv:50,UV:10,Uw:10,ux:10,Ux:30,UX:-10,Uy:10,UY:-10,uz:30,Uz:30,UZ:-10,va:-10,Va:-50,VA:-55,Vc:-30,VC:-20,Vd:-30,Ve:-30,VE:-20,vf:10,VF:10,Vg:-30,VG:-10,vi:10,Vm:-10,VM:-30,Vn:-30,VN:-10,Vo:-30,VO:-10,Vp:-20,VP:-20,Vq:-30,VQ:-10,Vr:-20,Vs:-30,vt:10,VT:20,Vu:-30,VU:-10,vv:20,Vw:-30,vx:20,VX:-20,vy:10,VY:-10,vz:10,VZ:-20,WA:-20,Wb:20,Wd:-10,WD:20,We:10,Wf:30,WF:20,Wh:30,wi:10,Wi:30,WI:10,Wj:40,WJ:20,Wk:20,Wl:40,WL:10,Wm:10,WM:-10,WS:10,Wt:40,WT:30,Wv:30,WV:10,wx:10,Wx:20,WX:-10,Wy:20,WY:10,Wz:30,WZ:-10,XA:-25,XC:-20,Xe:-10,XE:-10,xf:10,Xf:10,Xg:-10,XG:-20,xi:10,Xi:10,XI:-10,Xj:30,xk:10,Xk:10,xl:10,Xl:20,Xm:10,XM:-25,xn:-10,XN:-10,Xo:-10,XO:-20,xp:10,Xp:10,XP:-10,xq:-10,Xq:-40,XQ:-25,XS:-20,xu:-5,Xu:-30,XU:-20,xv:10,Xv:-20,Xw:-30,xx:15,Xx:10,XX:-30,xy:-10,Xy:-20,XY:-20,xz:10,Xz:30,ya:-10,Ya:-70,YA:-55,Yc:-60,YC:-30,yd:-10,Yd:-60,YD:10,ye:10,Ye:-60,YE:-30,YF:20,Yg:-60,YG:-30,YH:-10,YI:10,YJ:10,Ym:-30,YM:-35,yn:-10,Yn:-60,Yo:-60,YO:-20,Yp:-50,YP:-10,Yq:-60,YQ:-10,Yr:-60,YR:-10,Ys:-60,YS:-10,yt:10,YT:-15,yu:-10,Yu:-60,yv:10,Yv:-20,Yw:-50,yx:10,Yx:-50,YX:-30,Yy:-40,YY:-10,Yz:-30,YZ:-40,Za:-20,ZA:-20,Zb:-10,ZB:-10,Zc:-10,ZC:-20,Zd:-30,ZD:-10,Ze:-40,ZE:-20,zf:10,Zg:-40,ZG:-20,zi:10,Zj:10,Zk:10,ZL:-10,Zm:-10,Zn:-50,Zo:-30,ZO:-30,Zp:-10,ZP:-10,Zq:-50,ZQ:-10,Zr:-40,ZR:-10,Zs:-30,ZS:-20,zt:10,Zt:-10,Zu:-30,ZU:-10,zv:10,Zv:-20,Zw:-40,ZW:-10,zx:10,Zx:-10,ZX:-10,Zy:-30,ZY:-20,zz:20,Zz:10,ZZ:-10},leading:0,w:{" ":242,_:446,"-":326,"\u2013":446,"\u2014":566,",":198,";":198,":":198,"!":210,"?":374,".":198,"\u2026":594,"\xB7":187,"'":117,"\u2018":117,"\u2019":117,'"':237,"\u201C":267,"\u201D":267,"(":330,")":330,"[":330,"]":330,"{":330,"}":330,"@":643,"*":363,"/":330,"\\":330,"&":564,"#":559,"%":600,"\u2022":187,"`":353,"^":446,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":446,"\xD7":446,"<":446,"=":446,">":446,"|":330,"~":446,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:450,0:450,1:450,2:450,3:450,4:450,5:434,6:471,7:446,8:450,9:438,a:446,A:511,b:444,B:523,c:364,C:477,d:402,D:587,e:334,E:534,\u00E9:325,f:300,F:466,g:364,G:494,h:473,H:574,i:196,I:409,j:213,J:315,k:374,K:508,l:178,L:426,m:569,M:729,n:459,N:619,o:362,O:505,p:378,P:468,q:377,Q:492,r:360,R:544,s:350,S:495,t:331,T:458,u:370,U:482,v:331,V:490,w:517,W:720,x:343,X:524,y:341,Y:504,z:315,Z:522}},regular:{ascent:.9600067138671875,descent:.3000030517578125,k:{AC:-20,AE:-10,AG:-10,AH:-10,AI:10,Aj:10,AJ:10,AL:-10,AM:10,An:-10,AO:-20,AP:-10,Aq:-10,AQ:-20,Ar:-10,As:-10,AS:-35,AT:-50,Au:-10,AU:-20,av:-20,Av:-5,AV:-40,aw:-10,AW:-20,Ax:10,AX:-10,ay:-20,Ay:-10,AY:-65,Az:20,AZ:-10,ba:-10,bc:-10,BC:-20,bd:-10,Bf:10,BF:-20,Bg:10,bh:-5,Bi:10,BI:-10,bj:-5,Bj:10,BJ:-10,Bk:10,Bl:10,Bm:10,BP:-10,BR:-10,BS:-20,BT:-40,bu:-10,BU:-20,BV:-50,BW:-50,bx:-10,Bx:10,BX:-40,by:-10,BY:-65,Bz:40,BZ:-30,CA:-20,Cc:-5,CC:-10,Cd:-10,CE:-10,CG:-10,Cj:10,CJ:-10,CK:-10,cl:10,Cl:5,Cn:-5,CO:-10,CP:-10,CQ:-20,Cs:-10,CS:-10,Ct:10,CT:-20,Cu:-10,CU:-10,Cv:-20,CV:-20,cw:-10,Cw:-10,CW:-20,Cx:20,CX:-30,cy:-5,CY:-35,Cz:20,CZ:-40,DA:-10,Db:10,Dc:10,De:10,Df:20,DF:-10,Dg:10,Dh:10,Di:15,DI:-10,Dj:5,DJ:-10,Dk:10,Dl:10,Dm:20,DM:-5,dn:-10,Do:10,Dp:10,Dq:10,Dr:10,Ds:10,dt:10,Dt:20,DT:-40,du:-10,Dv:30,DV:-30,Dw:20,DW:-10,Dx:20,DX:-50,Dy:10,DY:-50,Dz:30,DZ:-30,EC:-10,ED:-10,EG:-10,EJ:-10,el:10,EO:-10,EQ:-20,ES:-40,ET:-10,EU:-20,Ev:-10,EV:-25,Ew:-10,EW:-30,Ex:10,EX:-40,Ey:-10,EY:-50,Ez:20,EZ:-20,fa:-10,Fa:-30,FA:-40,Fc:-20,FC:-10,Fd:-20,FD:20,Fe:-15,ff:10,Ff:10,FF:20,Fg:-10,fh:10,Fh:20,fi:10,Fi:10,FI:10,fj:10,Fj:10,FJ:20,Fk:10,fl:20,Fl:20,FL:10,fm:10,FM:-10,Fn:-20,FN:10,Fo:-20,FO:10,Fp:-10,FP:-10,Fq:-10,FQ:10,Fr:-10,FS:10,ft:40,Ft:10,FT:-30,Fu:-10,fv:10,Fv:10,FV:10,FW:10,fy:10,FY:10,Fz:10,FZ:-10,GA:-10,Gf:10,Gh:10,gi:10,Gi:10,GI:-10,Gj:10,GJ:-10,Gk:10,Gl:10,Gm:10,GM:-10,GN:10,GP:-20,GS:-10,Gt:10,GU:-10,Gv:10,GV:-10,GW:-20,Gx:10,GX:-40,gy:10,GY:-40,Gz:10,GZ:-20,Hb:10,hf:-10,Hf:10,hg:-20,Hh:10,Hi:10,Hj:20,Hk:10,Hl:10,Hm:10,hq:-10,hs:-10,Ht:20,hv:-30,Hv:10,hw:-15,Hx:20,hy:-30,Hy:10,Hz:20,Ia:-10,IA:10,Ib:10,Ic:-10,Id:-10,ID:30,Ie:-10,if:10,If:20,IF:40,Ig:-10,Ih:30,Ii:20,II:30,Ij:30,IJ:40,Ik:20,IK:10,Il:20,IL:10,IM:30,In:-10,IN:20,Io:-10,Ip:10,Iq:-20,Ir:-10,IR:10,Is:-10,It:10,Iu:-10,IU:10,iv:10,Iv:-20,IV:30,Iw:-25,IW:20,Ix:10,IX:10,Iy:-10,IY:30,Iz:20,IZ:20,Ja:-10,Jb:10,Jc:-10,Jd:-10,Je:-10,Jf:10,Jh:10,Ji:10,JI:-10,Jj:20,JJ:10,Jk:10,Jl:20,Jn:-10,Jo:-10,JO:-10,Jp:10,JP:-10,Jq:-10,JQ:-10,JR:-10,jt:10,Jt:20,JT:10,ju:-10,Ju:-20,JU:-10,jx:10,JX:-25,jy:10,JY:-20,jz:10,Jz:10,JZ:-20,Ka:-40,kc:20,Kc:-40,KC:-10,Kd:-40,KD:10,ke:10,Ke:-40,kf:20,Kf:10,KF:20,Kg:-40,KG:-10,kh:10,Kh:10,ki:10,Ki:10,Kj:40,KJ:20,kk:20,Kk:10,kl:20,Kl:10,km:10,KM:20,Kn:-40,ko:10,Ko:-50,KO:-10,Kp:10,Kq:-50,kr:10,Ks:-40,kt:10,Kt:10,KT:-10,ku:10,Ku:-60,kv:10,Kv:-30,Kw:-40,Kx:-10,KX:-10,ky:-10,Ky:-30,kz:10,Lb:-10,LC:-20,LE:-20,Lf:10,Lg:-10,LG:-20,Lh:-10,Li:10,LI:-40,Lj:20,Lk:10,ll:10,Ll:10,LL:-20,Ln:-20,LO:-25,Lp:10,Lq:-40,LQ:-30,Ls:-10,LS:-65,lt:10,Lt:-10,LT:-70,Lu:-40,LU:-45,Lv:-60,LV:-70,Lw:-40,LW:-40,Lx:10,Ly:-20,LY:-90,lz:20,Lz:30,LZ:-10,Mb:10,md:10,Mf:10,Mh:10,Mi:10,MJ:10,Mk:10,Ml:10,mo:20,Mp:10,MP:-10,Mq:-10,MQ:-10,MS:-20,Mt:20,MT:-30,Mu:-10,MU:-20,mv:-15,Mv:10,MV:-20,mw:-10,MW:-30,Mx:10,MX:-10,my:-10,My:-10,MY:-50,Mz:10,MZ:-10,nb:-15,Nb:10,Ne:10,Nf:10,Ng:10,Nh:10,Ni:20,Nj:20,Nk:20,Nl:20,Nm:10,Nq:10,ns:-5,nt:-10,Nt:20,nu:-10,nv:-20,Nv:30,nw:-20,NW:-10,Nx:30,NX:-20,ny:-20,Ny:10,NY:-20,Nz:40,NZ:-10,OA:-10,OD:-10,Of:20,Og:20,Oh:10,Oi:20,OI:-10,oj:-5,Oj:20,Ok:10,Ol:20,OL:10,Om:20,Oo:10,Op:10,Oq:10,OQ:10,Os:10,Ot:20,OT:-10,ou:-10,ov:5,Ov:30,OV:-10,ow:-10,Ow:10,OW:-10,Ox:30,OX:-40,oy:-10,Oy:20,OY:-40,Oz:30,OZ:-20,Pa:-40,PA:-40,Pc:-30,Pd:-40,PD:-10,Pe:-20,Pf:10,Pg:-10,Ph:10,Pi:10,PI:-10,Pj:20,PJ:-10,Pk:10,Pl:10,Pm:10,PM:-30,pn:-10,Pn:-10,PN:-10,Po:-30,Pq:-30,Ps:-20,PS:10,Pt:20,pu:-10,Pu:-30,Pv:10,Px:10,PX:-35,py:-10,PY:-20,Pz:10,PZ:-50,Qb:10,Qf:20,Qg:20,qh:-10,Qh:10,Qi:20,qj:10,Qj:90,QJ:80,Qk:10,Ql:20,Qm:20,qn:-10,qo:-10,Qp:20,Qt:30,QT:-10,qu:-10,Qv:20,QV:-10,QW:-10,Qx:20,QX:-20,Qy:50,QY:-30,Qz:40,QZ:-10,ra:-5,Ra:-10,RA:-25,RB:-10,Rc:-10,RC:-20,Rd:-10,RD:10,Re:-10,RE:-20,Rf:20,RF:10,Rg:-10,RG:-10,ri:5,RI:-10,Rj:30,RJ:30,RL:-10,RM:-20,Rn:-10,RN:10,Ro:-10,RO:-10,Rp:20,Rq:-30,RQ:-10,Rr:-10,Rs:-10,Rt:10,RT:-10,Ru:-30,RU:-20,rv:20,RV:-10,Rw:-10,RW:-10,Rx:10,RX:-20,Ry:10,RY:-30,Rz:20,RZ:-45,Sa:-10,Sb:10,Sc:-20,Sd:-25,SD:20,Se:-20,SE:-10,sf:10,Sf:20,SF:30,Sg:-20,Sh:20,Si:20,SI:10,Sj:30,SJ:30,Sk:10,Sl:20,SL:20,Sn:-20,SN:10,So:-10,SO:10,Sq:-20,Sr:-10,Ss:-10,st:10,St:20,Su:-20,sv:20,Sv:-50,SV:20,Sw:-30,SW:10,sx:15,Sx:10,Sy:-15,SY:10,sz:20,Sz:20,SZ:-10,Ta:-90,TA:-50,Tc:-80,TC:-10,Td:-110,TD:10,Te:-90,TE:-10,Tf:20,TF:30,Tg:-80,TG:-10,Th:20,ti:5,TI:10,Tj:20,Tk:10,Tl:20,Tm:-50,TM:-30,Tn:-90,To:-90,Tp:-80,Tq:-120,Tr:-80,Ts:-80,Tt:10,TT:-30,Tu:-90,tv:10,Tv:-70,TV:10,Tw:-100,tx:20,Tx:-60,TX:-10,Ty:-50,tz:30,Tz:-40,TZ:-10,ub:-10,Ub:20,UE:10,uf:10,Uf:30,UF:10,Ug:10,Uh:30,ui:10,Ui:30,Uj:40,uk:10,Uk:20,ul:10,Ul:30,Um:30,Up:10,UQ:30,Ur:10,UR:10,Us:10,Ut:50,UT:20,Uu:10,UU:10,Uv:50,UV:10,Uw:10,ux:10,Ux:30,UX:-10,Uy:10,UY:-10,uz:30,Uz:30,UZ:-10,va:-10,Va:-50,VA:-55,Vc:-30,VC:-20,Vd:-30,Ve:-30,VE:-20,vf:10,VF:10,Vg:-30,VG:-10,vi:10,Vm:-10,VM:-30,Vn:-30,VN:-10,Vo:-30,VO:-10,Vp:-20,VP:-20,Vq:-30,VQ:-10,Vr:-20,Vs:-30,vt:10,VT:20,Vu:-30,VU:-10,vv:20,Vw:-30,vx:20,VX:-20,vy:10,VY:-10,vz:10,VZ:-20,WA:-20,Wb:20,Wd:-10,WD:20,We:10,Wf:30,WF:20,Wh:30,wi:10,Wi:30,WI:10,Wj:40,WJ:20,Wk:20,Wl:40,WL:10,Wm:10,WM:-10,WS:10,Wt:40,WT:30,Wv:30,WV:10,wx:10,Wx:20,WX:-10,Wy:20,WY:10,Wz:30,WZ:-10,XA:-25,XC:-20,Xe:-10,XE:-10,xf:10,Xf:10,Xg:-10,XG:-20,xi:10,Xi:10,XI:-10,Xj:30,xk:10,Xk:10,xl:10,Xl:20,Xm:10,XM:-25,xn:-10,XN:-10,Xo:-10,XO:-20,xp:10,Xp:10,XP:-10,xq:-10,Xq:-40,XQ:-25,XS:-20,xu:-5,Xu:-30,XU:-20,xv:10,Xv:-20,Xw:-30,xx:15,Xx:10,XX:-30,xy:-10,Xy:-20,XY:-20,xz:10,Xz:30,ya:-10,Ya:-70,YA:-55,Yc:-60,YC:-30,yd:-10,Yd:-60,YD:10,ye:10,Ye:-60,YE:-30,YF:20,Yg:-60,YG:-30,YH:-10,YI:10,YJ:10,Ym:-30,YM:-35,yn:-10,Yn:-60,Yo:-60,YO:-20,Yp:-50,YP:-10,Yq:-60,YQ:-10,Yr:-60,YR:-10,Ys:-60,YS:-10,yt:10,YT:-15,yu:-10,Yu:-60,yv:10,Yv:-20,Yw:-50,yx:10,Yx:-50,YX:-30,Yy:-40,YY:-10,Yz:-30,YZ:-40,Za:-20,ZA:-20,Zb:-10,ZB:-10,Zc:-10,ZC:-20,Zd:-30,ZD:-10,Ze:-40,ZE:-20,zf:10,Zg:-40,ZG:-20,zi:10,Zj:10,Zk:10,ZL:-10,Zm:-10,Zn:-50,Zo:-30,ZO:-30,Zp:-10,ZP:-10,Zq:-50,ZQ:-10,Zr:-40,ZR:-10,Zs:-30,ZS:-20,zt:10,Zt:-10,Zu:-30,ZU:-10,zv:10,Zv:-20,Zw:-40,ZW:-10,zx:10,Zx:-10,ZX:-10,Zy:-30,ZY:-20,zz:20,Zz:10,ZZ:-10},leading:0,w:{" ":242,_:446,"-":326,"\u2013":446,"\u2014":566,",":198,";":198,":":198,"!":210,"?":374,".":198,"\u2026":594,"\xB7":187,"'":117,"\u2018":117,"\u2019":117,'"':237,"\u201C":267,"\u201D":267,"(":330,")":330,"[":330,"]":330,"{":330,"}":330,"@":643,"*":363,"/":330,"\\":330,"&":564,"#":559,"%":600,"\u2022":187,"`":353,"^":446,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":446,"\xD7":446,"<":446,"=":446,">":446,"|":330,"~":446,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:450,0:450,1:450,2:450,3:450,4:450,5:450,6:450,7:450,8:450,9:450,a:437,A:502,b:435,B:520,c:355,C:472,d:393,D:578,e:325,E:529,\u00E9:325,f:291,F:454,g:355,G:487,h:464,H:563,i:187,I:400,j:204,J:306,k:365,K:498,l:169,L:426,m:560,M:720,n:450,N:599,o:353,O:496,p:378,P:464,q:377,Q:502,r:360,R:537,s:341,S:486,t:331,T:458,u:370,U:482,v:331,V:490,w:517,W:720,x:343,X:524,y:341,Y:504,z:315,Z:522}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},"Helvetica Neue":{faces:{bold:{ascent:.975006103515625,descent:.2169952392578125,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-30,fi:20,fl:20,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0290069580078125,w:{" ":278,_:500,"-":407,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":278,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':463,"\u201C":463,"\u201D":463,"(":296,")":296,"[":333,"]":333,"{":333,"}":333,"@":800,"*":407,"/":371,"\\":371,"&":685,"#":556,"%":1e3,"\u2022":350,"`":259,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":223,"~":600,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:574,A:685,b:611,B:704,c:574,C:741,d:611,D:741,e:574,E:648,\u00E9:574,f:333,F:593,g:611,G:759,h:593,H:741,i:258,I:295,j:278,J:556,k:574,K:722,l:258,L:593,m:906,M:907,n:593,N:741,o:611,O:778,p:611,P:667,q:611,Q:778,r:389,R:722,s:537,S:649,t:352,T:611,u:593,U:741,v:520,V:630,w:814,W:944,x:537,X:667,y:519,Y:667,z:519,Z:648}},boldItalic:{ascent:.975006103515625,descent:.2169952392578125,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-68,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0290069580078125,w:{" ":278,_:500,"-":407,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":296,"?":574,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':481,"\u201C":481,"\u201D":481,"(":296,")":296,"[":333,"]":333,"{":333,"}":333,"@":800,"*":407,"/":389,"\\":389,"&":685,"#":556,"%":963,"\u2022":350,"`":259,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:574,A:685,b:611,B:722,c:556,C:741,d:611,D:741,e:574,E:667,\u00E9:574,f:352,F:593,g:611,G:759,h:611,H:741,i:259,I:296,j:259,J:556,k:556,K:722,l:259,L:574,m:907,M:907,n:611,N:741,o:593,O:778,p:611,P:667,q:611,Q:778,r:389,R:722,s:519,S:648,t:370,T:611,u:611,U:741,v:519,V:630,w:815,W:944,x:519,X:667,y:519,Y:648,z:500,Z:648}},italic:{ascent:.957000732421875,descent:.2129974365234375,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-15,fi:1,fl:1,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0279998779296875,w:{" ":278,_:500,"-":389,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":259,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':426,"\u201C":426,"\u201D":426,"(":259,")":259,"[":259,"]":259,"{":333,"}":333,"@":800,"*":352,"/":333,"\\":333,"&":630,"#":556,"%":926,"\u2022":500,"`":222,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:519,A:667,b:593,B:685,c:537,C:722,d:593,D:704,e:537,E:611,\u00E9:537,f:296,F:574,g:574,G:759,h:556,H:722,i:222,I:259,j:222,J:519,k:481,K:667,l:222,L:556,m:852,M:870,n:556,N:722,o:574,O:759,p:593,P:648,q:593,Q:759,r:333,R:685,s:481,S:648,t:315,T:574,u:556,U:722,v:481,V:611,w:759,W:926,x:481,X:611,y:481,Y:611,z:444,Z:611}},regular:{ascent:.951995849609375,descent:.2129974365234375,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-15,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0279998779296875,w:{" ":278,_:500,"-":389,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":259,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':426,"\u201C":426,"\u201D":426,"(":259,")":259,"[":259,"]":259,"{":333,"}":333,"@":800,"*":352,"/":333,"\\":333,"&":630,"#":556,"%":1e3,"\u2022":350,"`":222,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:537,A:648,b:593,B:685,c:537,C:722,d:593,D:704,e:537,E:611,\u00E9:537,f:296,F:574,g:574,G:759,h:556,H:722,i:222,I:259,j:222,J:519,k:519,K:667,l:222,L:556,m:853,M:871,n:556,N:722,o:574,O:760,p:593,P:648,q:593,Q:760,r:333,R:685,s:500,S:648,t:315,T:574,u:556,U:722,v:500,V:611,w:758,W:926,x:518,X:611,y:500,Y:648,z:480,Z:611}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},"Patrick Hand":{faces:{regular:{ascent:1.0420074462890625,descent:.3119964599609375,k:{},leading:0,w:{" ":230,_:571,"-":404,"\u2013":420,"\u2014":648,",":202,";":232,":":232,"!":247,"?":368,".":214,"\u2026":571,"\xB7":200,"'":164,"\u2018":190,"\u2019":220,'"':303,"\u201C":315,"\u201D":303,"(":334,")":364,"[":303,"]":296,"{":339,"}":328,"@":550,"*":404,"/":423,"\\":420,"&":530,"#":457,"%":643,"\u2022":352,"`":220,"^":370,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":480,"\xD7":490,"<":396,"=":572,">":400,"|":176,"~":529,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:507,0:448,1:363,2:468,3:448,4:375,5:423,6:399,7:495,8:433,9:367,a:392,A:488,b:412,B:507,c:388,C:548,d:390,D:475,e:398,E:442,\u00E9:398,f:359,F:375,g:445,G:480,h:420,H:468,i:224,I:235,j:235,J:370,k:415,K:523,l:266,L:372,m:680,M:595,n:452,N:532,o:403,O:556,p:428,P:481,q:463,Q:655,r:385,R:454,s:385,S:459,t:344,T:468,u:400,U:550,v:400,V:562,w:463,W:616,x:448,X:601,y:423,Y:442,z:428,Z:507}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}}};var ue="Helvetica Neue",Ve="Helvetica Neue, Helvetica, Arial, sans-serif",Bt=Object.keys(wt).filter(t=>t!==ue).sort();function Nt(t){if(!t)return null;let e=t.toLowerCase();return Bt.find(n=>n.toLowerCase()===e)??null}function he(t){return wt[Nt(t)??ue]}function Zt(t,e,n){let i=e?n?"boldItalic":"bold":n?"italic":"regular";return t.faces[i]?i:"regular"}function fe(t){if(!t)return Ve;let e=[...Nt(t)??t].filter(n=>!`"'<>&;{}\\`.includes(n)).join("");return e===""?Ve:`${/^[\p{L}\p{N} -]+$/u.test(e)?e:`'${e}'`}, ${Ve}`}function Vn(t,e,n="regular",i){let o=he(i),r=o.faces[n]??o.faces.regular,l=r.w.n,s=0,a="";for(let u of t)s+=r.w[u]??l,a&&(s+=r.k[a+u]??0),a=u;return s*e/1e3}function Hi(t,e){let n=he(e).faces.regular,i=Math.round(n.ascent*t),o=Math.round(n.descent*t),r=Math.round(n.leading*t);return[i+Math.ceil(n.descent*t-1e-9),i+o+r]}function We(t,e){return t===" "?!0:(t==="/"||t==="-")&&e!==""&&!/[\d\s/-]/.test(e)}function Ki(t){let e=[...t],n=[],i="";return e.forEach((o,r)=>{i+=o;let l=e[r+1]??"";We(o,l)&&l!==" "&&(n.push(i),i="")}),(i||n.length===0)&&n.push(i),n}function qi(t,e,n,i="regular",o){let r=s=>Vn(s,e,i,o),l=[];for(let s of t.split(/\r\n|\n|\r|\u2028|\u2029/)){let a="";for(let u of Ki(s)){let c=a+u;for(a===""||r(c.trimEnd())<=n?a=c:(l.push(a),a=u);r(a.trimEnd())>n&&[...a.trimEnd()].length>1;){let h=[...a],m=h.length-1;for(;m>1&&r(h.slice(0,m).join(""))>n;)m--;l.push(h.slice(0,m).join("")),a=h.slice(m).join("")}}l.push(a)}return l}function Wn(t,e,n,i){if(t==="")return{width:0,height:0};let o=qi(t,e,n,"regular",i),r=Math.max(...o.map(a=>Vn(a.trimEnd(),e,"regular",i))),[l,s]=Hi(e,i);return{width:Math.ceil(r-1e-9),height:Math.ceil(l+s*(o.length-1)-1e-9)}}var Qi=["bold","boldItalic","italic","regular"];function ze(t,e){return`${t.toLowerCase().replaceAll(" ","-")}-${e}.woff2`}function Ge(t){return Qi.filter(e=>wt[t]?.faces[e]!==void 0)}function me(t){let e=new Set,n=i=>{for(let o of i){let r=Nt(o.style.font);r&&e.add(r)}};n(t.elements);for(let i of t.symbols??[])n(i.elements);return Bt.filter(i=>e.has(i))}function _i(){try{let t=typeof document>"u"?null:document.currentScript;if(t?.src)return new URL("fonts/",t.src).href;let e=void 0;return e?new URL("fonts/",e).href:null}catch{return null}}var $e=_i(),$n=new Set;function zn(t){$e=t.endsWith("/")?t:`${t}/`}function de(t,e={}){if(!(typeof document>"u"||typeof FontFace>"u"||!document.fonts))for(let n of t){let i=Nt(n);if(!i||$n.has(i))continue;let o=e[i];if(!(!o&&!$e)){$n.add(i);for(let r of Ge(i)){let l=o?.[r],s;if(l)s=Uint8Array.from(atob(l),u=>u.charCodeAt(0));else if(!o)s=`url(${JSON.stringify($e+ze(i,r))}) format("woff2")`;else continue;let a={weight:r.startsWith("bold")?"bold":"normal",style:r==="italic"||r==="boldItalic"?"italic":"normal"};document.fonts.add(new FontFace(i,s,a))}}}}var Gn=.5522847498307936,I=class t{constructor(){v(this,"segments",[])}get isEmpty(){return this.segments.length===0}moveTo(e){return this.segments.push({op:"M",p:e}),this}lineTo(e){return this.segments.push({op:"L",p:e}),this}quadTo(e,n){return this.segments.push({op:"Q",c:n,p:e}),this}curveTo(e,n,i){return this.segments.push({op:"C",c1:n,c2:i,p:e}),this}close(){return this.segments.push({op:"Z"}),this}addPath(e){return this.segments.push(...e.segments),this}addLines(e){return e.forEach((n,i)=>i===0?this.moveTo(n):this.lineTo(n)),this}static rect(e){return new t().addLines([{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height}]).close()}addEllipse(e){let n=e.x+e.width/2,i=e.y+e.height/2,o=e.width/2,r=e.height/2,l=o*Gn,s=r*Gn;return this.moveTo({x:n+o,y:i}),this.curveTo({x:n,y:i+r},{x:n+o,y:i+s},{x:n+l,y:i+r}),this.curveTo({x:n-o,y:i},{x:n-l,y:i+r},{x:n-o,y:i+s}),this.curveTo({x:n,y:i-r},{x:n-o,y:i-s},{x:n-l,y:i-r}),this.curveTo({x:n+o,y:i},{x:n+l,y:i-r},{x:n+o,y:i-s}),this.close()}static ellipse(e){return new t().addEllipse(e)}translated(e,n){let i=r=>({x:r.x+e,y:r.y+n}),o=new t;return o.segments=this.segments.map(r=>{switch(r.op){case"M":case"L":return{op:r.op,p:i(r.p)};case"Q":return{op:"Q",c:i(r.c),p:i(r.p)};case"C":return{op:"C",c1:i(r.c1),c2:i(r.c2),p:i(r.p)};case"Z":return r}}),o}contours(){let e=[],n=[],i={x:0,y:0};for(let o of this.segments){let r=n.length?n[n.length-1]:i;switch(o.op){case"M":n.length>1&&e.push(n),i=o.p,n=[o.p];break;case"L":n.push(o.p);break;case"Q":for(let l=1;l<=12;l++){let s=l/12,a=1-s;n.push({x:a*a*r.x+2*a*s*o.c.x+s*s*o.p.x,y:a*a*r.y+2*a*s*o.c.y+s*s*o.p.y})}break;case"C":for(let l=1;l<=16;l++){let s=l/16,a=1-s;n.push({x:a*a*a*r.x+3*a*a*s*o.c1.x+3*a*s*s*o.c2.x+s*s*s*o.p.x,y:a*a*a*r.y+3*a*a*s*o.c1.y+3*a*s*s*o.c2.y+s*s*s*o.p.y})}break;case"Z":n.push(i),n.length>1&&e.push(n),n=[i];break}}return n.length>1&&e.push(n),e}trimmed(e){let n=this.contours().map(r=>new It(r)),i=Math.min(Math.max(e,0),1)*n.reduce((r,l)=>r+l.length,0),o=new t;for(let r of n){if(!(i>0))break;o.moveTo(r.points[0]);for(let l=1;l<r.points.length;l++){let s=r.lengths[l]-r.lengths[l-1];if(s<=i){o.lineTo(r.points[l]),i-=s;continue}let a=r.points[l-1],u=r.points[l],c=i/s;o.lineTo({x:a.x+(u.x-a.x)*c,y:a.y+(u.y-a.y)*c}),i=0;break}}return o}data(){let e=[];for(let n of this.segments)switch(n.op){case"M":e.push(`M${R(n.p.x)} ${R(n.p.y)}`);break;case"L":e.push(`L${R(n.p.x)} ${R(n.p.y)}`);break;case"Q":e.push(`Q${R(n.c.x)} ${R(n.c.y)} ${R(n.p.x)} ${R(n.p.y)}`);break;case"C":e.push(`C${R(n.c1.x)} ${R(n.c1.y)} ${R(n.c2.x)} ${R(n.c2.y)} ${R(n.p.x)} ${R(n.p.y)}`);break;case"Z":e.push("Z");break}return e.join(" ")}};function Xt(t){return t<0?-Math.round(-t):Math.round(t)}function R(t){let e=Xt(t*100)/100;return Number.isInteger(e)?String(e===0?0:e):String(e)}var It=class{constructor(e){v(this,"points");v(this,"lengths");this.points=e;let n=0;this.lengths=e.map((i,o)=>(o>0&&(n+=Math.hypot(i.x-e[o-1].x,i.y-e[o-1].y)),n))}get length(){return this.lengths.length?this.lengths[this.lengths.length-1]:0}point(e){if(this.points.length<=1||!(this.length>0))return this.points[0]??{x:0,y:0};let n=Math.min(Math.max(e,0),1)*this.length,i=1;for(;i<this.lengths.length-1&&this.lengths[i]<n;)i++;let o=this.lengths[i]-this.lengths[i-1],r=o>0?(n-this.lengths[i-1])/o:0,l=this.points[i-1],s=this.points[i];return{x:l.x+(s.x-l.x)*r,y:l.y+(s.y-l.y)*r}}},q=t=>t.x+t.width/2,Q=t=>t.y+t.height/2,H=t=>t.x+t.width,K=t=>t.y+t.height;function Be(t,e){if(!t)return{...e};let n=Math.min(t.x,e.x),i=Math.min(t.y,e.y);return{x:n,y:i,width:Math.max(H(t),H(e))-n,height:Math.max(K(t),K(e))-i}}function Lt(t,e,n){return{x:t.x+e,y:t.y+n,width:t.width-2*e,height:t.height-2*n}}function mt(t,e,n){if(n===0)return t;let i=t.x-e.x,o=t.y-e.y;return{x:e.x+i*Math.cos(n)-o*Math.sin(n),y:e.y+i*Math.sin(n)+o*Math.cos(n)}}function Ne(t,e){let n=1-e;return{x:t[0].x*(n*n*n)+t[1].x*(3*e*n*n)+t[2].x*(3*e*e*n)+t[3].x*(e*e*e),y:t[0].y*(n*n*n)+t[1].y*(3*e*n*n)+t[2].y*(3*e*e*n)+t[3].y*(e*e*e)}}function Bn(t,e){let n=[t[0]];for(let i=0;i<Math.floor((t.length-1)/3);i++){let o=t.slice(3*i,3*i+4),r=0;for(let s=1;s<o.length;s++)r+=Math.hypot(o[s].x-o[s-1].x,o[s].y-o[s-1].y);let l=Math.min(400,Math.max(4,Math.ceil(r/Math.max(e,.5))));for(let s=1;s<=l;s++)n.push(Ne(o,s/l))}return n}var Y=t=>({x:t.x,y:t.y,width:t.width,height:t.height}),Z=t=>t.rotation??0,Ut=t=>({x:t.x+t.width/2,y:t.y+t.height/2}),tt=(t,e)=>mt(e,Ut(t),Z(t)),Nn=(t,e)=>mt(e,Ut(t),-Z(t));function Zn(t){let e=Y(t);if(Z(t)===0)return e;let n=[{x:e.x,y:e.y},{x:H(e),y:e.y},{x:H(e),y:K(e)},{x:e.x,y:K(e)}].map(s=>tt(t,s)),i=n.map(s=>s.x),o=n.map(s=>s.y),r=Math.min(...i),l=Math.min(...o);return{x:r,y:l,width:Math.max(...i)-r,height:Math.max(...o)-l}}function Xn(t,e){let n=t.style.textColor!==null&&Gt(t.style.textColor);if(!Gt(t.style.stroke)&&!n)return t;let i=G(t),r=(t.style.fillStyle==="solid"||t.style.fillStyle==="grid")&&t.style.fill.a>=.5&&Et(t.style.fill)>.5,l=Et(e)>.5&&r?xt:e;return Gt(t.style.stroke)&&(i.style.stroke={...l}),n&&(i.style.textColor={...l}),i}function Un(t){return t.kind==="text"||t.kind==="note"?t.style.stroke:t.style.textColor??t.style.stroke}function Ft(t){if(t.kind!=="path"||!t.subpaths)return[];let e=[];for(let n of t.subpaths){if(n.coords.length<8||(n.coords.length-2)%6!==0)continue;let i=[];for(let o=0;o<n.coords.length;o+=2)i.push({x:t.x+n.coords[o]*t.width,y:t.y+n.coords[o+1]*t.height});e.push({closed:n.closed,points:i})}return e}function Ze(t){let e=new I;for(let n of Ft(t)){e.moveTo(n.points[0]);for(let i=0;i<(n.points.length-1)/3;i++)e.curveTo(n.points[3*i+3],n.points[3*i+1],n.points[3*i+2]);n.closed&&e.close()}return e}function to(t,e){let n=Y(t),i=e==="top"?{x:q(n),y:n.y}:e==="right"?{x:H(n),y:Q(n)}:e==="bottom"?{x:q(n),y:K(n)}:{x:n.x,y:Q(n)};return tt(t,i)}function eo(t){let e=[];for(let n=0;n+3<t.length;n+=3){let i=t.slice(n,n+4);for(let o=0;o<16;o++)e.push(Ne(i,o/16))}return e.push(t[t.length-1]),e}function no(t,e,n){let i=null,o=null;for(let l of Ft(t)){let s=eo(l.points),a=s.length,u=l.closed?a:a-1;for(let c=0;c<u;c++){let h=s[c],m=s[(c+1)%a],d={x:m.x-h.x,y:m.y-h.y},p={x:h.x-e.x,y:h.y-e.y},f=d.x*n.y-n.x*d.y;if(f===0)continue;let y=(d.x*p.y-d.y*p.x)/f,x=(n.x*p.y-n.y*p.x)/f;y>0&&x>=0&&x<=1&&((i===null||y<i)&&(i=y),y<=1&&(o===null||y>o)&&(o=y))}}let r=o??i;return r===null?null:{x:e.x+n.x*r,y:e.y+n.y*r}}function io(t,e){let n=Y(t),i=Ut(t),o=Nn(t,e),r=o.x-i.x,l=o.y-i.y;if(!((r!==0||l!==0)&&n.width>0&&n.height>0))return i;if(t.kind==="path"){let c=no(t,i,{x:r,y:l});if(c)return tt(t,c)}let s=n.width/2,a=n.height/2,u;return t.kind==="ellipse"?u=1/Math.sqrt(r*r/(s*s)+l*l/(a*a)):t.kind==="diamond"?u=1/(Math.abs(r)/s+Math.abs(l)/a):u=Math.min(r!==0?s/Math.abs(r):1/0,l!==0?a/Math.abs(l):1/0),tt(t,{x:i.x+r*u,y:i.y+l*u})}function jn(t,e){let n=t.elementID?e.get(t.elementID):void 0;return n?Ut(n):{x:t.x,y:t.y}}function oo(t,e){let n=Y(t);return tt(t,{x:n.x+e.x*n.width,y:n.y+e.y*n.height})}function Jn(t,e,n){let i=t.elementID?n.get(t.elementID):void 0;if(!i)return{x:t.x,y:t.y};let o=t.portIndex,r=i.ports??[];return typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<r.length?oo(i,r[o]):t.port?to(i,t.port):io(i,e)}function lt(t,e){let n=t.connector;if(!n)return[{x:0,y:0},{x:0,y:0}];let i=n.waypoints??[];return[Jn(n.start,i.length>0?i[0]:jn(n.end,e),e),Jn(n.end,i.length>0?i[i.length-1]:jn(n.start,e),e)]}function at(t){if(t.kind==="polyline")return t.points;let e=[],n=t.points;for(let i=0;i<Math.floor((n.length-1)/3);i++){let o=n[3*i],r=n[3*i+1],l=n[3*i+2],s=n[3*i+3];for(let a=i===0?0:1;a<=24;a++){let u=a/24,c=1-u;e.push({x:c*c*c*o.x+3*c*c*u*r.x+3*c*u*u*l.x+u*u*u*s.x,y:c*c*c*o.y+3*c*c*u*r.y+3*c*u*u*l.y+u*u*u*s.y})}}return e}var pe=t=>t===null?null:t==="top"||t==="bottom";function ro(t){let e=[];for(let n of t){let i=e[e.length-1];if(!(i&&Math.abs(i.x-n.x)<.5&&Math.abs(i.y-n.y)<.5)){if(e.length>=2){let o=e[e.length-2],r=e[e.length-1];if(Math.abs(o.x-r.x)<.5&&Math.abs(r.x-n.x)<.5||Math.abs(o.y-r.y)<.5&&Math.abs(r.y-n.y)<.5){e[e.length-1]=n;continue}}e.push(n)}}return e.length>=2?e:t}function so(t,e){switch(e.routing){case"straight":return{kind:"polyline",points:t};case"curved":{let n=[t[0]];for(let i=0;i<t.length-1;i++){let o=t[Math.max(i-1,0)],r=t[i],l=t[i+1],s=t[Math.min(i+2,t.length-1)];n.push({x:r.x+(l.x-o.x)/6,y:r.y+(l.y-o.y)/6}),n.push({x:l.x-(s.x-r.x)/6,y:l.y-(s.y-r.y)/6}),n.push(l)}return{kind:"curve",points:n}}case"elbow":{let n=t[0],i=t[1],o=pe(e.start.port)??Math.abs(i.y-n.y)>Math.abs(i.x-n.x),r=pe(e.end.port),l=[n];for(let s=1;s<t.length;s++){let a=t[s],u=l[l.length-1],c=Math.abs(u.x-a.x)<.5,h=Math.abs(u.y-a.y)<.5;if(c||h){l.push(a),c!==h&&(o=!c);continue}let m=s===t.length-1&&r!==null?!r:o;l.push(m?{x:u.x,y:a.y}:{x:a.x,y:u.y},a),o=m}return{kind:"polyline",points:ro(l)}}}}function ct(t,e){let n=t.connector;if(!n)return{kind:"polyline",points:[]};let[i,o]=lt(t,e);if(n.waypoints&&n.waypoints.length>0)return so([i,...n.waypoints.map(a=>({x:a.x,y:a.y})),o],n);let r=o.x-i.x,l=o.y-i.y,s=Math.abs(r)>=Math.abs(l);switch(n.routing){case"straight":return{kind:"polyline",points:[i,o]};case"curved":return s?{kind:"curve",points:[i,{x:i.x+r/2,y:i.y},{x:o.x-r/2,y:o.y},o]}:{kind:"curve",points:[i,{x:i.x,y:i.y+l/2},{x:o.x,y:o.y-l/2},o]};case"elbow":{let a=pe(n.start.port)??!s,u=pe(n.end.port)??!s;if(a&&u){let c=i.y+l/2;return{kind:"polyline",points:[i,{x:i.x,y:c},{x:o.x,y:c},o]}}if(!a&&!u){let c=i.x+r/2;return{kind:"polyline",points:[i,{x:c,y:i.y},{x:c,y:o.y},o]}}return a?{kind:"polyline",points:[i,{x:i.x,y:o.y},o]}:{kind:"polyline",points:[i,{x:o.x,y:i.y},o]}}}}function Hn(t,e,n){let i=Math.atan2(t.y-e.y,t.x-e.x),o=Math.PI/7,r=l=>({x:t.x-n*Math.cos(i+l),y:t.y-n*Math.sin(i+l)});return[r(o),r(-o)]}function Kn(t,e){let n=at(ct(t,e));if(n.length===0)return{x:0,y:0,width:0,height:0};let i=n[0].x,o=n[0].y,r=i,l=o;for(let s of n)i=Math.min(i,s.x),o=Math.min(o,s.y),r=Math.max(r,s.x),l=Math.max(l,s.y);return{x:i,y:o,width:r-i,height:l-o}}function qn(t,e){let n=at(ct(t,e));if(n.length<=1)return n[0]??{x:0,y:0};let i=[],o=0;for(let l=0;l<n.length-1;l++){let s=Math.hypot(n[l+1].x-n[l].x,n[l+1].y-n[l].y);i.push(s),o+=s}let r=o/2;for(let l=0;l<i.length;l++){let s=i[l];if(r<=s||l===i.length-1){let a=s===0?0:r/s;return{x:n[l].x+(n[l+1].x-n[l].x)*a,y:n[l].y+(n[l+1].y-n[l].y)*a}}r-=s}return n[0]}function et(t){let e=new Map;for(let n of t.elements)e.has(n.id)||e.set(n.id,n);return e}function Ue(t,e,n){let i=t[1]+n>>>0,o=i<t[1]?1:0;return[t[0]+e+o>>>0,i]}function lo(t,e){let n=t&65535,i=t>>>16,o=e&65535,r=e>>>16,l=n*o,s=n*r,a=i*o,u=i*r,c=s+a,h=l+c%65536*65536;return[u+Math.floor(c/65536)+Math.floor(h/4294967296)>>>0,h>>>0]}function je(t,e,n){let i=lo(t[1],n);return[i[0]+Math.imul(t[0],n)+Math.imul(t[1],e)>>>0,i[1]]}function Xe(t,e){let n=(t[1]>>>e|t[0]<<32-e)>>>0;return[(t[0]^t[0]>>>e)>>>0,(t[1]^n)>>>0]}function Qn(t){return t=je(Xe(t,30),3210233709,484763065),t=je(Xe(t,27),2496678331,321982955),Xe(t,31)}var dt=class{constructor(e){v(this,"state");this.state=Ue([0,e>>>0],2654435769,2135587861)}next(){return this.state=Ue(this.state,2654435769,2135587861),Qn(this.state)}top53(){let[e,n]=this.next();return e*2097152+(n>>>11)}signed(){return Math.floor(this.top53())/2**52-1}unit(){return this.top53()/2**53}};function ye(t,e){let n=Ue([0,t>>>0],...ao(e));return n=Qn(n),Math.max(1,n[1]>>>0)}function ao(t){let e=je([0,t>>>0],2654435769,2135587861);return[e[0],e[1]]}var _n=(t,e,n)=>t.signed()*e*n;function ut(t,e,n,i,o,r,l){let s=Math.hypot(e.x-t.x,e.y-t.y);if(!(s>.5))return;let a=s<200?1:s>500?.4:-.0016668*s+1.233334,u=s<20?s/10:2;for(let c=0;c<2;c++){let h=(c===0?1:.5)*a,m=()=>_n(n,u,i)*h,d=n.unit()*.4+.3,p=_n(n,s/60,i)*o*a,f=e.x-t.x,y=e.y-t.y,x=-y/s,w=f/s,g=r?t:{x:t.x+m(),y:t.y+m()},k=r?e:{x:e.x+m(),y:e.y+m()},P=t.x+f*d*.66+x*p+m()*.5,b=t.y+y*d*.66+w*p+m()*.5,M=t.x+f*(.5+d*.5)+x*p+m()*.5,T=t.y+y*(.5+d*.5)+w*p+m()*.5;l.moveTo(g),l.curveTo(k,{x:P,y:b},{x:M,y:T})}}function Je(t,e,n,i){let o=new I;for(let r=0;r<t.length;r++)ut(t[r],t[(r+1)%t.length],e,n,i,!1,o);return o}function ti(t,e,n){let i=new I,o=t.x+t.width/2,r=t.y+t.height/2,l=t.width/2,s=t.height/2;if(!(l>.5&&s>.5))return i;let a=Math.max(8,Math.min(24,Math.trunc((l+s)/6))),u=Math.min(2.5,(l+s)/25)*n;for(let c=0;c<2;c++){let h=e.unit()*2*Math.PI,m=2*Math.PI*(c===0?1:1.04),d=Math.trunc(a*m/(2*Math.PI))+1,p=[];for(let f=0;f<d;f++){let y=h+m*f/a,x=e.signed()*u,w=e.signed()*u;p.push({x:o+l*Math.cos(y)+x,y:r+s*Math.sin(y)+w})}co(p,i)}return i}function co(t,e){if(!(t.length<=2)){e.moveTo(t[0]);for(let n=0;n<t.length-1;n++){let i=t[Math.max(n-1,0)],o=t[n],r=t[n+1],l=t[Math.min(n+2,t.length-1)];e.curveTo(r,{x:o.x+(r.x-i.x)/6,y:o.y+(r.y-i.y)/6},{x:r.x-(l.x-o.x)/6,y:r.y-(l.y-o.y)/6})}}}var He=-41*Math.PI/180;function ei(t,e,n){if(!(n>0))return[];let i=Math.cos(e),o=Math.sin(e),r=t.filter(m=>m.length>=3).map(m=>m.map(d=>({x:d.x*i+d.y*o,y:-d.x*o+d.y*i}))),l=r.flat();if(l.length===0)return[];let s=1/0,a=-1/0;for(let m of l)s=Math.min(s,m.y),a=Math.max(a,m.y);let u=(m,d)=>({x:m*i-d*o,y:m*o+d*i}),c=[],h=s+n/2;for(;h<a;){let m=[];for(let d of r)for(let p=0;p<d.length;p++){let f=d[p],y=d[(p+1)%d.length];(f.y<=h&&h<y.y||y.y<=h&&h<f.y)&&m.push(f.x+(h-f.y)/(y.y-f.y)*(y.x-f.x))}m.sort((d,p)=>d-p);for(let d=0;d+1<m.length;d+=2)m[d+1]-m[d]>.5&&c.push([u(m[d],h),u(m[d+1],h)]);h+=n}return c}var ri=2,Ke=.75,uo=.8,ii=.6;function si(t,e){return[...oi(t,e,!1),...oi(t,e,!0)]}function oi(t,e,n){if(!(e>0))return[];let i=u=>n?{x:u.y,y:u.x}:u,o=t.filter(u=>u.length>=3).map(u=>u.map(i)),r=o.flat().map(u=>u.y);if(r.length===0)return[];let l=Math.min(...r),s=Math.max(...r),a=[];for(let u=Math.floor(l/e)*e;u<s-.5;u+=e){if(!(u>l+.5))continue;let c=[];for(let h of o)for(let m=0;m<h.length;m++){let d=h[m],p=h[(m+1)%h.length];(d.y<=u&&u<p.y||p.y<=u&&u<d.y)&&c.push(d.x+(u-d.y)/(p.y-d.y)*(p.x-d.x))}c.sort((h,m)=>h-m);for(let h=0;h+1<c.length;h+=2)c[h+1]-c[h]>.5&&a.push([i({x:c[h],y:u}),i({x:c[h+1],y:u})])}return a}function li(t){return .2126*t.r+.7152*t.g+.0722*t.b>.5?{r:t.r*.84,g:t.g*.84,b:t.b*.8,a:t.a}:{r:t.r+(1-t.r)*.25,g:t.g+(1-t.g)*.25,b:t.b+(1-t.b)*.25,a:t.a}}function qe(t){return t.style.fillStyle==="grid"&&t.style.fill.a>0&&["rectangle","ellipse","diamond","path"].includes(t.kind)}function be(t,e,n){let i=(Math.imul(t,668265261)^Math.imul(e,374761393)^Math.imul(n,2654435761))>>>0;return i=Math.imul(i^i>>>15,2246822507)>>>0,i=Math.imul(i^i>>>13,3266489909)>>>0,i=(i^i>>>16)>>>0,i/4294967296}function ai(t,e,n){let i=n/ri;return{x:(t+.5+(be(t,e,1)-.5)*ii)*i,y:(e+.5+(be(t,e,2)-.5)*ii)*i}}function ho(t,e,n,i){let o=1/0;for(let r=-1;r<=1;r++)for(let l=-1;l<=1;l++){if(r===0&&l===0)continue;let s=ai(t+r,e+l,i);o=Math.min(o,Math.hypot(s.x-n.x,s.y-n.y))}return o*uo}function fo(t,e,n){let i=Math.cos(e),o=Math.sin(e),r=n*.8,l=n*.5;return[-1,0,1].map(s=>{let a=t.x-o*l*s,u=t.y+i*l*s;return[{x:a-i*r,y:u-o*r},{x:a+i*r,y:u+o*r}]})}function mo(t,e){let n=!1;for(let i of t){if(i.length<3)continue;let o=i.length-1;for(let r=0;r<i.length;r++){let l=i[r],s=i[o];l.y>e.y!=s.y>e.y&&e.x<(s.x-l.x)*(e.y-l.y)/(s.y-l.y)+l.x&&(n=!n),o=r}}return n}function po(t,e){let n=1/0;for(let i of e)if(!(i.length<2))for(let o=0;o<i.length;o++){let r=i[o],l=i[(o+1)%i.length],s=l.x-r.x,a=l.y-r.y,u=s*s+a*a,c=u>0?Math.max(0,Math.min(1,((t.x-r.x)*s+(t.y-r.y)*a)/u)):0;n=Math.min(n,Math.hypot(t.x-(r.x+c*s),t.y-(r.y+c*a)))}return n}var yo=(t,e)=>e.x>=t.x&&e.x<t.x+t.width&&e.y>=t.y&&e.y<t.y+t.height,ge=new Map;function ci(t){if(t.length===0)return[];let e=t.map(o=>[o.kind,o.x,o.y,o.width,o.height,o.rotation??0,Pt(o),JSON.stringify(o.subpaths??null),o.style.stroke.r,o.style.stroke.g,o.style.stroke.b,o.style.stroke.a,o.style.roughness,o.style.strokeWidth].join(",")).join(";"),n=ge.get(e);if(n)return n;let i=go(t);return ge.size>=16&&ge.clear(),ge.set(e,i),i}function go(t){let e=t.map(r=>{let l=Qe(r).map(d=>d.map(p=>tt(r,p))),s=l.flat(),a=s.map(d=>d.x),u=s.map(d=>d.y),c=a.length?Math.min(...a):0,h=u.length?Math.min(...u):0,m={x:c,y:h,width:(a.length?Math.max(...a):0)-c,height:(u.length?Math.max(...u):0)-h};return{contours:l,box:m,cell:Pt(r),element:r}}),n=e.map(()=>[]),i=new Set;for(let r of e){let l=r.cell/ri,s=Lt(r.box,-r.cell,-r.cell),a=Math.floor(s.x/l),u=Math.ceil((s.x+s.width)/l),c=Math.floor(s.y/l),h=Math.ceil((s.y+s.height)/l),m=Ke*r.cell;for(let d=a;d<u;d++)for(let p=c;p<h;p++){let f=`${r.cell}|${d}|${p}`;if(i.has(f))continue;i.add(f);let y=ai(d,p,r.cell),x=1/0,w=-1;for(let b=0;b<e.length;b++){let M=e[b];if(!yo(Lt(M.box,-m,-m),y))continue;if(mo(M.contours,y)){x=0;break}let T=po(y,M.contours);T<x&&(x=T,w=b)}if(!(x>0&&x<=m&&w>=0))continue;let g=be(d,p,3)*Math.PI,k=ho(d,p,y,r.cell),P=Math.trunc(be(d,p,4)*4294967296)>>>0;for(let[b,M]of fo(y,g,k))n[w].push([b,M,P])}}let o=[];return e.forEach((r,l)=>{if(n[l].length===0)return;let s=r.element,a=new I;for(let[u,c,h]of n[l])s.style.roughness<=0?a.moveTo(u).lineTo(c):ut(u,c,new dt(h),s.style.roughness*.35,.2,!1,a);o.push({ink:{...s.style.stroke,a:s.style.stroke.a*.6},width:Math.max(.8,s.style.strokeWidth*.45),path:a})}),o}var xe=class{constructor(e=6e3){v(this,"map",new Map);v(this,"limit");this.limit=e}get(e,n){let i=this.map.get(e);if(i!==void 0)return i;let o=n();return this.map.size>=this.limit&&this.map.clear(),this.map.set(e,o),o}},fi=new xe,bo=new xe;function mi(t,e){let n=t.style;return[e,t.kind,t.x,t.y,t.width,t.height,t.seed,n.roughness,n.bowing,n.strokeWidth,n.fillStyle,n.fillStyle==="grid"?Pt(t):0,t.path?t.path.join(","):t.subpaths?JSON.stringify(t.subpaths):""].join("|")}var Pt=t=>Math.max(8,t.style.gridSize??50);function Mt(t){return t.kind==="freehand"&&t.path===null?ui(t):fi.get(mi(t,0),()=>ui(t))}function di(t){return[{x:t.x,y:t.y},{x:H(t),y:t.y},{x:H(t),y:K(t)},{x:t.x,y:K(t)}]}function ke(t){return[{x:q(t),y:t.y},{x:H(t),y:Q(t)},{x:q(t),y:K(t)},{x:t.x,y:Q(t)}]}function ui(t){let e=Y(t),n=new dt(t.seed),i=t.style.roughness;switch(t.kind){case"ellipse":return i<=0?I.ellipse(e):ti(e,n,i);case"diamond":return i<=0?new I().addLines(ke(e)).close():Je(ke(e),n,i,t.style.bowing);case"text":case"connector":return I.rect(e);case"freehand":return ko(t);case"path":return i<=0?Ze(t):xo(t,n);default:return i<=0?I.rect(e):Je(di(e),n,i,t.style.bowing)}}function xo(t,e){let n=t.style.roughness,i=new I;for(let o of Ft(t)){let r=o.points;for(let l=0;l<(r.length-1)/3;l++){let s=r[3*l],a=r[3*l+1],u=r[3*l+2],c=r[3*l+3];if(a.x===s.x&&a.y===s.y&&u.x===c.x&&u.y===c.y){ut(s,c,e,n,t.style.bowing,!0,i);continue}let h=Math.hypot(a.x-s.x,a.y-s.y)+Math.hypot(u.x-a.x,u.y-a.y)+Math.hypot(c.x-u.x,c.y-u.y),m=Math.min(2.5,h/30)*n;for(let d=0;d<2;d++){let p=d===0?1:.5,f=()=>e.signed()*m*p;i.moveTo(s);let y=a.x+f(),x=a.y+f(),w=u.x+f(),g=u.y+f();i.curveTo(c,{x:y,y:x},{x:w,y:g})}}}return i}function ko(t){let e=Y(t),n=t.path;if(n&&n.length>=8&&(n.length-2)%6===0){let r=s=>({x:e.x+n[2*s]*e.width,y:e.y+n[2*s+1]*e.height}),l=new I().moveTo(r(0));for(let s=0;s<Math.floor((n.length/2-1)/3);s++)l.curveTo(r(3*s+3),r(3*s+1),r(3*s+2));return l}let i=(t.points??[]).map(r=>({x:e.x+r.x*e.width,y:e.y+r.y*e.height})),o=new I;if(i.length===0)return o;if(o.moveTo(i[0]),i.length===1)return o.lineTo(i[0]);if(i.length===2)return o.lineTo(i[1]);for(let r=1;r<i.length-1;r++)o.quadTo({x:(i[r].x+i[r+1].x)/2,y:(i[r].y+i[r+1].y)/2},i[r]);return o.lineTo(i[i.length-1])}function Qe(t){return t.kind!=="path"?[wo(t)]:Ft(t).map(e=>Bn(e.points,3))}function wo(t){let e=Y(t);if(t.kind==="ellipse"){let n=[];for(let i=0;i<48;i++){let o=2*Math.PI*i/48;n.push({x:q(e)+e.width/2*Math.cos(o),y:Q(e)+e.height/2*Math.sin(o)})}return n}return t.kind==="diamond"?ke(e):di(e)}function we(t){let e=Y(t);return t.kind==="ellipse"?I.ellipse(e):t.kind==="path"?Ze(t):t.kind==="diamond"?new I().addLines(ke(e)).close():I.rect(e)}function tn(t){return t.style.fillStyle==="solid"||["freehand","connector","text","image"].includes(t.kind)?new I:fi.get(mi(t,1),()=>Po(t))}function Po(t){let e=Qe(t),n=new dt((t.seed^1540483477)>>>0),i=new I;if(t.style.fillStyle==="grid"){for(let[l,s]of si(e,Pt(t)))t.style.roughness<=0?i.moveTo(l).lineTo(s):ut(l,s,n,t.style.roughness*.3,.3,!1,i);return i}let o=Math.max(4,t.style.strokeWidth*4),r=[He];t.style.fillStyle==="crossHatch"&&r.push(He+Math.PI/2);for(let l of r)for(let[s,a]of ei(e,l,o))t.style.roughness<=0?i.moveTo(s).lineTo(a):ut(s,a,n,t.style.roughness*.6,.5,!1,i);return i}function Pe(t,e){switch(t){case"solid":return null;case"dashed":return[Math.max(8,e*4),Math.max(6,e*3)];case"dotted":return[.01,Math.max(5,e*2.6)]}}function en(t,e,n){let i=t.connector;if(!i)return[new I,new I];let[o,r]=lt(t,e),l=ct(t,e),s=i.hops===!0&&n?Mo(t,l,n,e):[],a=[t.seed,t.style.roughness,t.style.bowing,t.style.strokeWidth,i.routing,i.startHead,i.endHead,i.start.port,i.end.port,o.x,o.y,r.x,r.y,JSON.stringify(i.waypoints),JSON.stringify(s)].join("|");return bo.get(a,()=>Ro(t,l,s))}function pi(t){return Math.max(8,t*4)}function yi(t){let e=t.points,n=[];if(t.kind==="polyline"){for(let i=0;i<e.length-1;i++)n.push([e[i],e[i+1]]);return n}for(let i=0;i<Math.floor((e.length-1)/3);i++){let o=e.slice(3*i,3*i+4),r=[];for(let l=0;l<=24;l++)r.push(_e(o,l/24));n.push(r)}return n}function gi(t){let e=[0];for(let n=1;n<t.length;n++)e.push(e[n-1]+Math.hypot(t[n].x-t[n-1].x,t[n].y-t[n-1].y));return e}function _e(t,e){let n=1-e;return{x:n*n*n*t[0].x+3*n*n*e*t[1].x+3*n*e*e*t[2].x+e*e*e*t[3].x,y:n*n*n*t[0].y+3*n*n*e*t[1].y+3*n*e*e*t[2].y+e*e*e*t[3].y}}function hi(t,e,n){let i=(r,l)=>{let s=(p,f)=>({x:p.x+(f.x-p.x)*l,y:p.y+(f.y-p.y)*l}),a=s(r[0],r[1]),u=s(r[1],r[2]),c=s(r[2],r[3]),h=s(a,u),m=s(u,c),d=s(h,m);return[[r[0],a,h,d],[d,m,c,r[3]]]},o=i(t,n)[0];return n>0?i(o,e/n)[1]:[t[0],t[0],t[0],t[0]]}function Mo(t,e,n,i){let o=yi(e);if(o.length===0)return[];let r=new Set(n.layers.filter(u=>u.visible).map(u=>u.id)),l=[];for(let u of st(n)){if(u.id===t.id)break;u.kind!=="connector"||!r.has(u.layerID)||l.push(at(ct(u,i)))}let s=pi(t.style.strokeWidth),a=[];for(let u of o){let c=gi(u),h=c[c.length-1],m=[];for(let p=0;p<u.length-1;p++){let f=u[p],y=u[p+1],x=y.x-f.x,w=y.y-f.y;for(let g of l)for(let k=0;k<g.length-1;k++){let P=g[k],b=g[k+1],M=b.x-P.x,T=b.y-P.y,S=x*T-w*M;if(Math.abs(S)<1e-9)continue;let O=P.x-f.x,C=P.y-f.y,V=(O*T-C*M)/S,$=(O*w-C*x)/S;V>0&&V<1&&$>=0&&$<=1&&m.push(c[p]+V*(c[p+1]-c[p]))}}let d=[];for(let p of m.sort((f,y)=>f-y))p<s+2||p>h-s-2||d.length>0&&p-d[d.length-1]<2*s+2||d.push(p);a.push(d)}return a}function Ro(t,e,n){let i=t.connector,o=new dt(t.seed),r=t.style.roughness,l=t.style.bowing,s=new I,a=new I,u=r*3,c=()=>o.signed()*u,h=(x,w,g,k)=>{let P={x:g.y,y:-g.x};(P.y>1e-9||Math.abs(P.y)<=1e-9&&P.x>0)&&(P={x:-P.x,y:-P.y});let b=k*.5523,M={x:(x.x+w.x)/2,y:(x.y+w.y)/2},T={x:M.x+P.x*k,y:M.y+P.y*k};s.moveTo(x);let S=x.x+P.x*b+c(),O=x.y+P.y*b+c(),C=T.x-g.x*b+c(),V=T.y-g.y*b+c();s.curveTo(T,{x:S,y:O},{x:C,y:V});let $=T.x+g.x*b+c(),B=T.y+g.y*b+c(),X=w.x+P.x*b+c(),U=w.y+P.y*b+c();s.curveTo(w,{x:$,y:B},{x:X,y:U})},m=pi(t.style.strokeWidth);if(e.kind==="polyline"){let x=e.points,w=(g,k)=>{r<=0?s.moveTo(g).lineTo(k):ut(g,k,o,r,l,!0,s)};for(let g=0;g<Math.max(x.length-1,0);g++){let k=x[g],P=x[g+1],b=Math.hypot(P.x-k.x,P.y-k.y),M=b>0?{x:(P.x-k.x)/b,y:(P.y-k.y)/b}:{x:0,y:0},T=O=>({x:k.x+M.x*O,y:k.y+M.y*O}),S=k;for(let O of g<n.length?n[g]:[]){let C=T(O-m),V=T(O+m);w(S,C),h(C,V,M,m),S=V}w(S,P)}}else{let x=e.points,w=yi(e);s.moveTo(x[0]);for(let g=0;g<Math.floor((x.length-1)/3);g++){let k=x[3*g+1],P=x[3*g+2],b=x[3*g+3],M=k.x+c(),T=k.y+c(),S=P.x+c(),O=P.y+c(),C=g<n.length?n[g]:[];if(C.length===0){s.curveTo(b,{x:M,y:T},{x:S,y:O});continue}let V=[x[3*g],{x:M,y:T},{x:S,y:O},b],$=gi(w[g]),B=ot=>{let D=0;for(;D<$.length-2&&$[D+1]<ot;)D++;let ft=$[D+1]-$[D];return(D+(ft>0?(ot-$[D])/ft:0))/24},X=0;for(let ot of C){let D=B(ot-m),ft=B(ot+m),oe=hi(V,X,D);(g>0||X>0)&&s.moveTo(oe[0]),s.curveTo(oe[3],oe[1],oe[2]);let Vt=_e(V,D),Wt=_e(V,ft),re=Math.hypot(Wt.x-Vt.x,Wt.y-Vt.y),zi=re>0?{x:(Wt.x-Vt.x)/re,y:(Wt.y-Vt.y)/re}:{x:0,y:0};h(Vt,Wt,zi,re/2),X=ft}let U=hi(V,X,1);s.moveTo(U[0]).curveTo(U[3],U[1],U[2])}}let d=at(e),p=Math.max(10,t.style.strokeWidth*5),f=(x,w)=>{r<=0?s.moveTo(x).lineTo(w):ut(x,w,o,r*.5,0,!0,s)},y=(x,w,g)=>{let[k,P]=Hn(w,g,p);switch(x){case"arrow":f(k,w),f(P,w);break;case"triangle":f(k,w),f(P,w),f(k,P),a.moveTo(w).lineTo(k).lineTo(P).close();break;case"dot":{let b=p*.32,M=Math.atan2(w.y-g.y,w.x-g.x),T=w.x-b*Math.cos(M),S=w.y-b*Math.sin(M);a.addEllipse({x:T-b,y:S-b,width:2*b,height:2*b});break}case"bar":{let b=Math.atan2(w.y-g.y,w.x-g.x)+Math.PI/2,M=p*.5;f({x:w.x-M*Math.cos(b),y:w.y-M*Math.sin(b)},{x:w.x+M*Math.cos(b),y:w.y+M*Math.sin(b)});break}}};return d.length>1&&(y(i.endHead,d[d.length-1],d[d.length-2]),y(i.startHead,d[0],d[1])),[s,a]}function rn(t,e){switch(t){case"linear":return e;case"easeIn":return e*e*e;case"easeOut":return 1-Math.pow(1-e,3);case"easeInOut":return e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2;case"hold":return 0;case"spring":return vo(e);case"bounce":return To(e);case"elastic":return Ao(e)}}function vo(t){if(t<=0)return 0;if(t>=1)return 1;let e=n=>1-Math.exp(-6*n)*(Math.cos(3*Math.PI*n)+6/(3*Math.PI)*Math.sin(3*Math.PI*n));return e(t)+t*(1-e(1))}function To(t){if(t<=0)return 0;if(t>=1)return 1;let e=7.5625,n=2.75;if(t<1/n)return e*t*t;if(t<2/n){let o=t-1.5/n;return e*o*o+.75}if(t<2.5/n){let o=t-2.25/n;return e*o*o+.9375}let i=t-2.625/n;return e*i*i+.984375}function Ao(t){return t<=0?0:t>=1?1:Math.pow(2,-10*t)*Math.sin((t*10-.75)*(2*Math.PI/3))+1}var jt=(t,e)=>t%e;function Jt(t,e){let n=(t.repeats??[]).filter(ce).slice().sort((i,o)=>i.start-o.start);if(n.length===0)return e;for(let i of n){if(!(e>=i.end))continue;let o=i.end-i.start;if(i.count===null)return i.start+jt(e-i.start,o);let r=o*i.count;if(e<i.start+r)return i.start+jt(e-i.start,o);e-=r-o}return e}function nn(t,e,n,i,o){e=Jt(t,e);let r,l;for(let c of t.keys)if(n(c)!==void 0)if(c.t<=e)r=c;else{l=c;break}if(!r&&!l)return i;if(r&&!l)return n(r);if(!r&&l)return n(l);let s=r,a=l,u=a.t-s.t>0?(e-s.t)/(a.t-s.t):1;return o(n(s),n(a),rn(s.ease??"linear",u))}var So=(t,e,n)=>t+(e-t)*n,Me=(t,e,n)=>Math.min(Math.max(t+(e-t)*n,0),1),bi=(t,e,n)=>({r:Me(t.r,e.r,n),g:Me(t.g,e.g,n),b:Me(t.b,e.b,n),a:Me(t.a,e.a,n)});function pt(t,e,n,i){return nn(t,e,o=>o[n],i,So)}function Eo(t,e){e=Jt(t,e);let n=(o,r)=>{let l;for(let a of t.keys)a.t<=e&&o(a)!==void 0&&(l=a);let s=t.keys.find(a=>a.t>e&&o(a)!==void 0);return!l||!s?!1:l.ease!=="hold"&&!r(o(l),o(s))},i=o=>n(r=>r[o],(r,l)=>r===l);return i("x")||i("y")||i("width")||i("height")||i("rotation")||i("strokeWidth")||n(o=>o.stroke,At)||n(o=>o.fill,At)||i("reveal")||i("opacity")}function on(t,e){e=Jt(t,e);let n=t.keys.filter(o=>o.visible!==void 0);if(n.length===0)return!0;let i;for(let o of n)o.t<=e&&(i=o);return i?i.visible:!n[0].visible}function Io(t,e,n){if(e=G(e),t.keys.some(i=>i.reveal!==void 0)){let i=pt(t,n,"reveal",e.reveal??1);e.reveal=i>=1?null:Math.max(0,i)}if(t.keys.some(i=>i.opacity!==void 0)){let i=Math.min(Math.max(pt(t,n,"opacity",e.style.opacity??1),0),1);e.style.opacity=i>=1?null:i}return e.kind==="connector"||(e.x=pt(t,n,"x",e.x),e.y=pt(t,n,"y",e.y),e.width=Math.max(0,pt(t,n,"width",e.width)),e.height=Math.max(0,pt(t,n,"height",e.height)),t.keys.some(i=>i.rotation!==void 0)&&(e.rotation=pt(t,n,"rotation",Z(e))),e.style.strokeWidth=Math.max(0,pt(t,n,"strokeWidth",e.style.strokeWidth)),e.style.stroke=nn(t,n,i=>i.stroke,e.style.stroke,bi),e.style.fill=nn(t,n,i=>i.fill,e.style.fill,bi)),e}function Lo(t,e){e=Jt(t,e);let n=null;for(let o of t.follow??[])o.start<=e&&(n===null||o.start>n.start)&&(n=o);if(!n)return null;let i=n;return t.keys.some(o=>o.t>=i.end&&o.t<=e&&(o.x!==void 0||o.y!==void 0))?null:n}function Fo(t,e){if(t.kind==="connector")return new It(at(ct(t,et(e))));let n=G(t);n.style.roughness=0;let i=Mt(n).contours()[0]??[];return new It(Z(t)===0?i:i.map(o=>tt(t,o)))}function Co(t,e,n,i){let o=Lo(t,n);if(!o)return e;n=Jt(t,n);let r=i.elements.find(h=>h.id===o.path);if(!r||r.id===e.id)return e;let l=Fo(r,i),s=o.end-o.start,a=Math.min(Math.max(rn(o.ease??"easeInOut",s>0?Math.min(1,(n-o.start)/s):1),0),1)*(o.laps??1);a>1&&(a=jt(a,1)===0?1:jt(a,1)),o.reverse===!0&&(a=1-a);let u=l.point(a),c=G(e);if(c.x=u.x-e.width/2,c.y=u.y-e.height/2,o.orient===!0){let h=o.reverse===!0?-.01:.01,m=l.point(a-h/2),d=l.point(a+h/2);(m.x!==d.x||m.y!==d.y)&&(c.rotation=Math.atan2(d.y-m.y,d.x-m.x))}return c}function Do(t,e,n,i){if(!(n>0))return 0;let o=z(t.duration);if(o>0){let l=Xt(e*o/n);l!==0&&(e=l*n/o)}let r=jt(e*i,n);return r<0?-r:r===0?0:n-r}function Yo(t){let e=new Map;for(let n of t.tracks)e.has(n.element)||e.set(n.element,n);return e}function nt(t,e,n="initial"){return _(Ct(t,e,n),z(e))}var Oo={fps:12,duration:0,boil:null,settle:null,poster:null,tracks:[],camera:null,markers:null};function Ct(t,e,n="initial"){let i=vn(t,n),o=t.timeline??(i.size===0?null:Oo);if(!o)return t;e=z(e);let r=Yo(o),l=o.boil===null?null:Math.trunc(Math.floor(e*St(o.fps)+1e-9)/Math.max(1,o.boil))%Oe>>>0,s=new Set;for(let f of r.values())on(f,e)||s.add(f.element);for(let f of i)s.add(f);let a=null;if(o.settle===!0){a=new Set;for(let f of r.values())Eo(f,e)&&a.add(f.element)}let u=f=>{let y=r.get(f.id)?.boil;return y??(a?f.connector?[f.connector.start.elementID,f.connector.end.elementID].some(x=>x!==null&&a.has(x)):a.has(f.id):!0)},c=t.elements.map(f=>{let y=r.get(f.id),x=y?Io(y,f,e):f;l!==null&&l>0&&u(f)&&(x===f&&(x=G(f)),x.seed=ye(f.seed,l));let w=y?.march!=null?Pe(x.style.dash,x.style.strokeWidth):null;return y?.march!=null&&w&&(x===f&&(x=G(f)),x.style.dashOffset=Do(o,y.march,w.reduce((g,k)=>g+k,0),e)),x});c=c.map((f,y)=>s.has(f.id)?t.elements[y]:f);let h={...t,elements:c,timeline:null};c=c.map(f=>{let y=r.get(f.id);return y?Co(y,f,e,h):f});let m={...t,elements:c,timeline:null},d=et(m),p=new Set(s);return c=c.map(f=>{let y=f.connector;if(!y||![y.start.elementID,y.end.elementID].some(k=>k!==null&&s.has(k)))return f;if(!(r.get(f.id)?.keys.some(k=>k.visible!==void 0)??!1)||[y.start.elementID,y.end.elementID].some(k=>k!==null&&i.has(k)))return p.add(f.id),f;let[x,w]=lt(f,d),g=G(f);return g.connector.start={elementID:null,port:y.start.port,x:x.x,y:x.y},g.connector.end={elementID:null,port:y.end.port,x:w.x,y:w.y},g}),{...t,elements:c.filter(f=>!p.has(f.id)),timeline:null}}function yt(t){return t.timeline?t.timeline.poster??t.timeline.duration:0}function ki(t){return t.timeline?nt(t,yt(t)):_(Ct(t,0),0)}function Vo(t,e){let n=t.camera??[];if(n.length===0)return null;let i;for(let s of n)s.t<=e&&(i=s);let o=n.find(s=>s.t>e);if(!i)return xi(n[0]);if(!o)return xi(i);let r=rn(i.ease??"easeInOut",(e-i.t)/Math.max(o.t-i.t,1e-9)),l=(s,a)=>s+(a-s)*r;return{x:l(i.x,o.x),y:l(i.y,o.y),width:Math.max(1,l(i.width,o.width)),height:Math.max(1,l(i.height,o.height))}}var xi=t=>({x:t.x,y:t.y,width:t.width,height:t.height});function Dt(t,e){let n=t.camera?.[0],i=Vo(t,e);return!n||!i||!(i.width>0&&i.height>0)?null:Wo(i,n.width/n.height)}function Wo(t,e){if(!(t.width>0&&t.height>0&&e>0))return t;let n=t.width,i=t.height;return t.width/t.height<e?n=t.height*e:i=t.width/e,{x:t.x+t.width/2-n/2,y:t.y+t.height/2-i/2,width:n,height:i}}function $o(t){return Math.max(1,Math.ceil(z(t.duration)*St(t.fps)))}function Re(t){let e=St(t.fps),n=[];for(let o=0;o<$o(t);o++)n.push(o/e);let i=n[n.length-1];return t.duration-i>1e-6&&n.push(t.duration),n}function wi(t,e){let n=-1;return(t.markers??[]).forEach((i,o)=>{i.t<=e&&(n=o)}),n}function Pi(t){let e=t.timeline;if(!e)return new Set;let n=e.poster??e.duration;return new Set(e.tracks.filter(i=>!on(i,0)&&!on(i,n)).map(i=>i.element))}var zo=8,Go=2e4,sn=1e-9;function ve(t,e){let n=(t.timeline?.markers??[]).find(i=>i.name.toLowerCase()===e);return n?Math.min(Math.max(n.t,0),z(t.timeline?.duration??0)):null}function Kt(t,e){switch(e){case"up":return ve(t,"up")??0;case"over":return ve(t,"over")??Kt(t,"up");case"down":return ve(t,"down")??Kt(t,"over");default:return ve(t,"hit")}}function Bo(t,e,n,i){let o=z(t.timeline?.duration??0);if(t.button===!0)return Kt(t,"up")??0;let r=i!==null&&Number.isFinite(i)?i:0;switch(n??"loop"){case"still":return Math.min(t.timeline?.poster??o,o);case"click":return Math.min(Math.max(r,0),o);case"once":return Math.min(Math.max(e+r,0),o);default:{if(o<=0)return 0;let l=e+r,s=l%o;return s<0&&(s+=o),l>sn&&(s<sn||o-s<sn)?o:s}}}function No(t,e){let n=t.params;if(!n||Object.keys(n).length===0)return t;let i=new Map(Object.entries(n));for(let[r,l]of Object.entries(e??{}))i.has(r)&&i.set(r,l);let o=r=>r.includes("{{")?r.replace(/\{\{\s*([^{}]*?)\s*\}\}/g,(l,s)=>i.get(s)??l):r;return{...t,elements:t.elements.map(r=>{if(r.text===null&&r.args===null)return r;let l=G(r);return l.text!==null&&(l.text=o(l.text)),l.args!==null&&(l.args=Object.fromEntries(Object.entries(l.args).map(([s,a])=>[s,o(a)]))),l})}}function Zo(t){return{id:t.id,name:t.name,layers:t.layers,elements:t.elements,theme:null,timeline:t.timeline,symbols:null,variables:null}}function Te(t){return t.elements.some(e=>e.kind==="symbol")}function _(t,e,n=!0,i=new Map){if(!Te(t))return t;let o={left:Go};return{...t,elements:Ri(t.elements,t,e,cn(t),[],n,o,i)}}function cn(t){let e=new Map;for(let n of t.symbols??[])e.has(n.id)||e.set(n.id,n);return e}function Ri(t,e,n,i,o,r,l,s=new Map){let a=new Set(t.filter(h=>h.kind==="symbol").map(h=>h.id));if(a.size===0)return l.left-=t.length,t;let u=et(e),c=[];for(let h of t){if(l.left<=0)break;let m=h.connector;if(h.kind==="connector"&&m&&[m.start.elementID,m.end.elementID].some(P=>P!==null&&a.has(P))){let[P,b]=lt(h,u),M=G(h);m.start.elementID!==null&&a.has(m.start.elementID)&&(M.connector.start={elementID:null,port:m.start.port,x:P.x,y:P.y}),m.end.elementID!==null&&a.has(m.end.elementID)&&(M.connector.end={elementID:null,port:m.end.port,x:b.x,y:b.y}),c.push(M),l.left-=1;continue}if(h.kind!=="symbol"){c.push(h),l.left-=1;continue}l.left-=1;let d=h.symbol,p=d===null?void 0:i.get(d);if(d===null||!p||o.includes(d)||o.length>=zo)continue;let f=o.length===0?s.get(h.id):void 0,y=f!==void 0?Math.min(Math.max(f,0),z(p.timeline?.duration??0)):Bo(p,n,h.playback,h.offset),x=Zo(No(p,h.args)),w=r?Ct(x,y):x,g=new Set(w.layers.filter(P=>P.visible).map(P=>P.id)),k={...w,elements:st(w).filter(P=>g.has(P.layerID)),layers:[{id:h.layerID,name:"",visible:!0,locked:!1}]};for(let P of Ri(k.elements,k,y,i,[...o,d],r,l))c.push(Xo(P,h,p))}return c}function Xo(t,e,n){let i={x:e.x,y:e.y,width:e.width,height:e.height},o=i.width/n.width,r=i.height/n.height,l=Math.sqrt(Math.abs(o*r)),s={x:i.x+i.width/2,y:i.y+i.height/2},a=Z(e),u=d=>mt({x:i.x+d.x*o,y:i.y+d.y*r},s,a),c=G(t);c.id=an(e.id,t.id),c.layerID=e.layerID,c.groupID=null,c.link=t.link===null?null:an(e.id,t.link),c.seed=ye(t.seed,e.seed),c.click=null,c.hover=null;let h={x:i.x+t.x*o,y:i.y+t.y*r,width:t.width*o,height:t.height*r},m=mt({x:h.x+h.width/2,y:h.y+h.height/2},s,a);if(c.x=m.x-h.width/2,c.y=m.y-h.height/2,c.width=h.width,c.height=h.height,(a!==0||t.rotation!==null)&&(c.rotation=Z(t)+a),c.style.strokeWidth=t.style.strokeWidth*l,c.style.fontSize=t.style.fontSize*l,t.style.gridSize!==null&&(c.style.gridSize=t.style.gridSize*l),e.style.opacity!==null&&(c.style.opacity=(t.style.opacity??1)*e.style.opacity),t.connector){let d=p=>{if(p.elementID!==null)return{elementID:an(e.id,p.elementID),port:p.port,x:p.x,y:p.y};let f=u(p);return{elementID:null,port:p.port,x:f.x,y:f.y}};c.connector={...t.connector,start:d(t.connector.start),end:d(t.connector.end),waypoints:t.connector.waypoints?.map(u)??null}}return c}var ln=(1n<<64n)-1n;function Ht(t){let e=t+0x9e3779b97f4a7c15n&ln;return e=(e^e>>30n)*0xbf58476d1ce4e5b9n&ln,e=(e^e>>27n)*0x94d049bb133111ebn&ln,e^e>>31n}function Mi(t){let e=t.replace(/-/g,"").padStart(32,"0").slice(-32);return[BigInt(`0x${e.slice(0,16)}`),BigInt(`0x${e.slice(16)}`)]}function an(t,e){let[n,i]=Mi(t),[o,r]=Mi(e),l=Ht(Ht(Ht(Ht(n)^i)^o)^r),s=Ht(l^0x6a09e667f3bcc909n),a=l.toString(16).padStart(16,"0")+s.toString(16).padStart(16,"0");return`${a.slice(0,8)}-${a.slice(8,12)}-${a.slice(12,16)}-${a.slice(16,20)}-${a.slice(20)}`.toUpperCase()}function Uo(t,e){let n=e.findIndex(i=>i.name===t);return n>=0?n:e.findIndex(i=>i.name.toLowerCase()===t.toLowerCase())}function vi(t,e){let n=t.timeline?.markers??[],i=new Map,o=null;for(let r of t.elements){let l=r.click,s=l&&Tn(l)?{...l.set?{set:l.set}:{},...l.toggle?{toggle:l.toggle}:{}}:null;if(l?.scene){let u=Uo(l.scene,n);if(u>=0){i.set(r.id,{scene:u,...s});continue}}let a=(l?.url?kt(l.url):null)??$t(r.url);if(a){i.set(r.id,{url:a,...s});continue}if(s){i.set(r.id,{state:!0,...s});continue}if(r.link&&e&&e.pages.length>1){o||(o=new Map,e.pages.forEach((c,h)=>{for(let m of c.elements)o.has(m.id)||o.set(m.id,h)}));let u=o.get(r.link);u!==void 0&&e.pages[u]!==t&&i.set(r.id,{page:u})}}return i}function jo(t){let e=t.hover;if(!e)return t;let n={...t.style};if(e.stroke&&(n.stroke=e.stroke),e.fill&&(n.fill=e.fill),e.opacity!==null&&Number.isFinite(e.opacity)){let i=Math.min(Math.max(e.opacity,0),1);n.opacity=i>=1?null:i}return{...t,style:n}}function Ti(t,e){return{...t,elements:t.elements.map(n=>e.has(n.id)?jo(n):n)}}function Ai(t){return!!t.hover&&(t.hover.stroke!==null||t.hover.fill!==null||t.hover.opacity!==null)}function Si(t,e){let n=(t.text??"").split(`
3
- `).find(i=>i.length>0);return n||(t.anchor?t.anchor:e||t.kind)}function Ei(t,e){let n=new Map;for(let i of t.elements){if(!e.has(i.id)||i.kind!=="symbol")continue;let o={...t,layers:[{id:i.layerID,name:"",visible:!0,locked:!1}],elements:[i]};for(let r of _(o,0,!1).elements)n.set(r.id,i.id)}return n}var Ii=`
1
+ /*! dottie.js 0.8.0 | Apache-2.0 | https://github.com/phin-tech/dottie */
2
+ "use strict";(()=>{var mr=Object.defineProperty;var Bo=(e,t,n)=>t in e?mr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Uo=(e,t)=>{for(var n in t)mr(e,n,{get:t[n],enumerable:!0})};var E=(e,t,n)=>Bo(e,typeof t!="symbol"?t+"":t,n);var fr={};Uo(fr,{BOIL_DRAWINGS:()=>pn,BUNDLED_FONTS:()=>de,DottieFormatError:()=>Tt,DottiePlayer:()=>ae,KINDS:()=>Mr,KNOWN_FIELDS:()=>Pr,MAX_DURATION:()=>Qt,MAX_MARCH:()=>mn,Playback:()=>Se,SUPPORTED_VERSION:()=>fn,VERSION:()=>Ps,addFonts:()=>ze,allowedURL:()=>Bt,black:()=>Nt,bounds:()=>Ot,cameraView:()=>se,clampFPS:()=>te,clampMarch:()=>vr,clampTime:()=>ct,clear:()=>Rr,cloneElement:()=>at,definePlayer:()=>un,elementIndex:()=>qo,fontFaces:()=>kn,fontFile:()=>xn,frameTimes:()=>tn,inkOnDark:()=>Ar,inspect:()=>No,inspectFrame:()=>cr,inspectPage:()=>hr,isAutomaticInk:()=>me,luminance:()=>ee,orderedElements:()=>It,pageIndex:()=>Ee,parseDottie:()=>fe,plan:()=>le,posterTime:()=>Gt,render:()=>ws,repeatIsValid:()=>Ye,resolved:()=>St,sameColor:()=>_t,sampleTimes:()=>ur,sceneAt:()=>vo,setFontBase:()=>Cr,stableSortBy:()=>Oe,still:()=>Po,svg:()=>an,svgParts:()=>zt,themeNamed:()=>Jt,themes:()=>sr,transientElements:()=>Ro,usedFonts:()=>Ge,webLink:()=>he,withRoughness:()=>Te});var Zo=64;function Le(e){return e.length<=Zo&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var dr=["throughput","load","delay","backlog","depth","inFlight","transit","backup"],jo=[">=","<=","==","!=",">","<"];function Ce(e){let t=vt(e);if(!t.includes("(")){let u=t.search(/[>=<!]/);if(u<0)return null;let c=vt(t.slice(0,u));if(!dr.includes(c))return null;let a=Ce(c+"() "+t.slice(u));return a?{...a,target:""}:null}let n=t.indexOf("("),r=t.indexOf(")");if(n<0||r<0||n>=r)return null;let o=vt(t.slice(0,n)),i=vt(t.slice(n+1,r)),l=vt(t.slice(r+1));if(!dr.includes(o)||i.includes("("))return null;let s=jo.find(u=>l.startsWith(u));return s===void 0||(l=vt(l.slice(s.length)),!/^-?[0-9]+(\.[0-9]+)?$/.test(l))?null:{metric:o,target:i,op:s,value:Number(l)}}function Xo(e,t){switch(e.op){case">":return t>e.value;case">=":return t>=e.value;case"<":return t<e.value;case"<=":return t<=e.value;case"==":return t===e.value;default:return t!==e.value}}function Kt(e){return e.split("||").some(t=>t.split("&&").some(n=>Ce(n)!==null))}function Ho(e){let t=[];for(let n of e.split("||"))for(let r of n.split("&&")){if(Ce(r)!==null)continue;let o=vt(r);if(o.startsWith("!")&&(o=vt(o.slice(1))),!Le(o))return null;t.push(o)}return t}function qt(e,t,n=null){return Ho(e)===null?!1:e.split("||").some(r=>r.split("&&").every(o=>{let i=Ce(o);if(i!==null){let u=n?n(i):null;return u!==null&&Xo(i,u)}let l=vt(o),s=!1;return l.startsWith("!")&&(s=!0,l=vt(l.slice(1))),(t[l]??!1)!==s}))}function hn(e,t){return t==="all"?null:t==="initial"?{...e.variables??{}}:{...e.variables??{},...t}}function pr(e,t){let n=hn(e,t),r=new Set;if(!n)return r;for(let o of e.elements)o.when!==null&&!qt(o.when,n)&&r.add(o.id);return r}function yr(e,t){return!t||!e.overrides?[]:e.overrides.filter(n=>!Kt(n.when)&&qt(n.when,t))}function gr(e){return{...e,reroute:null,offline:null,cost:null,capacity:null,delay:null}}function De(e,t){let n=at(t);if(e.stroke&&(n.style.stroke={...e.stroke}),e.fill&&(n.style.fill={...e.fill}),e.textColor&&(n.style.textColor={...e.textColor}),e.strokeWidth!==null&&(n.style.strokeWidth=Math.max(0,e.strokeWidth)),e.dash!==null&&(n.style.dash=e.dash),e.text!==null&&(n.text=e.text),e.cost!==null&&n.connector&&(n.connector.cost=Math.min(Math.max(e.cost,0),1e6)),e.capacity!==null&&(n.capacity=Math.max(e.capacity,0)),e.delay!==null&&n.kind!=="connector"&&(n.delay=Math.max(e.delay,0)),e.opacity!==null){let r=Math.min(Math.max(e.opacity,0),1)*(n.style.opacity??1);n.style.opacity=r>=1?null:r}return n}function br(e){return!!e&&(e.reset===!0||Object.keys(e.set??{}).length>0||(e.toggle??[]).length>0)}function xr(e,t,n={}){let r={...t};if(e.reset===!0){r={};for(let o of Object.keys(t))r[o]=!1;Object.assign(r,n)}for(let[o,i]of Object.entries(e.set??{}))r[o]=i;for(let o of e.toggle??[])r[o]=!(r[o]??!1);return r}function vt(e){return e.replace(/^[ \t ]+|[ \t ]+$/g,"")}var fn=2,Mr=["rectangle","ellipse","diamond","text","connector","freehand","path","note","image","symbol"],Jo=["linear","easeIn","easeOut","easeInOut","hold","spring","bounce","elastic"],Pr={file:["version","pages","images"],page:["id","name","layers","elements","theme","guidesX","guidesY","guidesLocked","timeline","symbols","variables","flows"],flow:["id","from","to","every","speed","color","size","when","spread","volume","overrides"],flowOverride:["when","volume"],symbol:["id","name","width","height","layers","elements","timeline","button","params"],layer:["id","name","visible","locked"],rgba:["r","g","b","a"],style:["stroke","fill","fillStyle","strokeWidth","dash","roughness","bowing","fontSize","font","gridSize","opacity","dashOffset","textColor"],element:["id","kind","x","y","width","height","style","seed","layerID","text","connector","groupID","points","path","subpaths","evenOdd","rotation","link","url","anchor","click","hover","when","overrides","symbol","playback","offset","args","image","reveal","ports","labelRect","extension","capacity","delay","queue","gauge"],gauge:["metric","of","max","warn","alarm","style","label"],strokePoint:["x","y"],subpath:["closed","coords"],inlineImage:["data","format"],endpoint:["elementID","port","portIndex","x","y"],extensionRef:["id","shape","version","params"],normalizedPoint:["x","y"],normalizedRect:["x","y","width","height"],connector:["start","end","routing","startHead","endHead","waypoints","hops","cost"],waypoint:["x","y"],timeline:["fps","duration","boil","settle","poster","tracks","camera","markers"],track:["element","keys","boil","follow","repeats","march"],keyframe:["t","x","y","width","height","rotation","strokeWidth","stroke","fill","visible","reveal","opacity","ease"],follow:["path","start","end","ease","reverse","orient","laps"],repeat:["start","end","count"],cameraKey:["t","x","y","width","height","ease"],marker:["t","name","loop"],click:["scene","url","set","toggle","reset"],hover:["stroke","fill","opacity"],override:["when","stroke","fill","textColor","opacity","strokeWidth","dash","text","reroute","offline","cost","capacity","delay"]},Qt=3600,mn=1e4,vr=e=>e===void 0||!Number.isFinite(e)||e===0?null:Math.min(Math.max(e,-mn),mn),pn=3,Nt={r:.12,g:.12,b:.13,a:1},Rr={r:0,g:0,b:0,a:0},Ar={r:.93,g:.93,b:.94,a:1},Tt=class extends Error{},Y=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),I=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0,V=e=>typeof e=="string"?e:void 0,kr=e=>Y(e)&&Object.values(e).every(t=>typeof t=="string")?{...e}:null,ft=e=>typeof e=="boolean"?e:void 0,wr="00000000-0000-0000-0000-000000000000",ce=/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/,dt=e=>typeof e=="string"?e.toUpperCase():void 0;function ct(e){return Number.isFinite(e)?Math.min(Math.max(e,0),Qt):e===1/0?Qt:0}function te(e){return Number.isFinite(e)?Math.min(Math.max(e,1),60):12}function Bt(e){let t=e.trim();return!/^(https?:\/\/|mailto:)/i.test(t)||[...t].length<=7||/[\u0000-\u001f\u007f-\u009f]/.test(t)?null:t}function he(e){return e?Bt(e):null}function bt(e){if(!Y(e))return;let t=I(e.r),n=I(e.g),r=I(e.b);if(!(t===void 0||n===void 0||r===void 0))return{r:t,g:n,b:r,a:I(e.a)??1}}var dn=class{constructor(){E(this,"warnings",[]);E(this,"seen",new Set)}warn(t){this.seen.has(t)||(this.seen.add(t),this.warnings.push(t))}fields(t,n){let r=Pr[n];for(let o of Object.keys(t))r.includes(o)||this.warn(`Unknown field "${o}" on ${n}, ignored`)}style(t){let n=Y(t)?t:{};this.fields(n,"style");let r=V(n.fillStyle)??"solid",o=V(n.dash)??"solid";return["solid","hachure","crossHatch","grid"].includes(r)||this.warn(`Unknown fill style "${r}", drawn solid`),["solid","dashed","dotted"].includes(o)||this.warn(`Unknown dash "${o}", drawn solid`),{stroke:bt(n.stroke)??{...Nt},fill:bt(n.fill)??{...Rr},fillStyle:["solid","hachure","crossHatch","grid"].includes(r)?r:"solid",strokeWidth:I(n.strokeWidth)??2,dash:["solid","dashed","dotted"].includes(o)?o:"solid",roughness:I(n.roughness)??1,bowing:I(n.bowing)??1,fontSize:I(n.fontSize)??18,font:V(n.font)||null,gridSize:I(n.gridSize)??null,opacity:I(n.opacity)??null,dashOffset:I(n.dashOffset)??null,textColor:bt(n.textColor)??null}}endpoint(t){let n=Y(t)?t:{},r=V(n.port),o=I(n.portIndex);return{elementID:dt(n.elementID)??null,port:r&&["top","right","bottom","left"].includes(r)?r:null,portIndex:o!==void 0&&Number.isInteger(o)&&o>=0?o:null,x:I(n.x)??0,y:I(n.y)??0}}connector(t){if(!Y(t))return null;this.fields(t,"connector");let n=(o,i)=>{let l=V(o);return l&&["none","arrow","triangle","dot","bar"].includes(l)?l:i},r=V(t.routing);return{start:this.endpoint(t.start),end:this.endpoint(t.end),routing:r&&["straight","curved","elbow"].includes(r)?r:"straight",startHead:n(t.startHead,"none"),endHead:n(t.endHead,"arrow"),waypoints:Array.isArray(t.waypoints)?t.waypoints.filter(Y).map(o=>(this.fields(o,"waypoint"),{x:I(o.x)??0,y:I(o.y)??0})):null,hops:typeof t.hops=="boolean"?t.hops:null,cost:typeof t.cost=="number"&&Number.isFinite(t.cost)?t.cost:null}}image(t,n){if(!Y(t))return null;let r=V(t.ref);if(r!==void 0)return n[r]??{data:"",format:"png"};let o=V(t.data);return o===void 0?null:this.picture(o,V(t.format))}picture(t,n){return Ko.test(t)?{data:t.replace(/\s+/g,""),format:n==="jpeg"?"jpeg":"png"}:(this.warn("Skipped a picture whose data isn't base64"),{data:"",format:"png"})}element(t,n){if(!Y(t))return null;this.fields(t,"element");let r=dt(t.id),o=V(t.kind),i=dt(t.layerID);if(!r||!o||!i)return this.warn("Skipped an element without an id, kind or layer"),null;Mr.includes(o)||this.warn(`Unknown element kind "${o}", drawn as a placeholder`);let l=Array.isArray(t.subpaths)?t.subpaths.filter(Y).map(s=>({closed:ft(s.closed)??!1,coords:Array.isArray(s.coords)?s.coords.filter(u=>typeof u=="number"):[]})):null;return{id:r,kind:o,layerID:i,x:I(t.x)??0,y:I(t.y)??0,width:I(t.width)??0,height:I(t.height)??0,style:this.style(t.style),seed:(I(t.seed)??1)>>>0,text:V(t.text)??null,connector:this.connector(t.connector),groupID:dt(t.groupID)??null,points:Array.isArray(t.points)?t.points.filter(Y).map(s=>({x:I(s.x)??0,y:I(s.y)??0})):null,path:Array.isArray(t.path)?t.path.filter(s=>typeof s=="number"):null,subpaths:l,evenOdd:ft(t.evenOdd)??null,rotation:I(t.rotation)??null,link:dt(t.link)??null,url:V(t.url)??null,anchor:V(t.anchor)??null,click:this.click(t.click),hover:this.hover(t.hover),when:V(t.when)??null,overrides:this.overrides(t.overrides),symbol:dt(t.symbol)??null,playback:this.playback(t.playback),offset:I(t.offset)??null,args:kr(t.args),image:this.image(t.image,n),reveal:I(t.reveal)??null,ports:Array.isArray(t.ports)?t.ports.map(s=>{let u=Y(s)?s:{};return{x:I(u.x)??0,y:I(u.y)??0}}):null,labelRect:this.labelRect(t.labelRect),extension:this.extension(t.extension),capacity:I(t.capacity)??null,delay:I(t.delay)??null,queue:t.queue===!0?!0:null,gauge:this.gauge(t.gauge)}}gauge(t){if(!Y(t))return null;this.fields(t,"gauge");let n=o=>typeof o=="number"&&Number.isFinite(o)?o:null,r=V(t.style);return{metric:V(t.metric)??"",of:typeof t.of=="string"&&ce.test(t.of)?t.of.toUpperCase():wr,max:n(t.max),warn:n(t.warn),alarm:n(t.alarm),style:r==="number"||r==="bar"||r==="dial"?r:null,label:V(t.label)??null}}labelRect(t){return Y(t)?(this.fields(t,"normalizedRect"),{x:I(t.x)??0,y:I(t.y)??0,width:I(t.width)??0,height:I(t.height)??0}):null}extension(t){if(!Y(t))return null;this.fields(t,"extensionRef");let n=V(t.id),r=V(t.shape),o=V(t.version);if(n===void 0||r===void 0||o===void 0)return this.warn("Skipped an extension without an id, shape or version"),null;let i={};if(Y(t.params))for(let[l,s]of Object.entries(t.params))(typeof s=="number"||typeof s=="boolean"||typeof s=="string")&&(i[l]=s);return{id:n,shape:r,version:o,params:i}}variables(t){if(!Y(t))return null;let n={};for(let[r,o]of Object.entries(t))typeof o=="boolean"&&(n[r]=o);return Object.keys(n).length>0?n:null}click(t){if(!Y(t))return null;this.fields(t,"click");let n=V(t.url),r=n===void 0?null:Bt(n);n!==void 0&&r===null&&this.warn("Skipped a click link that isn't http, https or mailto");let o=null;if(Y(t.set)){o={};for(let[s,u]of Object.entries(t.set))typeof u=="boolean"&&Le(s)&&(o[s]=u);Object.keys(o).length===0&&(o=null)}let i=typeof t.toggle=="string"?[t.toggle]:Array.isArray(t.toggle)&&t.toggle.every(s=>typeof s=="string")?t.toggle:null,l=i?i.filter(Le):null;return{scene:V(t.scene)??null,url:r,set:o,toggle:l&&l.length>0?l:null,reset:t.reset===!0?!0:null}}playback(t){let n=V(t);return n===void 0?null:["loop","once","still","click"].includes(n)?n:"loop"}symbol(t,n){if(!Y(t))return null;this.fields(t,"symbol");let r=dt(t.id);if(!r)return this.warn("Skipped a symbol without an id"),null;let o=l=>{let s=I(l);return Math.max(1,s??100)},i=(Array.isArray(t.layers)?t.layers:[]).filter(Y).flatMap(l=>{let s=dt(l.id);return s?[{id:s,name:V(l.name)??"",visible:ft(l.visible)??!0,locked:ft(l.locked)??!1}]:[]});return i.length===0&&i.push({id:`${r}-LAYER`,name:"Layer 1",visible:!0,locked:!1}),{id:r,name:V(t.name)??"Symbol",width:o(t.width),height:o(t.height),layers:i,elements:(Array.isArray(t.elements)?t.elements:[]).map(l=>this.element(l,n)).filter(l=>l!==null),timeline:this.timeline(t.timeline),button:ft(t.button)??null,params:kr(t.params)}}overrides(t){return Array.isArray(t)?t.filter(Y).map(n=>{this.fields(n,"override");let r=V(n.dash),o=null;if(Y(n.reroute)&&Object.values(n.reroute).every(i=>typeof i=="string"&&ce.test(i))){o={};for(let[i,l]of Object.entries(n.reroute))ce.test(i)&&(o[i.toUpperCase()]=l.toUpperCase());Object.keys(o).length===0&&(o=null)}return{when:V(n.when)??"",stroke:bt(n.stroke)??null,fill:bt(n.fill)??null,textColor:bt(n.textColor)??null,opacity:I(n.opacity)??null,strokeWidth:I(n.strokeWidth)??null,dash:r!==void 0&&["solid","dashed","dotted"].includes(r)?r:null,text:V(n.text)??null,reroute:o,offline:n.offline===!0?!0:null,cost:typeof n.cost=="number"&&Number.isFinite(n.cost)?n.cost:null,capacity:typeof n.capacity=="number"&&Number.isFinite(n.capacity)?n.capacity:null,delay:typeof n.delay=="number"&&Number.isFinite(n.delay)?n.delay:null}}):null}hover(t){return Y(t)?(this.fields(t,"hover"),{stroke:bt(t.stroke)??null,fill:bt(t.fill)??null,opacity:I(t.opacity)??null}):null}ease(t){let n=V(t);return n===void 0?null:Jo.includes(n)?n:(this.warn(`Unknown ease "${n}", played linear`),null)}keyframe(t){if(!Y(t))return null;this.fields(t,"keyframe");let n=I(t.t);if(n===void 0)return null;let r={t:n};for(let u of["x","y","width","height","rotation","strokeWidth","reveal","opacity"]){let c=I(t[u]);c!==void 0&&(r[u]=c)}let o=bt(t.stroke),i=bt(t.fill),l=ft(t.visible),s=this.ease(t.ease);return o&&(r.stroke=o),i&&(r.fill=i),l!==void 0&&(r.visible=l),s&&(r.ease=s),r}track(t){if(!Y(t))return null;this.fields(t,"track");let n=dt(t.element);if(!n)return null;let r=(Array.isArray(t.keys)?t.keys:[]).map(l=>this.keyframe(l)).filter(l=>l!==null&&l.t>=0&&l.t<=Qt);Oe(r,l=>l.t);let o=Array.isArray(t.follow)?t.follow.filter(Y).flatMap(l=>{let s=dt(l.path),u=I(l.start),c=I(l.end);return!s||u===void 0||c===void 0||u<0||c>Qt?[]:[{path:s,start:u,end:c,ease:this.ease(l.ease),reverse:ft(l.reverse)??null,orient:ft(l.orient)??null,laps:I(l.laps)??null}]}):null,i=Array.isArray(t.repeats)?t.repeats.filter(Y).flatMap(l=>{let s=I(l.start),u=I(l.end);if(s===void 0||u===void 0)return[];let c=I(l.count),a={start:s,end:u,count:c===void 0?null:Math.trunc(c)};return Ye(a)?[a]:[]}):null;return{element:n,keys:r,boil:ft(t.boil)??null,follow:o,repeats:i,march:vr(I(t.march))}}timeline(t){if(!Y(t))return null;this.fields(t,"timeline");let n=I(t.boil),r=Array.isArray(t.camera)?t.camera.filter(Y).flatMap(l=>{let s=I(l.t),u=I(l.x),c=I(l.y),a=I(l.width),h=I(l.height);return s===void 0||u===void 0||c===void 0||a===void 0||h===void 0?[]:a>1&&h>1&&s>=0?[{t:s,x:u,y:c,width:a,height:h,ease:this.ease(l.ease)}]:[]}):null;r&&Oe(r,l=>l.t);let o=Array.isArray(t.markers)?t.markers.filter(Y).flatMap(l=>{let s=I(l.t);return s!==void 0&&s>=0?[{t:s,name:V(l.name)??"",loop:ft(l.loop)??null}]:[]}):null;o&&Oe(o,l=>l.t);let i=I(t.poster);return{fps:te(I(t.fps)??12),duration:ct(I(t.duration)??0),boil:n!==void 0&&Number.isInteger(n)&&n>0?Math.min(n,1e4):null,settle:ft(t.settle)??null,poster:i===void 0?null:ct(i),tracks:(Array.isArray(t.tracks)?t.tracks:[]).map(l=>this.track(l)).filter(l=>l!==null),camera:r,markers:o}}page(t,n,r){if(!Y(t))throw new Tt(`Page ${r} is not an object`);this.fields(t,"page");let o=(Array.isArray(t.layers)?t.layers:[]).filter(Y).flatMap(i=>{let l=dt(i.id);return l?[{id:l,name:V(i.name)??"",visible:ft(i.visible)??!0,locked:ft(i.locked)??!1}]:[]});return o.length===0&&(this.warn(`Page ${r} has no layers`),o.push({id:"LAYER",name:"Layer 1",visible:!0,locked:!1})),{id:dt(t.id)??`PAGE-${r}`,name:V(t.name)??`Page ${r}`,layers:o,elements:(Array.isArray(t.elements)?t.elements:[]).map(i=>this.element(i,n)).filter(i=>i!==null),theme:V(t.theme)??null,timeline:this.timeline(t.timeline),symbols:Array.isArray(t.symbols)?t.symbols.map(i=>this.symbol(i,n)).filter(i=>i!==null):null,variables:this.variables(t.variables),flows:Array.isArray(t.flows)?t.flows.filter(Y).map(i=>this.flow(i)):null}}flow(t){this.fields(t,"flow");let n=o=>typeof o=="string"&&ce.test(o)?o.toUpperCase():wr,r=o=>{let i=I(o);return i!==void 0&&Number.isFinite(i)?i:null};return{id:n(t.id),from:n(t.from),to:Array.isArray(t.to)&&t.to.every(o=>typeof o=="string")?t.to.filter(o=>ce.test(o)).map(o=>o.toUpperCase()):[],every:r(t.every),speed:r(t.speed),size:r(t.size),color:Y(t.color)&&["r","g","b","a"].every(o=>typeof t.color[o]=="number")?bt(t.color)??null:null,when:V(t.when)??null,spread:t.spread===!0?!0:null,volume:r(t.volume),overrides:Array.isArray(t.overrides)&&t.overrides.length>0?t.overrides.filter(Y).map(o=>(this.fields(o,"flowOverride"),{when:V(o.when)??"",volume:r(o.volume)})):null}}},Ko=/^[A-Za-z0-9+/=\s]*$/;function Ye(e){return Number.isFinite(e.start)&&Number.isFinite(e.end)&&e.start>=0&&e.end-e.start>.001&&e.end<=Qt&&(e.count===null||e.count>=1&&e.count<=1e4)}function Oe(e,t){let n=e.map((r,o)=>[r,o]);n.sort((r,o)=>t(r[0])-t(o[0])||r[1]-o[1]);for(let r=0;r<e.length;r++)e[r]=n[r][0]}function fe(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch(l){throw new Tt(`Not JSON: ${l.message}`)}if(!Y(t))throw new Tt("Not a Dottie drawing");let n=I(t.version);if(n===void 0)throw new Tt("Not a Dottie drawing (no version)");if(!Array.isArray(t.pages)||t.pages.length===0)throw new Tt("A drawing needs at least one page");let r=new dn;r.fields(t,"file"),n>fn&&r.warn(`File version ${n} is newer than this player knows (${fn}); some things may not show`);let o={};if(Y(t.images))for(let[l,s]of Object.entries(t.images))Y(s)&&typeof s.data=="string"&&(o[l]=r.picture(s.data,V(s.format)));let i=t.pages.map((l,s)=>r.page(l,o,s+1));if(new Set(i.map(l=>l.id)).size!==i.length)throw new Tt("Two pages share an id");return{version:n,pages:i,warnings:r.warnings}}function ee(e){return .2126*e.r+.7152*e.g+.0722*e.b}function _t(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}function me(e){return _t(e,Nt)||_t(e,Ar)}function at(e){return{...e,style:{...e.style,stroke:{...e.style.stroke},fill:{...e.style.fill},textColor:e.style.textColor?{...e.style.textColor}:null},connector:e.connector?{...e.connector,start:{...e.connector.start},end:{...e.connector.end},waypoints:e.connector.waypoints?.map(t=>({...t}))??null}:null,gauge:e.gauge?{...e.gauge}:e.gauge}}function It(e){if(e.layers.length<=1)return e.elements;let t=new Map;e.layers.forEach((r,o)=>{t.has(r.id)||t.set(r.id,o)});let n=e.layers.map(()=>[]);for(let r of e.elements)n[t.get(r.layerID)??0].push(r);return n.flat()}function qo(e){let t=new Map;for(let n of e.elements)t.has(n.id)||t.set(n.id,n);return t}var Sr=.60205078125,Er=.92822265625,Tr=.23583984375,Ut={"Architects Daughter":{faces:{regular:{ascent:.986328125,descent:.4033203125,k:{},leading:0,w:{" ":400.39,_:686.52,"-":310.55,"\u2013":310.55,"\u2014":411.13,",":177.73,";":124.02,":":166.99,"!":134.77,"?":505.86,".":140.63,"\u2026":422.85,"\xB7":140.63,"'":162.11,"\u2018":162.11,"\u2019":162.11,'"':236.33,"\u201C":236.33,"\u201D":236.33,"(":297.85,")":351.56,"[":424.8,"]":541.02,"{":352.54,"}":478.52,"@":1042.97,"*":507.81,"/":455.08,"\\":501.95,"&":669.92,"#":637.7,"%":518.55,"\u2022":192.38,"`":171.88,"^":306.64,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":524.41,"\xD7":470.7,"<":475.59,"=":492.19,">":471.68,"|":145.51,"~":444.34,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556.64,0:630.86,1:127.93,2:572.27,3:508.79,4:680.66,5:708.01,6:626.95,7:615.23,8:648.44,9:569.34,a:508.79,A:640.63,b:561.52,B:710.94,c:632.81,C:708.01,d:512.7,D:648.44,e:541.02,E:591.8,\u00E9:541.02,f:593.75,F:692.38,g:515.63,G:692.38,h:495.12,H:605.47,i:151.37,I:151.37,j:177.73,J:529.3,k:614.26,K:605.47,l:157.23,L:692.38,m:778.32,M:827.15,n:500,N:626.95,o:562.5,O:669.92,p:556.64,P:637.7,q:513.67,Q:712.89,r:551.76,R:712.89,s:501.95,S:642.58,t:404.3,T:623.05,u:507.81,U:561.52,v:518.55,V:626.95,w:808.59,W:940.43,x:470.7,X:599.61,y:548.83,Y:534.18,z:495.12,Z:784.18}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},Caveat:{faces:{bold:{ascent:.9600067138671875,descent:.3000030517578125,k:{AC:-20,AE:-10,AG:-10,AH:-10,AI:10,Aj:10,AJ:10,AL:-10,AM:10,An:-10,AO:-20,AP:-10,Aq:-10,AQ:-20,Ar:-10,As:-10,AS:-35,AT:-50,Au:-10,AU:-20,av:-20,Av:-5,AV:-40,aw:-10,AW:-20,Ax:10,AX:-10,ay:-20,Ay:-10,AY:-65,Az:20,AZ:-10,ba:-10,bc:-10,BC:-20,bd:-10,Bf:10,BF:-20,Bg:10,bh:-5,Bi:10,BI:-10,bj:-5,Bj:10,BJ:-10,Bk:10,Bl:10,Bm:10,BP:-10,BR:-10,BS:-20,BT:-40,bu:-10,BU:-20,BV:-50,BW:-50,bx:-10,Bx:10,BX:-40,by:-10,BY:-65,Bz:40,BZ:-30,CA:-20,Cc:-5,CC:-10,Cd:-10,CE:-10,CG:-10,Cj:10,CJ:-10,CK:-10,cl:10,Cl:5,Cn:-5,CO:-10,CP:-10,CQ:-20,Cs:-10,CS:-10,Ct:10,CT:-20,Cu:-10,CU:-10,Cv:-20,CV:-20,cw:-10,Cw:-10,CW:-20,Cx:20,CX:-30,cy:-5,CY:-35,Cz:20,CZ:-40,DA:-10,Db:10,Dc:10,De:10,Df:20,DF:-10,Dg:10,Dh:10,Di:15,DI:-10,Dj:5,DJ:-10,Dk:10,Dl:10,Dm:20,DM:-5,dn:-10,Do:10,Dp:10,Dq:10,Dr:10,Ds:10,dt:10,Dt:20,DT:-40,du:-10,Dv:30,DV:-30,Dw:20,DW:-10,Dx:20,DX:-50,Dy:10,DY:-50,Dz:30,DZ:-30,EC:-10,ED:-10,EG:-10,EJ:-10,el:10,EO:-10,EQ:-20,ES:-40,ET:-10,EU:-20,Ev:-10,EV:-25,Ew:-10,EW:-30,Ex:10,EX:-40,Ey:-10,EY:-50,Ez:20,EZ:-20,fa:-10,Fa:-30,FA:-40,Fc:-20,FC:-10,Fd:-20,FD:20,Fe:-15,ff:10,Ff:10,FF:20,Fg:-10,fh:10,Fh:20,fi:10,Fi:10,FI:10,fj:10,Fj:10,FJ:20,Fk:10,fl:20,Fl:20,FL:10,fm:10,FM:-10,Fn:-20,FN:10,Fo:-20,FO:10,Fp:-10,FP:-10,Fq:-10,FQ:10,Fr:-10,FS:10,ft:40,Ft:10,FT:-30,Fu:-10,fv:10,Fv:10,FV:10,FW:10,fy:10,FY:10,Fz:10,FZ:-10,GA:-10,Gf:10,Gh:10,gi:10,Gi:10,GI:-10,Gj:10,GJ:-10,Gk:10,Gl:10,Gm:10,GM:-10,GN:10,GP:-20,GS:-10,Gt:10,GU:-10,Gv:10,GV:-10,GW:-20,Gx:10,GX:-40,gy:10,GY:-40,Gz:10,GZ:-20,Hb:10,hf:-10,Hf:10,hg:-20,Hh:10,Hi:10,Hj:20,Hk:10,Hl:10,Hm:10,hq:-10,hs:-10,Ht:20,hv:-30,Hv:10,hw:-15,Hx:20,hy:-30,Hy:10,Hz:20,Ia:-10,IA:10,Ib:10,Ic:-10,Id:-10,ID:30,Ie:-10,if:10,If:20,IF:40,Ig:-10,Ih:30,Ii:20,II:30,Ij:30,IJ:40,Ik:20,IK:10,Il:20,IL:10,IM:30,In:-10,IN:20,Io:-10,Ip:10,Iq:-20,Ir:-10,IR:10,Is:-10,It:10,Iu:-10,IU:10,iv:10,Iv:-20,IV:30,Iw:-25,IW:20,Ix:10,IX:10,Iy:-10,IY:30,Iz:20,IZ:20,Ja:-10,Jb:10,Jc:-10,Jd:-10,Je:-10,Jf:10,Jh:10,Ji:10,JI:-10,Jj:20,JJ:10,Jk:10,Jl:20,Jn:-10,Jo:-10,JO:-10,Jp:10,JP:-10,Jq:-10,JQ:-10,JR:-10,jt:10,Jt:20,JT:10,ju:-10,Ju:-20,JU:-10,jx:10,JX:-25,jy:10,JY:-20,jz:10,Jz:10,JZ:-20,Ka:-40,kc:20,Kc:-40,KC:-10,Kd:-40,KD:10,ke:10,Ke:-40,kf:20,Kf:10,KF:20,Kg:-40,KG:-10,kh:10,Kh:10,ki:10,Ki:10,Kj:40,KJ:20,kk:20,Kk:10,kl:20,Kl:10,km:10,KM:20,Kn:-40,ko:10,Ko:-50,KO:-10,Kp:10,Kq:-50,kr:10,Ks:-40,kt:10,Kt:10,KT:-10,ku:10,Ku:-60,kv:10,Kv:-30,Kw:-40,Kx:-10,KX:-10,ky:-10,Ky:-30,kz:10,Lb:-10,LC:-20,LE:-20,Lf:10,Lg:-10,LG:-20,Lh:-10,Li:10,LI:-40,Lj:20,Lk:10,ll:10,Ll:10,LL:-20,Ln:-20,LO:-25,Lp:10,Lq:-40,LQ:-30,Ls:-10,LS:-65,lt:10,Lt:-10,LT:-70,Lu:-40,LU:-45,Lv:-60,LV:-70,Lw:-40,LW:-40,Lx:10,Ly:-20,LY:-90,lz:20,Lz:30,LZ:-10,Mb:10,md:10,Mf:10,Mh:10,Mi:10,MJ:10,Mk:10,Ml:10,mo:20,Mp:10,MP:-10,Mq:-10,MQ:-10,MS:-20,Mt:20,MT:-30,Mu:-10,MU:-20,mv:-15,Mv:10,MV:-20,mw:-10,MW:-30,Mx:10,MX:-10,my:-10,My:-10,MY:-50,Mz:10,MZ:-10,nb:-15,Nb:10,Ne:10,Nf:10,Ng:10,Nh:10,Ni:20,Nj:20,Nk:20,Nl:20,Nm:10,Nq:10,ns:-5,nt:-10,Nt:20,nu:-10,nv:-20,Nv:30,nw:-20,NW:-10,Nx:30,NX:-20,ny:-20,Ny:10,NY:-20,Nz:40,NZ:-10,OA:-10,OD:-10,Of:20,Og:20,Oh:10,Oi:20,OI:-10,oj:-5,Oj:20,Ok:10,Ol:20,OL:10,Om:20,Oo:10,Op:10,Oq:10,OQ:10,Os:10,Ot:20,OT:-10,ou:-10,ov:5,Ov:30,OV:-10,ow:-10,Ow:10,OW:-10,Ox:30,OX:-40,oy:-10,Oy:20,OY:-40,Oz:30,OZ:-20,Pa:-40,PA:-40,Pc:-30,Pd:-40,PD:-10,Pe:-20,Pf:10,Pg:-10,Ph:10,Pi:10,PI:-10,Pj:20,PJ:-10,Pk:10,Pl:10,Pm:10,PM:-30,pn:-10,Pn:-10,PN:-10,Po:-30,Pq:-30,Ps:-20,PS:10,Pt:20,pu:-10,Pu:-30,Pv:10,Px:10,PX:-35,py:-10,PY:-20,Pz:10,PZ:-50,Qb:10,Qf:20,Qg:20,qh:-10,Qh:10,Qi:20,qj:10,Qj:90,QJ:80,Qk:10,Ql:20,Qm:20,qn:-10,qo:-10,Qp:20,Qt:30,QT:-10,qu:-10,Qv:20,QV:-10,QW:-10,Qx:20,QX:-20,Qy:50,QY:-30,Qz:40,QZ:-10,ra:-5,Ra:-10,RA:-25,RB:-10,Rc:-10,RC:-20,Rd:-10,RD:10,Re:-10,RE:-20,Rf:20,RF:10,Rg:-10,RG:-10,ri:5,RI:-10,Rj:30,RJ:30,RL:-10,RM:-20,Rn:-10,RN:10,Ro:-10,RO:-10,Rp:20,Rq:-30,RQ:-10,Rr:-10,Rs:-10,Rt:10,RT:-10,Ru:-30,RU:-20,rv:20,RV:-10,Rw:-10,RW:-10,Rx:10,RX:-20,Ry:10,RY:-30,Rz:20,RZ:-45,Sa:-10,Sb:10,Sc:-20,Sd:-25,SD:20,Se:-20,SE:-10,sf:10,Sf:20,SF:30,Sg:-20,Sh:20,Si:20,SI:10,Sj:30,SJ:30,Sk:10,Sl:20,SL:20,Sn:-20,SN:10,So:-10,SO:10,Sq:-20,Sr:-10,Ss:-10,st:10,St:20,Su:-20,sv:20,Sv:-50,SV:20,Sw:-30,SW:10,sx:15,Sx:10,Sy:-15,SY:10,sz:20,Sz:20,SZ:-10,Ta:-90,TA:-50,Tc:-80,TC:-10,Td:-110,TD:10,Te:-90,TE:-10,Tf:20,TF:30,Tg:-80,TG:-10,Th:20,ti:5,TI:10,Tj:20,Tk:10,Tl:20,Tm:-50,TM:-30,Tn:-90,To:-90,Tp:-80,Tq:-120,Tr:-80,Ts:-80,Tt:10,TT:-30,Tu:-90,tv:10,Tv:-70,TV:10,Tw:-100,tx:20,Tx:-60,TX:-10,Ty:-50,tz:30,Tz:-40,TZ:-10,ub:-10,Ub:20,UE:10,uf:10,Uf:30,UF:10,Ug:10,Uh:30,ui:10,Ui:30,Uj:40,uk:10,Uk:20,ul:10,Ul:30,Um:30,Up:10,UQ:30,Ur:10,UR:10,Us:10,Ut:50,UT:20,Uu:10,UU:10,Uv:50,UV:10,Uw:10,ux:10,Ux:30,UX:-10,Uy:10,UY:-10,uz:30,Uz:30,UZ:-10,va:-10,Va:-50,VA:-55,Vc:-30,VC:-20,Vd:-30,Ve:-30,VE:-20,vf:10,VF:10,Vg:-30,VG:-10,vi:10,Vm:-10,VM:-30,Vn:-30,VN:-10,Vo:-30,VO:-10,Vp:-20,VP:-20,Vq:-30,VQ:-10,Vr:-20,Vs:-30,vt:10,VT:20,Vu:-30,VU:-10,vv:20,Vw:-30,vx:20,VX:-20,vy:10,VY:-10,vz:10,VZ:-20,WA:-20,Wb:20,Wd:-10,WD:20,We:10,Wf:30,WF:20,Wh:30,wi:10,Wi:30,WI:10,Wj:40,WJ:20,Wk:20,Wl:40,WL:10,Wm:10,WM:-10,WS:10,Wt:40,WT:30,Wv:30,WV:10,wx:10,Wx:20,WX:-10,Wy:20,WY:10,Wz:30,WZ:-10,XA:-25,XC:-20,Xe:-10,XE:-10,xf:10,Xf:10,Xg:-10,XG:-20,xi:10,Xi:10,XI:-10,Xj:30,xk:10,Xk:10,xl:10,Xl:20,Xm:10,XM:-25,xn:-10,XN:-10,Xo:-10,XO:-20,xp:10,Xp:10,XP:-10,xq:-10,Xq:-40,XQ:-25,XS:-20,xu:-5,Xu:-30,XU:-20,xv:10,Xv:-20,Xw:-30,xx:15,Xx:10,XX:-30,xy:-10,Xy:-20,XY:-20,xz:10,Xz:30,ya:-10,Ya:-70,YA:-55,Yc:-60,YC:-30,yd:-10,Yd:-60,YD:10,ye:10,Ye:-60,YE:-30,YF:20,Yg:-60,YG:-30,YH:-10,YI:10,YJ:10,Ym:-30,YM:-35,yn:-10,Yn:-60,Yo:-60,YO:-20,Yp:-50,YP:-10,Yq:-60,YQ:-10,Yr:-60,YR:-10,Ys:-60,YS:-10,yt:10,YT:-15,yu:-10,Yu:-60,yv:10,Yv:-20,Yw:-50,yx:10,Yx:-50,YX:-30,Yy:-40,YY:-10,Yz:-30,YZ:-40,Za:-20,ZA:-20,Zb:-10,ZB:-10,Zc:-10,ZC:-20,Zd:-30,ZD:-10,Ze:-40,ZE:-20,zf:10,Zg:-40,ZG:-20,zi:10,Zj:10,Zk:10,ZL:-10,Zm:-10,Zn:-50,Zo:-30,ZO:-30,Zp:-10,ZP:-10,Zq:-50,ZQ:-10,Zr:-40,ZR:-10,Zs:-30,ZS:-20,zt:10,Zt:-10,Zu:-30,ZU:-10,zv:10,Zv:-20,Zw:-40,ZW:-10,zx:10,Zx:-10,ZX:-10,Zy:-30,ZY:-20,zz:20,Zz:10,ZZ:-10},leading:0,w:{" ":242,_:446,"-":326,"\u2013":446,"\u2014":566,",":198,";":198,":":198,"!":210,"?":374,".":198,"\u2026":594,"\xB7":187,"'":117,"\u2018":117,"\u2019":117,'"':237,"\u201C":267,"\u201D":267,"(":330,")":330,"[":330,"]":330,"{":330,"}":330,"@":643,"*":363,"/":330,"\\":330,"&":564,"#":559,"%":600,"\u2022":187,"`":353,"^":446,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":446,"\xD7":446,"<":446,"=":446,">":446,"|":330,"~":446,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:450,0:450,1:450,2:450,3:450,4:450,5:434,6:471,7:446,8:450,9:438,a:446,A:511,b:444,B:523,c:364,C:477,d:402,D:587,e:334,E:534,\u00E9:325,f:300,F:466,g:364,G:494,h:473,H:574,i:196,I:409,j:213,J:315,k:374,K:508,l:178,L:426,m:569,M:729,n:459,N:619,o:362,O:505,p:378,P:468,q:377,Q:492,r:360,R:544,s:350,S:495,t:331,T:458,u:370,U:482,v:331,V:490,w:517,W:720,x:343,X:524,y:341,Y:504,z:315,Z:522}},regular:{ascent:.9600067138671875,descent:.3000030517578125,k:{AC:-20,AE:-10,AG:-10,AH:-10,AI:10,Aj:10,AJ:10,AL:-10,AM:10,An:-10,AO:-20,AP:-10,Aq:-10,AQ:-20,Ar:-10,As:-10,AS:-35,AT:-50,Au:-10,AU:-20,av:-20,Av:-5,AV:-40,aw:-10,AW:-20,Ax:10,AX:-10,ay:-20,Ay:-10,AY:-65,Az:20,AZ:-10,ba:-10,bc:-10,BC:-20,bd:-10,Bf:10,BF:-20,Bg:10,bh:-5,Bi:10,BI:-10,bj:-5,Bj:10,BJ:-10,Bk:10,Bl:10,Bm:10,BP:-10,BR:-10,BS:-20,BT:-40,bu:-10,BU:-20,BV:-50,BW:-50,bx:-10,Bx:10,BX:-40,by:-10,BY:-65,Bz:40,BZ:-30,CA:-20,Cc:-5,CC:-10,Cd:-10,CE:-10,CG:-10,Cj:10,CJ:-10,CK:-10,cl:10,Cl:5,Cn:-5,CO:-10,CP:-10,CQ:-20,Cs:-10,CS:-10,Ct:10,CT:-20,Cu:-10,CU:-10,Cv:-20,CV:-20,cw:-10,Cw:-10,CW:-20,Cx:20,CX:-30,cy:-5,CY:-35,Cz:20,CZ:-40,DA:-10,Db:10,Dc:10,De:10,Df:20,DF:-10,Dg:10,Dh:10,Di:15,DI:-10,Dj:5,DJ:-10,Dk:10,Dl:10,Dm:20,DM:-5,dn:-10,Do:10,Dp:10,Dq:10,Dr:10,Ds:10,dt:10,Dt:20,DT:-40,du:-10,Dv:30,DV:-30,Dw:20,DW:-10,Dx:20,DX:-50,Dy:10,DY:-50,Dz:30,DZ:-30,EC:-10,ED:-10,EG:-10,EJ:-10,el:10,EO:-10,EQ:-20,ES:-40,ET:-10,EU:-20,Ev:-10,EV:-25,Ew:-10,EW:-30,Ex:10,EX:-40,Ey:-10,EY:-50,Ez:20,EZ:-20,fa:-10,Fa:-30,FA:-40,Fc:-20,FC:-10,Fd:-20,FD:20,Fe:-15,ff:10,Ff:10,FF:20,Fg:-10,fh:10,Fh:20,fi:10,Fi:10,FI:10,fj:10,Fj:10,FJ:20,Fk:10,fl:20,Fl:20,FL:10,fm:10,FM:-10,Fn:-20,FN:10,Fo:-20,FO:10,Fp:-10,FP:-10,Fq:-10,FQ:10,Fr:-10,FS:10,ft:40,Ft:10,FT:-30,Fu:-10,fv:10,Fv:10,FV:10,FW:10,fy:10,FY:10,Fz:10,FZ:-10,GA:-10,Gf:10,Gh:10,gi:10,Gi:10,GI:-10,Gj:10,GJ:-10,Gk:10,Gl:10,Gm:10,GM:-10,GN:10,GP:-20,GS:-10,Gt:10,GU:-10,Gv:10,GV:-10,GW:-20,Gx:10,GX:-40,gy:10,GY:-40,Gz:10,GZ:-20,Hb:10,hf:-10,Hf:10,hg:-20,Hh:10,Hi:10,Hj:20,Hk:10,Hl:10,Hm:10,hq:-10,hs:-10,Ht:20,hv:-30,Hv:10,hw:-15,Hx:20,hy:-30,Hy:10,Hz:20,Ia:-10,IA:10,Ib:10,Ic:-10,Id:-10,ID:30,Ie:-10,if:10,If:20,IF:40,Ig:-10,Ih:30,Ii:20,II:30,Ij:30,IJ:40,Ik:20,IK:10,Il:20,IL:10,IM:30,In:-10,IN:20,Io:-10,Ip:10,Iq:-20,Ir:-10,IR:10,Is:-10,It:10,Iu:-10,IU:10,iv:10,Iv:-20,IV:30,Iw:-25,IW:20,Ix:10,IX:10,Iy:-10,IY:30,Iz:20,IZ:20,Ja:-10,Jb:10,Jc:-10,Jd:-10,Je:-10,Jf:10,Jh:10,Ji:10,JI:-10,Jj:20,JJ:10,Jk:10,Jl:20,Jn:-10,Jo:-10,JO:-10,Jp:10,JP:-10,Jq:-10,JQ:-10,JR:-10,jt:10,Jt:20,JT:10,ju:-10,Ju:-20,JU:-10,jx:10,JX:-25,jy:10,JY:-20,jz:10,Jz:10,JZ:-20,Ka:-40,kc:20,Kc:-40,KC:-10,Kd:-40,KD:10,ke:10,Ke:-40,kf:20,Kf:10,KF:20,Kg:-40,KG:-10,kh:10,Kh:10,ki:10,Ki:10,Kj:40,KJ:20,kk:20,Kk:10,kl:20,Kl:10,km:10,KM:20,Kn:-40,ko:10,Ko:-50,KO:-10,Kp:10,Kq:-50,kr:10,Ks:-40,kt:10,Kt:10,KT:-10,ku:10,Ku:-60,kv:10,Kv:-30,Kw:-40,Kx:-10,KX:-10,ky:-10,Ky:-30,kz:10,Lb:-10,LC:-20,LE:-20,Lf:10,Lg:-10,LG:-20,Lh:-10,Li:10,LI:-40,Lj:20,Lk:10,ll:10,Ll:10,LL:-20,Ln:-20,LO:-25,Lp:10,Lq:-40,LQ:-30,Ls:-10,LS:-65,lt:10,Lt:-10,LT:-70,Lu:-40,LU:-45,Lv:-60,LV:-70,Lw:-40,LW:-40,Lx:10,Ly:-20,LY:-90,lz:20,Lz:30,LZ:-10,Mb:10,md:10,Mf:10,Mh:10,Mi:10,MJ:10,Mk:10,Ml:10,mo:20,Mp:10,MP:-10,Mq:-10,MQ:-10,MS:-20,Mt:20,MT:-30,Mu:-10,MU:-20,mv:-15,Mv:10,MV:-20,mw:-10,MW:-30,Mx:10,MX:-10,my:-10,My:-10,MY:-50,Mz:10,MZ:-10,nb:-15,Nb:10,Ne:10,Nf:10,Ng:10,Nh:10,Ni:20,Nj:20,Nk:20,Nl:20,Nm:10,Nq:10,ns:-5,nt:-10,Nt:20,nu:-10,nv:-20,Nv:30,nw:-20,NW:-10,Nx:30,NX:-20,ny:-20,Ny:10,NY:-20,Nz:40,NZ:-10,OA:-10,OD:-10,Of:20,Og:20,Oh:10,Oi:20,OI:-10,oj:-5,Oj:20,Ok:10,Ol:20,OL:10,Om:20,Oo:10,Op:10,Oq:10,OQ:10,Os:10,Ot:20,OT:-10,ou:-10,ov:5,Ov:30,OV:-10,ow:-10,Ow:10,OW:-10,Ox:30,OX:-40,oy:-10,Oy:20,OY:-40,Oz:30,OZ:-20,Pa:-40,PA:-40,Pc:-30,Pd:-40,PD:-10,Pe:-20,Pf:10,Pg:-10,Ph:10,Pi:10,PI:-10,Pj:20,PJ:-10,Pk:10,Pl:10,Pm:10,PM:-30,pn:-10,Pn:-10,PN:-10,Po:-30,Pq:-30,Ps:-20,PS:10,Pt:20,pu:-10,Pu:-30,Pv:10,Px:10,PX:-35,py:-10,PY:-20,Pz:10,PZ:-50,Qb:10,Qf:20,Qg:20,qh:-10,Qh:10,Qi:20,qj:10,Qj:90,QJ:80,Qk:10,Ql:20,Qm:20,qn:-10,qo:-10,Qp:20,Qt:30,QT:-10,qu:-10,Qv:20,QV:-10,QW:-10,Qx:20,QX:-20,Qy:50,QY:-30,Qz:40,QZ:-10,ra:-5,Ra:-10,RA:-25,RB:-10,Rc:-10,RC:-20,Rd:-10,RD:10,Re:-10,RE:-20,Rf:20,RF:10,Rg:-10,RG:-10,ri:5,RI:-10,Rj:30,RJ:30,RL:-10,RM:-20,Rn:-10,RN:10,Ro:-10,RO:-10,Rp:20,Rq:-30,RQ:-10,Rr:-10,Rs:-10,Rt:10,RT:-10,Ru:-30,RU:-20,rv:20,RV:-10,Rw:-10,RW:-10,Rx:10,RX:-20,Ry:10,RY:-30,Rz:20,RZ:-45,Sa:-10,Sb:10,Sc:-20,Sd:-25,SD:20,Se:-20,SE:-10,sf:10,Sf:20,SF:30,Sg:-20,Sh:20,Si:20,SI:10,Sj:30,SJ:30,Sk:10,Sl:20,SL:20,Sn:-20,SN:10,So:-10,SO:10,Sq:-20,Sr:-10,Ss:-10,st:10,St:20,Su:-20,sv:20,Sv:-50,SV:20,Sw:-30,SW:10,sx:15,Sx:10,Sy:-15,SY:10,sz:20,Sz:20,SZ:-10,Ta:-90,TA:-50,Tc:-80,TC:-10,Td:-110,TD:10,Te:-90,TE:-10,Tf:20,TF:30,Tg:-80,TG:-10,Th:20,ti:5,TI:10,Tj:20,Tk:10,Tl:20,Tm:-50,TM:-30,Tn:-90,To:-90,Tp:-80,Tq:-120,Tr:-80,Ts:-80,Tt:10,TT:-30,Tu:-90,tv:10,Tv:-70,TV:10,Tw:-100,tx:20,Tx:-60,TX:-10,Ty:-50,tz:30,Tz:-40,TZ:-10,ub:-10,Ub:20,UE:10,uf:10,Uf:30,UF:10,Ug:10,Uh:30,ui:10,Ui:30,Uj:40,uk:10,Uk:20,ul:10,Ul:30,Um:30,Up:10,UQ:30,Ur:10,UR:10,Us:10,Ut:50,UT:20,Uu:10,UU:10,Uv:50,UV:10,Uw:10,ux:10,Ux:30,UX:-10,Uy:10,UY:-10,uz:30,Uz:30,UZ:-10,va:-10,Va:-50,VA:-55,Vc:-30,VC:-20,Vd:-30,Ve:-30,VE:-20,vf:10,VF:10,Vg:-30,VG:-10,vi:10,Vm:-10,VM:-30,Vn:-30,VN:-10,Vo:-30,VO:-10,Vp:-20,VP:-20,Vq:-30,VQ:-10,Vr:-20,Vs:-30,vt:10,VT:20,Vu:-30,VU:-10,vv:20,Vw:-30,vx:20,VX:-20,vy:10,VY:-10,vz:10,VZ:-20,WA:-20,Wb:20,Wd:-10,WD:20,We:10,Wf:30,WF:20,Wh:30,wi:10,Wi:30,WI:10,Wj:40,WJ:20,Wk:20,Wl:40,WL:10,Wm:10,WM:-10,WS:10,Wt:40,WT:30,Wv:30,WV:10,wx:10,Wx:20,WX:-10,Wy:20,WY:10,Wz:30,WZ:-10,XA:-25,XC:-20,Xe:-10,XE:-10,xf:10,Xf:10,Xg:-10,XG:-20,xi:10,Xi:10,XI:-10,Xj:30,xk:10,Xk:10,xl:10,Xl:20,Xm:10,XM:-25,xn:-10,XN:-10,Xo:-10,XO:-20,xp:10,Xp:10,XP:-10,xq:-10,Xq:-40,XQ:-25,XS:-20,xu:-5,Xu:-30,XU:-20,xv:10,Xv:-20,Xw:-30,xx:15,Xx:10,XX:-30,xy:-10,Xy:-20,XY:-20,xz:10,Xz:30,ya:-10,Ya:-70,YA:-55,Yc:-60,YC:-30,yd:-10,Yd:-60,YD:10,ye:10,Ye:-60,YE:-30,YF:20,Yg:-60,YG:-30,YH:-10,YI:10,YJ:10,Ym:-30,YM:-35,yn:-10,Yn:-60,Yo:-60,YO:-20,Yp:-50,YP:-10,Yq:-60,YQ:-10,Yr:-60,YR:-10,Ys:-60,YS:-10,yt:10,YT:-15,yu:-10,Yu:-60,yv:10,Yv:-20,Yw:-50,yx:10,Yx:-50,YX:-30,Yy:-40,YY:-10,Yz:-30,YZ:-40,Za:-20,ZA:-20,Zb:-10,ZB:-10,Zc:-10,ZC:-20,Zd:-30,ZD:-10,Ze:-40,ZE:-20,zf:10,Zg:-40,ZG:-20,zi:10,Zj:10,Zk:10,ZL:-10,Zm:-10,Zn:-50,Zo:-30,ZO:-30,Zp:-10,ZP:-10,Zq:-50,ZQ:-10,Zr:-40,ZR:-10,Zs:-30,ZS:-20,zt:10,Zt:-10,Zu:-30,ZU:-10,zv:10,Zv:-20,Zw:-40,ZW:-10,zx:10,Zx:-10,ZX:-10,Zy:-30,ZY:-20,zz:20,Zz:10,ZZ:-10},leading:0,w:{" ":242,_:446,"-":326,"\u2013":446,"\u2014":566,",":198,";":198,":":198,"!":210,"?":374,".":198,"\u2026":594,"\xB7":187,"'":117,"\u2018":117,"\u2019":117,'"':237,"\u201C":267,"\u201D":267,"(":330,")":330,"[":330,"]":330,"{":330,"}":330,"@":643,"*":363,"/":330,"\\":330,"&":564,"#":559,"%":600,"\u2022":187,"`":353,"^":446,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":446,"\xD7":446,"<":446,"=":446,">":446,"|":330,"~":446,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:450,0:450,1:450,2:450,3:450,4:450,5:450,6:450,7:450,8:450,9:450,a:437,A:502,b:435,B:520,c:355,C:472,d:393,D:578,e:325,E:529,\u00E9:325,f:291,F:454,g:355,G:487,h:464,H:563,i:187,I:400,j:204,J:306,k:365,K:498,l:169,L:426,m:560,M:720,n:450,N:599,o:353,O:496,p:378,P:464,q:377,Q:502,r:360,R:537,s:341,S:486,t:331,T:458,u:370,U:482,v:331,V:490,w:517,W:720,x:343,X:524,y:341,Y:504,z:315,Z:522}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},"Helvetica Neue":{faces:{bold:{ascent:.975006103515625,descent:.2169952392578125,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-30,fi:20,fl:20,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0290069580078125,w:{" ":278,_:500,"-":407,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":278,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':463,"\u201C":463,"\u201D":463,"(":296,")":296,"[":333,"]":333,"{":333,"}":333,"@":800,"*":407,"/":371,"\\":371,"&":685,"#":556,"%":1e3,"\u2022":350,"`":259,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":223,"~":600,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:574,A:685,b:611,B:704,c:574,C:741,d:611,D:741,e:574,E:648,\u00E9:574,f:333,F:593,g:611,G:759,h:593,H:741,i:258,I:295,j:278,J:556,k:574,K:722,l:258,L:593,m:906,M:907,n:593,N:741,o:611,O:778,p:611,P:667,q:611,Q:778,r:389,R:722,s:537,S:649,t:352,T:611,u:593,U:741,v:520,V:630,w:814,W:944,x:537,X:667,y:519,Y:667,z:519,Z:648}},boldItalic:{ascent:.975006103515625,descent:.2169952392578125,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-68,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0290069580078125,w:{" ":278,_:500,"-":407,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":296,"?":574,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':481,"\u201C":481,"\u201D":481,"(":296,")":296,"[":333,"]":333,"{":333,"}":333,"@":800,"*":407,"/":389,"\\":389,"&":685,"#":556,"%":963,"\u2022":350,"`":259,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":722.66,"\u2193":722.66,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":608.4,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:574,A:685,b:611,B:722,c:556,C:741,d:611,D:741,e:574,E:667,\u00E9:574,f:352,F:593,g:611,G:759,h:611,H:741,i:259,I:296,j:259,J:556,k:556,K:722,l:259,L:574,m:907,M:907,n:611,N:741,o:593,O:778,p:611,P:667,q:611,Q:778,r:389,R:722,s:519,S:648,t:370,T:611,u:611,U:741,v:519,V:630,w:815,W:944,x:519,X:667,y:519,Y:648,z:500,Z:648}},italic:{ascent:.957000732421875,descent:.2129974365234375,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-15,fi:1,fl:1,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0279998779296875,w:{" ":278,_:500,"-":389,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":259,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':426,"\u201C":426,"\u201D":426,"(":259,")":259,"[":259,"]":259,"{":333,"}":333,"@":800,"*":352,"/":333,"\\":333,"&":630,"#":556,"%":926,"\u2022":500,"`":222,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:519,A:667,b:593,B:685,c:537,C:722,d:593,D:704,e:537,E:611,\u00E9:537,f:296,F:574,g:574,G:759,h:556,H:722,i:222,I:259,j:222,J:519,k:481,K:667,l:222,L:556,m:852,M:870,n:556,N:722,o:574,O:759,p:593,P:648,q:593,Q:759,r:333,R:685,s:481,S:648,t:315,T:574,u:556,U:722,v:481,V:611,w:759,W:926,x:481,X:611,y:481,Y:611,z:444,Z:611}},regular:{ascent:.951995849609375,descent:.2129974365234375,k:{"\u2018\u2018":-95,"\u2019\u2019":-95,"\u2019s":-74,"\u2019t":-18,"A\u2019":-74,AT:-92,Av:-18,AV:-46,Aw:-18,AW:-24,Ay:-18,AY:-74,"F,":-157,"F.":-157,"f\u2019":18,FA:-55,ff:-15,"L\u2019":-74,LT:-92,LV:-92,LW:-55,Ly:-37,LY:-111,"P,":-179,"P.":-179,PA:-74,"r-":-55,"r,":-92,"r.":-92,rc:-18,rd:-18,re:-18,rg:-28,rn:18,ro:-18,rq:-18,RT:-18,RV:-18,RW:-18,RY:-37,"T-":-129,"T,":-111,"T;":-111,"T:":-111,"T.":-111,Ta:-111,TA:-92,Tc:-111,Te:-111,To:-111,Tr:-92,Ts:-111,Tu:-92,Tw:-111,Ty:-111,"V-":-55,"v,":-74,"V,":-129,"V;":-46,"V:":-46,"v.":-74,"V.":-129,Va:-55,VA:-46,Ve:-55,Vi:-18,Vo:-55,Vr:-37,Vu:-37,Vy:-18,"w,":-55,"W,":-74,"W;":-18,"W:":-18,"w.":-55,"W.":-74,Wa:-37,WA:-24,We:-57,Wo:-57,Wr:-18,Wu:-18,"Y-":-111,"y,":-74,"Y,":-139,"Y;":-92,"Y:":-92,"y.":-74,"Y.":-139,Ya:-92,YA:-74,Ye:-111,Yi:-37,Yo:-111,Yp:-74,Yq:-92,Yu:-74,Yv:-55},leading:.0279998779296875,w:{" ":278,_:500,"-":389,"\u2013":500,"\u2014":1e3,",":278,";":278,":":278,"!":259,"?":556,".":278,"\u2026":1e3,"\xB7":278,"'":278,"\u2018":278,"\u2019":278,'"':426,"\u201C":426,"\u201D":426,"(":259,")":259,"[":259,"]":259,"{":333,"}":333,"@":800,"*":352,"/":333,"\\":333,"&":630,"#":556,"%":1e3,"\u2022":350,"`":222,"^":600,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":600,"\xD7":600,"<":600,"=":600,">":600,"|":222,"~":600,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:556,0:556,1:556,2:556,3:556,4:556,5:556,6:556,7:556,8:556,9:556,a:537,A:648,b:593,B:685,c:537,C:722,d:593,D:704,e:537,E:611,\u00E9:537,f:296,F:574,g:574,G:759,h:556,H:722,i:222,I:259,j:222,J:519,k:519,K:667,l:222,L:556,m:853,M:871,n:556,N:722,o:574,O:760,p:593,P:648,q:593,Q:760,r:333,R:685,s:500,S:648,t:315,T:574,u:556,U:722,v:500,V:611,w:758,W:926,x:518,X:611,y:500,Y:648,z:480,Z:611}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}},"Patrick Hand":{faces:{regular:{ascent:1.0420074462890625,descent:.3119964599609375,k:{},leading:0,w:{" ":230,_:571,"-":404,"\u2013":420,"\u2014":648,",":202,";":232,":":232,"!":247,"?":368,".":214,"\u2026":571,"\xB7":200,"'":164,"\u2018":190,"\u2019":220,'"':303,"\u201C":315,"\u201D":303,"(":334,")":364,"[":303,"]":296,"{":339,"}":328,"@":550,"*":404,"/":423,"\\":420,"&":530,"#":457,"%":643,"\u2022":352,"`":220,"^":370,"\u2190":1e3,"\u2192":1e3,"\u2191":645.02,"\u2193":645.02,"+":480,"\xD7":490,"<":396,"=":572,">":400,"|":176,"~":529,"\u25E6":578.13,"\u2610":830.08,"\u2611":830.08,"\u2713":764.16,$:507,0:448,1:363,2:468,3:448,4:375,5:423,6:399,7:495,8:433,9:367,a:392,A:488,b:412,B:507,c:388,C:548,d:390,D:475,e:398,E:442,\u00E9:398,f:359,F:375,g:445,G:480,h:420,H:468,i:224,I:235,j:235,J:370,k:415,K:523,l:266,L:372,m:680,M:595,n:452,N:532,o:403,O:556,p:428,P:481,q:463,Q:655,r:385,R:454,s:385,S:459,t:344,T:468,u:400,U:550,v:400,V:562,w:463,W:616,x:448,X:601,y:423,Y:442,z:428,Z:507}}},fallback:{"\u2190":[.966796875,.2109375,0],"\u2192":[.966796875,.2109375,0],"\u2191":[.966796875,.2109375,0],"\u2193":[.966796875,.2109375,0],"\u25E6":[.966796875,.2109375,0],"\u2610":[.66650390625,.25,.08349609375],"\u2611":[.66650390625,.25,.08349609375],"\u2713":[.966796875,.2109375,0]}}};var We="Helvetica Neue",yn="Helvetica Neue, Helvetica, Arial, sans-serif",de=Object.keys(Ut).filter(e=>e!==We).sort();function pe(e){if(!e)return null;let t=e.toLowerCase();return de.find(n=>n.toLowerCase()===t)??null}function Ve(e){return Ut[pe(e)??We]}function ye(e,t,n){let r=t?n?"boldItalic":"bold":n?"italic":"regular";return e.faces[r]?r:"regular"}function $e(e){if(!e)return yn;let t=[...pe(e)??e].filter(n=>!`"'<>&;{}\\`.includes(n)).join("");return t===""?yn:`${/^[\p{L}\p{N} -]+$/u.test(t)?t:`'${t}'`}, ${yn}`}function Ir(e,t,n="regular",r){let o=Ve(r),i=o.faces[n]??o.faces.regular,l=i.w.n,s=0,u="";for(let c of e)s+=i.w[c]??l,u&&(s+=i.k[u+c]??0),u=c;return s*t/1e3}function Qo(e,t){let n=Ve(t).faces.regular,r=Math.round(n.ascent*e),o=Math.round(n.descent*e),i=Math.round(n.leading*e);return[r+Math.ceil(n.descent*e-1e-9),r+o+i]}function gn(e,t){return e===" "?!0:(e==="/"||e==="-")&&t!==""&&!/[\d\s/-]/.test(t)}function _o(e){let t=[...e],n=[],r="";return t.forEach((o,i)=>{r+=o;let l=t[i+1]??"";gn(o,l)&&l!==" "&&(n.push(r),r="")}),(r||n.length===0)&&n.push(r),n}function ti(e,t,n,r="regular",o){let i=s=>Ir(s,t,r,o),l=[];for(let s of e.split(/\r\n|\n|\r|\u2028|\u2029/)){let u="";for(let c of _o(s)){let a=u+c;for(u===""||i(a.trimEnd())<=n?u=a:(l.push(u),u=c);i(u.trimEnd())>n&&[...u.trimEnd()].length>1;){let h=[...u],d=h.length-1;for(;d>1&&i(h.slice(0,d).join(""))>n;)d--;l.push(h.slice(0,d).join("")),u=h.slice(d).join("")}}l.push(u)}return l}function Fr(e,t,n,r){if(e==="")return{width:0,height:0};let o=ti(e,t,n,"regular",r),i=Math.max(...o.map(u=>Ir(u.trimEnd(),t,"regular",r))),[l,s]=Qo(t,r);return{width:Math.ceil(i-1e-9),height:Math.ceil(l+s*(o.length-1)-1e-9)}}var ei=["bold","boldItalic","italic","regular"];function xn(e,t){return`${e.toLowerCase().replaceAll(" ","-")}-${t}.woff2`}function kn(e){return ei.filter(t=>Ut[e]?.faces[t]!==void 0)}function Ge(e){let t=new Set,n=r=>{for(let o of r){let i=pe(o.style.font);i&&t.add(i)}};n(e.elements);for(let r of e.symbols??[])n(r.elements);return de.filter(r=>t.has(r))}function ni(){try{let e=typeof document>"u"?null:document.currentScript;if(e?.src)return new URL("fonts/",e.src).href;let t=void 0;return t?new URL("fonts/",t).href:null}catch{return null}}var bn=ni(),Lr=new Set;function Cr(e){bn=e.endsWith("/")?e:`${e}/`}function ze(e,t={}){if(!(typeof document>"u"||typeof FontFace>"u"||!document.fonts))for(let n of e){let r=pe(n);if(!r||Lr.has(r))continue;let o=t[r];if(!(!o&&!bn)){Lr.add(r);for(let i of kn(r)){let l=o?.[i],s;if(l)s=Uint8Array.from(atob(l),c=>c.charCodeAt(0));else if(!o)s=`url(${JSON.stringify(bn+xn(r,i))}) format("woff2")`;else continue;let u={weight:i.startsWith("bold")?"bold":"normal",style:i==="italic"||i==="boldItalic"?"italic":"normal"};document.fonts.add(new FontFace(r,s,u))}}}}var Dr=.5522847498307936,U=class e{constructor(){E(this,"segments",[])}get isEmpty(){return this.segments.length===0}moveTo(t){return this.segments.push({op:"M",p:t}),this}lineTo(t){return this.segments.push({op:"L",p:t}),this}quadTo(t,n){return this.segments.push({op:"Q",c:n,p:t}),this}curveTo(t,n,r){return this.segments.push({op:"C",c1:n,c2:r,p:t}),this}close(){return this.segments.push({op:"Z"}),this}addPath(t){return this.segments.push(...t.segments),this}addLines(t){return t.forEach((n,r)=>r===0?this.moveTo(n):this.lineTo(n)),this}static rect(t){return new e().addLines([{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}]).close()}addEllipse(t){let n=t.x+t.width/2,r=t.y+t.height/2,o=t.width/2,i=t.height/2,l=o*Dr,s=i*Dr;return this.moveTo({x:n+o,y:r}),this.curveTo({x:n,y:r+i},{x:n+o,y:r+s},{x:n+l,y:r+i}),this.curveTo({x:n-o,y:r},{x:n-l,y:r+i},{x:n-o,y:r+s}),this.curveTo({x:n,y:r-i},{x:n-o,y:r-s},{x:n-l,y:r-i}),this.curveTo({x:n+o,y:r},{x:n+l,y:r-i},{x:n+o,y:r-s}),this.close()}static ellipse(t){return new e().addEllipse(t)}translated(t,n){let r=i=>({x:i.x+t,y:i.y+n}),o=new e;return o.segments=this.segments.map(i=>{switch(i.op){case"M":case"L":return{op:i.op,p:r(i.p)};case"Q":return{op:"Q",c:r(i.c),p:r(i.p)};case"C":return{op:"C",c1:r(i.c1),c2:r(i.c2),p:r(i.p)};case"Z":return i}}),o}contours(){let t=[],n=[],r={x:0,y:0};for(let o of this.segments){let i=n.length?n[n.length-1]:r;switch(o.op){case"M":n.length>1&&t.push(n),r=o.p,n=[o.p];break;case"L":n.push(o.p);break;case"Q":for(let l=1;l<=12;l++){let s=l/12,u=1-s;n.push({x:u*u*i.x+2*u*s*o.c.x+s*s*o.p.x,y:u*u*i.y+2*u*s*o.c.y+s*s*o.p.y})}break;case"C":for(let l=1;l<=16;l++){let s=l/16,u=1-s;n.push({x:u*u*u*i.x+3*u*u*s*o.c1.x+3*u*s*s*o.c2.x+s*s*s*o.p.x,y:u*u*u*i.y+3*u*u*s*o.c1.y+3*u*s*s*o.c2.y+s*s*s*o.p.y})}break;case"Z":n.push(r),n.length>1&&t.push(n),n=[r];break}}return n.length>1&&t.push(n),t}trimmed(t){let n=this.contours().map(i=>new Yt(i)),r=Math.min(Math.max(t,0),1)*n.reduce((i,l)=>i+l.length,0),o=new e;for(let i of n){if(!(r>0))break;o.moveTo(i.points[0]);for(let l=1;l<i.points.length;l++){let s=i.lengths[l]-i.lengths[l-1];if(s<=r){o.lineTo(i.points[l]),r-=s;continue}let u=i.points[l-1],c=i.points[l],a=r/s;o.lineTo({x:u.x+(c.x-u.x)*a,y:u.y+(c.y-u.y)*a}),r=0;break}}return o}data(){let t=[];for(let n of this.segments)switch(n.op){case"M":t.push(`M${T(n.p.x)} ${T(n.p.y)}`);break;case"L":t.push(`L${T(n.p.x)} ${T(n.p.y)}`);break;case"Q":t.push(`Q${T(n.c.x)} ${T(n.c.y)} ${T(n.p.x)} ${T(n.p.y)}`);break;case"C":t.push(`C${T(n.c1.x)} ${T(n.c1.y)} ${T(n.c2.x)} ${T(n.c2.y)} ${T(n.p.x)} ${T(n.p.y)}`);break;case"Z":t.push("Z");break}return t.join(" ")}};function ge(e){return e<0?-Math.round(-e):Math.round(e)}function T(e){let t=ge(e*100)/100;return Number.isInteger(t)?String(t===0?0:t):String(t)}var Yt=class{constructor(t){E(this,"points");E(this,"lengths");this.points=t;let n=0;this.lengths=t.map((r,o)=>(o>0&&(n+=Math.hypot(r.x-t[o-1].x,r.y-t[o-1].y)),n))}get length(){return this.lengths.length?this.lengths[this.lengths.length-1]:0}point(t){if(this.points.length<=1||!(this.length>0))return this.points[0]??{x:0,y:0};let n=Math.min(Math.max(t,0),1)*this.length,r=1;for(;r<this.lengths.length-1&&this.lengths[r]<n;)r++;let o=this.lengths[r]-this.lengths[r-1],i=o>0?(n-this.lengths[r-1])/o:0,l=this.points[r-1],s=this.points[r];return{x:l.x+(s.x-l.x)*i,y:l.y+(s.y-l.y)*i}}},wt=e=>e.x+e.width/2,Mt=e=>e.y+e.height/2,xt=e=>e.x+e.width,kt=e=>e.y+e.height;function wn(e,t){if(!e)return{...t};let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,width:Math.max(xt(e),xt(t))-n,height:Math.max(kt(e),kt(t))-r}}function ne(e,t,n){return{x:e.x+t,y:e.y+n,width:e.width-2*t,height:e.height-2*n}}function Wt(e,t,n){if(n===0)return e;let r=e.x-t.x,o=e.y-t.y;return{x:t.x+r*Math.cos(n)-o*Math.sin(n),y:t.y+r*Math.sin(n)+o*Math.cos(n)}}function Mn(e,t){let n=1-t;return{x:e[0].x*(n*n*n)+e[1].x*(3*t*n*n)+e[2].x*(3*t*t*n)+e[3].x*(t*t*t),y:e[0].y*(n*n*n)+e[1].y*(3*t*n*n)+e[2].y*(3*t*t*n)+e[3].y*(t*t*t)}}function Or(e,t){let n=[e[0]];for(let r=0;r<Math.floor((e.length-1)/3);r++){let o=e.slice(3*r,3*r+4),i=0;for(let s=1;s<o.length;s++)i+=Math.hypot(o[s].x-o[s-1].x,o[s].y-o[s-1].y);let l=Math.min(400,Math.max(4,Math.ceil(i/Math.max(t,.5))));for(let s=1;s<=l;s++)n.push(Mn(o,s/l))}return n}var nt=e=>({x:e.x,y:e.y,width:e.width,height:e.height}),mt=e=>e.rotation??0,be=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),Rt=(e,t)=>Wt(t,be(e),mt(e)),Yr=(e,t)=>Wt(t,be(e),-mt(e));function Wr(e){let t=nt(e);if(mt(e)===0)return t;let n=[{x:t.x,y:t.y},{x:xt(t),y:t.y},{x:xt(t),y:kt(t)},{x:t.x,y:kt(t)}].map(s=>Rt(e,s)),r=n.map(s=>s.x),o=n.map(s=>s.y),i=Math.min(...r),l=Math.min(...o);return{x:i,y:l,width:Math.max(...r)-i,height:Math.max(...o)-l}}function Vr(e,t){let n=e.style.textColor!==null&&me(e.style.textColor);if(!me(e.style.stroke)&&!n)return e;let r=at(e),i=(e.style.fillStyle==="solid"||e.style.fillStyle==="grid")&&e.style.fill.a>=.5&&ee(e.style.fill)>.5,l=ee(t)>.5&&i?Nt:t;return me(e.style.stroke)&&(r.style.stroke={...l}),n&&(r.style.textColor={...l}),r}function $r(e){return e.kind==="text"||e.kind==="note"?e.style.stroke:e.style.textColor??e.style.stroke}function re(e){if(e.kind!=="path"||!e.subpaths)return[];let t=[];for(let n of e.subpaths){if(n.coords.length<8||(n.coords.length-2)%6!==0)continue;let r=[];for(let o=0;o<n.coords.length;o+=2)r.push({x:e.x+n.coords[o]*e.width,y:e.y+n.coords[o+1]*e.height});t.push({closed:n.closed,points:r})}return t}function Pn(e){let t=new U;for(let n of re(e)){t.moveTo(n.points[0]);for(let r=0;r<(n.points.length-1)/3;r++)t.curveTo(n.points[3*r+3],n.points[3*r+1],n.points[3*r+2]);n.closed&&t.close()}return t}function ri(e,t){let n=nt(e),r=t==="top"?{x:wt(n),y:n.y}:t==="right"?{x:xt(n),y:Mt(n)}:t==="bottom"?{x:wt(n),y:kt(n)}:{x:n.x,y:Mt(n)};return Rt(e,r)}function oi(e){let t=[];for(let n=0;n+3<e.length;n+=3){let r=e.slice(n,n+4);for(let o=0;o<16;o++)t.push(Mn(r,o/16))}return t.push(e[e.length-1]),t}function ii(e,t,n){let r=null,o=null;for(let l of re(e)){let s=oi(l.points),u=s.length,c=l.closed?u:u-1;for(let a=0;a<c;a++){let h=s[a],d=s[(a+1)%u],m={x:d.x-h.x,y:d.y-h.y},p={x:h.x-t.x,y:h.y-t.y},y=m.x*n.y-n.x*m.y;if(y===0)continue;let w=(m.x*p.y-m.y*p.x)/y,P=(n.x*p.y-n.y*p.x)/y;w>0&&P>=0&&P<=1&&((r===null||w<r)&&(r=w),w<=1&&(o===null||w>o)&&(o=w))}}let i=o??r;return i===null?null:{x:t.x+n.x*i,y:t.y+n.y*i}}function si(e,t){let n=nt(e),r=be(e),o=Yr(e,t),i=o.x-r.x,l=o.y-r.y;if(!((i!==0||l!==0)&&n.width>0&&n.height>0))return r;if(e.kind==="path"){let a=ii(e,r,{x:i,y:l});if(a)return Rt(e,a)}let s=n.width/2,u=n.height/2,c;return e.kind==="ellipse"?c=1/Math.sqrt(i*i/(s*s)+l*l/(u*u)):e.kind==="diamond"?c=1/(Math.abs(i)/s+Math.abs(l)/u):c=Math.min(i!==0?s/Math.abs(i):1/0,l!==0?u/Math.abs(l):1/0),Rt(e,{x:r.x+i*c,y:r.y+l*c})}function Gr(e,t){let n=e.elementID?t.get(e.elementID):void 0;return n?be(n):{x:e.x,y:e.y}}function li(e,t){let n=nt(e);return Rt(e,{x:n.x+t.x*n.width,y:n.y+t.y*n.height})}function zr(e,t,n){let r=e.elementID?n.get(e.elementID):void 0;if(!r)return{x:e.x,y:e.y};let o=e.portIndex,i=r.ports??[];return typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<i.length?li(r,i[o]):e.port?ri(r,e.port):si(r,t)}function Ft(e,t){let n=e.connector;if(!n)return[{x:0,y:0},{x:0,y:0}];let r=n.waypoints??[];return[zr(n.start,r.length>0?r[0]:Gr(n.end,t),t),zr(n.end,r.length>0?r[r.length-1]:Gr(n.start,t),t)]}function Lt(e){if(e.kind==="polyline")return e.points;let t=[],n=e.points;for(let r=0;r<Math.floor((n.length-1)/3);r++){let o=n[3*r],i=n[3*r+1],l=n[3*r+2],s=n[3*r+3];for(let u=r===0?0:1;u<=24;u++){let c=u/24,a=1-c;t.push({x:a*a*a*o.x+3*a*a*c*i.x+3*a*c*c*l.x+c*c*c*s.x,y:a*a*a*o.y+3*a*a*c*i.y+3*a*c*c*l.y+c*c*c*s.y})}}return t}var Ne=e=>e===null?null:e==="top"||e==="bottom";function ai(e){let t=[];for(let n of e){let r=t[t.length-1];if(!(r&&Math.abs(r.x-n.x)<.5&&Math.abs(r.y-n.y)<.5)){if(t.length>=2){let o=t[t.length-2],i=t[t.length-1];if(Math.abs(o.x-i.x)<.5&&Math.abs(i.x-n.x)<.5||Math.abs(o.y-i.y)<.5&&Math.abs(i.y-n.y)<.5){t[t.length-1]=n;continue}}t.push(n)}}return t.length>=2?t:e}function ui(e,t){switch(t.routing){case"straight":return{kind:"polyline",points:e};case"curved":{let n=[e[0]];for(let r=0;r<e.length-1;r++){let o=e[Math.max(r-1,0)],i=e[r],l=e[r+1],s=e[Math.min(r+2,e.length-1)];n.push({x:i.x+(l.x-o.x)/6,y:i.y+(l.y-o.y)/6}),n.push({x:l.x-(s.x-i.x)/6,y:l.y-(s.y-i.y)/6}),n.push(l)}return{kind:"curve",points:n}}case"elbow":{let n=e[0],r=e[1],o=Ne(t.start.port)??Math.abs(r.y-n.y)>Math.abs(r.x-n.x),i=Ne(t.end.port),l=[n];for(let s=1;s<e.length;s++){let u=e[s],c=l[l.length-1],a=Math.abs(c.x-u.x)<.5,h=Math.abs(c.y-u.y)<.5;if(a||h){l.push(u),a!==h&&(o=!a);continue}let d=s===e.length-1&&i!==null?!i:o;l.push(d?{x:c.x,y:u.y}:{x:u.x,y:c.y},u),o=d}return{kind:"polyline",points:ai(l)}}}}function Ct(e,t){let n=e.connector;if(!n)return{kind:"polyline",points:[]};let[r,o]=Ft(e,t);if(n.waypoints&&n.waypoints.length>0)return ui([r,...n.waypoints.map(u=>({x:u.x,y:u.y})),o],n);let i=o.x-r.x,l=o.y-r.y,s=Math.abs(i)>=Math.abs(l);switch(n.routing){case"straight":return{kind:"polyline",points:[r,o]};case"curved":return s?{kind:"curve",points:[r,{x:r.x+i/2,y:r.y},{x:o.x-i/2,y:o.y},o]}:{kind:"curve",points:[r,{x:r.x,y:r.y+l/2},{x:o.x,y:o.y-l/2},o]};case"elbow":{let u=Ne(n.start.port)??!s,c=Ne(n.end.port)??!s;if(u&&c){let a=r.y+l/2;return{kind:"polyline",points:[r,{x:r.x,y:a},{x:o.x,y:a},o]}}if(!u&&!c){let a=r.x+i/2;return{kind:"polyline",points:[r,{x:a,y:r.y},{x:a,y:o.y},o]}}return u?{kind:"polyline",points:[r,{x:r.x,y:o.y},o]}:{kind:"polyline",points:[r,{x:o.x,y:r.y},o]}}}}function Nr(e,t,n){let r=Math.atan2(e.y-t.y,e.x-t.x),o=Math.PI/7,i=l=>({x:e.x-n*Math.cos(r+l),y:e.y-n*Math.sin(r+l)});return[i(o),i(-o)]}function Br(e,t){let n=Lt(Ct(e,t));if(n.length===0)return{x:0,y:0,width:0,height:0};let r=n[0].x,o=n[0].y,i=r,l=o;for(let s of n)r=Math.min(r,s.x),o=Math.min(o,s.y),i=Math.max(i,s.x),l=Math.max(l,s.y);return{x:r,y:o,width:i-r,height:l-o}}function Ur(e,t){let n=Lt(Ct(e,t));if(n.length<=1)return n[0]??{x:0,y:0};let r=[],o=0;for(let l=0;l<n.length-1;l++){let s=Math.hypot(n[l+1].x-n[l].x,n[l+1].y-n[l].y);r.push(s),o+=s}let i=o/2;for(let l=0;l<r.length;l++){let s=r[l];if(i<=s||l===r.length-1){let u=s===0?0:i/s;return{x:n[l].x+(n[l+1].x-n[l].x)*u,y:n[l].y+(n[l+1].y-n[l].y)*u}}i-=s}return n[0]}function At(e){let t=new Map;for(let n of e.elements)t.has(n.id)||t.set(n.id,n);return t}function Rn(e,t,n){let r=e[1]+n>>>0,o=r<e[1]?1:0;return[e[0]+t+o>>>0,r]}function ci(e,t){let n=e&65535,r=e>>>16,o=t&65535,i=t>>>16,l=n*o,s=n*i,u=r*o,c=r*i,a=s+u,h=l+a%65536*65536;return[c+Math.floor(a/65536)+Math.floor(h/4294967296)>>>0,h>>>0]}function An(e,t,n){let r=ci(e[1],n);return[r[0]+Math.imul(e[0],n)+Math.imul(e[1],t)>>>0,r[1]]}function vn(e,t){let n=(e[1]>>>t|e[0]<<32-t)>>>0;return[(e[0]^e[0]>>>t)>>>0,(e[1]^n)>>>0]}function Zr(e){return e=An(vn(e,30),3210233709,484763065),e=An(vn(e,27),2496678331,321982955),vn(e,31)}var Vt=class{constructor(t){E(this,"state");this.state=Rn([0,t>>>0],2654435769,2135587861)}next(){return this.state=Rn(this.state,2654435769,2135587861),Zr(this.state)}top53(){let[t,n]=this.next();return t*2097152+(n>>>11)}signed(){return Math.floor(this.top53())/2**52-1}unit(){return this.top53()/2**53}};function Be(e,t){let n=Rn([0,e>>>0],...hi(t));return n=Zr(n),Math.max(1,n[1]>>>0)}function hi(e){let t=An([0,e>>>0],2654435769,2135587861);return[t[0],t[1]]}var jr=.5,En=160,Tn=12,In={r:.95,g:.36,b:.33,a:1},Zt=(e,t,n,r)=>e===null||!Number.isFinite(e)?t:Math.min(Math.max(e,n),r);function xe(e,t){let n=(t+1099511627776)%281474976710656;return e.slice(0,24)+(n<0?n+2**48:n).toString(16).toUpperCase().padStart(12,"0")}var fi=e=>e===null||!Number.isFinite(e)?1:Math.min(Math.max(e,0),1e6);function Ue(e,t,n=new Set){let r=new Set(t.elements.filter(h=>h.kind!=="connector"&&!n.has(h.id)).map(h=>h.id));if(!r.has(e))return null;let o=new Map,i=(h,d)=>{let m=o.get(h);m?m.push(d):o.set(h,[d])};for(let h of t.elements){let d=h.connector,m=d?.start.elementID??null,p=d?.end.elementID??null;if(!d||n.has(h.id)||m===null||p===null||m===p||!r.has(m)||!r.has(p))continue;let y=fi(d.cost);i(m,{to:p,via:h.id,back:!1,cost:y}),d.startHead!=="none"&&i(p,{to:m,via:h.id,back:!0,cost:y})}let l=new Map([[e,0]]),s=new Map([[e,0]]),u=1,c=new Sn(e),a=[e];for(;a.length>0;){let h=0;for(let m=1;m<a.length;m++){let p=l.get(a[m]),y=l.get(a[h]);(p<y||p===y&&s.get(a[m])<s.get(a[h]))&&(h=m)}let d=a.splice(h,1)[0];c.settled.add(d);for(let m of o.get(d)??[]){if(c.settled.has(m.to))continue;let p=l.get(d)+m.cost,y=l.get(m.to);y!==void 0&&y<=p||(y===void 0&&a.push(m.to),l.set(m.to,p),s.set(m.to,u++),c.came.set(m.to,{from:d,via:m.via,back:m.back}))}}return c}var Sn=class{constructor(t){E(this,"settled",new Set);E(this,"came",new Map);E(this,"from");this.from=t}goals(t,n){let r=t.filter(o=>o!==this.from&&this.settled.has(o));return r.length===0?[]:n&&r[0]!==t[0]?r:[r[0]]}hops(t){let n=[];for(let r=t,o=this.came.get(r);o;r=o.from,o=this.came.get(r))n.push([o.via,o.back]);return n.reverse()}};var je=()=>({elements:new Map,flows:new Map,carry:{}});function Kr(e,t,n){let r=e.flows.get(n);if(r)switch(t){case"throughput":return r.placed;case"backlog":return r.backlog;case"backup":return r.backup;case"transit":return r.transit;default:return null}let o=e.elements.get(n);if(!o)return null;switch(t){case"throughput":return o.throughput;case"load":return o.load;case"delay":return o.delay;case"backlog":return o.backlog;case"inFlight":return o.inFlight;case"depth":return o.depth;default:return null}}var Q=1e-9,Yn=e=>Zt(e.volume,1,0,1e12);function Fn(e,t){if(t===null||!e.overrides)return Yn(e);let n=null;for(let r of e.overrides)r.volume!==null&&!Kt(r.when)&&qt(r.when,t)&&(n=r.volume);return n===null?Yn(e):Math.min(Math.max(Number.isFinite(n)?n:1,0),1e12)}function Xr(e){let t=e.delay??null;return e.kind==="connector"||t===null||!Number.isFinite(t)?0:Math.min(Math.max(t,0),3600)}var Ln=(e,t)=>e+"|"+t;function qr(e,t,n,r,o=new Set,i=null,l={}){let s=Math.max(0,Math.min(i??n,1e6)),u=new Map;for(let x of t.elements)u.has(x.id)||u.set(x.id,x);let c=je();for(let x of t.elements)x.kind==="connector"&&!x.connector||c.elements.set(x.id,{throughput:0,load:null,delay:x.kind!=="connector"?Xr(x):0,backlog:0,inFlight:0,depth:0});let a=e??[],h=new Map;for(let x of t.elements){let R=x.capacity??null;R!==null&&Number.isFinite(R)&&h.set(x.id,Math.max(R,0))}let d=()=>new Set([...h].filter(([,x])=>x<=Q).map(([x])=>x)),m=(x,R)=>{let S=[],C=[],F=R;for(let D=x.came.get(F);D;D=x.came.get(F))S.push([D.via,D.back]),C.push(F),F=D.from;return C.push(F),{hops:S.reverse(),shapes:C.reverse()}},p=(x,R)=>{let S=[],C=[],F=[],D=0;return x.forEach(([$,W],Z)=>{let L=u.get($);if(!L)return;let z=W?[...Ze(L,t).points].reverse():Ze(L,t).points;if(z.length===0)return;let K=S[S.length-1];if(K){let X=Math.hypot(z[0].x-K.x,z[0].y-K.y),rt=u.get(R[Z]);C.push([D,D+X,rt?Xr(rt):0]),D+=X}let ot=D;for(let X=1;X<z.length;X++)D+=Math.hypot(z[X].x-z[X-1].x,z[X].y-z[X-1].y);F.push([$,ot,D]),S.push(...z)}),D>0?{line:new Yt(S),length:D,inside:C,stretches:F}:null},y=(x,R,S)=>{let C=R,F=0;for(let[D,$,W]of x.inside){let Z=(D-F)/S;if(C<=Z)break;C-=Z,F=D;let L=($-D)/S+W;if(C<L)return null;C-=L,F=$}return F+=C*S,F>=0&&F<=x.length?F:null},w=(x,R)=>new Set([...x,...R]),P=(x,R)=>{let S=c.elements.get(x);S&&R(S)},A=new Map,k=[];for(let x of a){let R=A.get(x.from)??0;k.push(R),A.set(x.from,R+1)}let v=a.length>0?Math.max(...a.map(Yn)):1,b=[],f=new Map,g=x=>Math.min(Math.max(Zt(x.every,jr,.05,60)*v/Math.max(Fn(x,r),Q),.05),60);for(let[x,R]of a.entries()){if(R.when!==null&&r!==null&&!qt(R.when,r))continue;let S=u.get(R.from),C=S?Ue(R.from,t,o):null;if(!S||!C)continue;let F=Fn(R,r),D={volume:F,placed:0,backlog:0,backup:0,transit:null},$=[],W=[],Z=C.goals(R.to,R.spread===!0),L=Z.length>1?Z.map(O=>[[O],F/Z.length]):[[R.to,F]];for(let[O,_]of L){if(!(_>Q))continue;let B=_;for(let N=0;N<32&&B>Q;N++){let lt=Ue(R.from,t,w(o,d())),tt=lt?.goals(O,!1)[0];if(!lt||tt===void 0)break;let j=m(lt,tt),H=[...j.shapes,...j.hops.map(([q])=>q)],et=H.filter(q=>h.has(q)).map(q=>h.get(q)),G=Math.min(B,et.length>0?Math.min(...et):1/0);if(!(G>Q))break;for(let q of H)h.has(q)&&h.set(q,h.get(q)-G);$.push({hops:j.hops,shapes:j.shapes,goal:tt,amount:G}),B-=G}if(!(B>Q))continue;let it=R.from,st=C.goals(O,!1)[0];if(st!==void 0){let N=m(C,st),lt=d(),tt=[[N.shapes[0],N.shapes[0]]];N.hops.forEach(([et],G)=>{tt.push([et,N.shapes[G]],[N.shapes[G+1],N.shapes[G]])});let j=tt.find(([et])=>lt.has(et));if(j){it=j[1];let et=N.shapes.indexOf(it);for(let G=et;G>=0;G--){let q=u.get(N.shapes[G]);if(q&&q.queue===!0&&q.kind!=="connector"){it=N.shapes[G];break}}}let H=N.shapes.indexOf(it);if(it!==R.from&&H>=0){let et=N.shapes.slice(0,H+1),G=N.hops.slice(0,H);for(let q of[...et,...G.map(([cn])=>cn)])h.has(q)&&h.set(q,Math.max(0,h.get(q)-B));$.push({hops:G,shapes:et,goal:it,amount:B,waits:!0})}}let ut=W.find(([N])=>N===it);ut?ut[1]+=B:W.push([it,B])}f.set(R.id,W);for(let O of $){for(let _ of[...O.shapes,...O.hops.map(([B])=>B)])P(_,B=>{B.throughput+=O.amount});O.waits||(D.placed+=O.amount)}for(let[O,_]of W)P(O,B=>{B.backlog+=_}),D.backlog+=_;let z=$.filter(O=>!O.waits&&O.goal===R.to[0]).reduce((O,_)=>O+_.amount,0);D.backup=F>Q?Math.max(0,(F-z)/F):0;let K=g(R),ot=Zt(R.speed,En,1,1e4),X=Zt(R.size,Tn,2,200),rt=k[x]/A.get(R.from)*K,yt=R.color??In,gt=[],Fe=0;for(let O of $)Fe+=O.amount/Math.max(F,Q),gt.push(Fe);gt.length>0&&Math.abs(gt[gt.length-1]-1)<1e-9&&(gt[gt.length-1]=1);let ue=0;$.forEach((O,_)=>{let B=p(O.hops,O.shapes);if(!B)return;let it=B.length/ot+B.inside.reduce((j,H)=>j+H[2],0);O.waits||(ue+=it*O.amount);let st=Math.ceil((n-rt-it)/K),ut=Math.floor((n-rt)/K),N=_===0?0:gt[_-1],lt=gt[_],tt=(j,H)=>Math.floor((H+1)*j)-Math.floor(H*j);for(let j=Math.max(st,ut-3999);j<=ut;j++){if(tt(lt,j)-tt(N,j)!==1)continue;let H=y(B,n-j*K-rt,ot);if(H===null)continue;let et=B.stretches.find(([,q,cn])=>H>=q&&H<=cn);et&&P(et[0],q=>{q.inFlight+=1});let G=B.line.point(H/B.length);b.push(Cn(xe(R.id,j),G.x-X/2,G.y-X/2,X,yt,S.layerID))}}),D.transit=D.placed>Q?ue/D.placed:null,c.flows.set(R.id,D)}let M=new Map;for(let x of a){let R=f.get(x.id)??[],S=R.map(([L])=>L);for(let L of t.elements){let z=l[Ln(L.id,x.id)];z!==void 0&&z>Q&&!S.includes(L.id)&&S.push(L.id)}if(S.length===0)continue;let C=Fn(x,r),D=g(x)*Math.max(C,Q),$=Zt(x.speed,En,1,1e4),W=Zt(x.size,Tn,2,200),Z=x.color??In;S.forEach((L,z)=>{let K=u.get(L);if(!K)return;let ot=u.get(x.from)?.layerID??K.layerID,X=R.find(([O])=>O===L)?.[1]??0,rt=Math.max(0,l[Ln(L,x.id)]??0),yt=rt+X*s;if(X<=Q&&rt>Q){let O=new Map(h),_=[],B=0;for(let it=0;it<32;it++){let st=new Set([...O].filter(([,G])=>G<=Q).map(([G])=>G)),ut=Ue(L,t,w(o,st)),N=ut?.goals(x.to,!1)[0];if(!ut||N===void 0)break;let lt=m(ut,N),tt=[...lt.shapes.slice(1),...lt.hops.map(([G])=>G)],j=tt.filter(G=>O.has(G)).map(G=>O.get(G)),H=j.length>0?Math.min(...j):1/0,et=Number.isFinite(H)?H:Math.max(rt/.5-B,Q*2);if(!(et>Q))break;for(let G of tt)O.has(G)&&O.set(G,O.get(G)-et);if(_.push({hops:lt.hops,shapes:lt.shapes,rate:et}),B+=et,!Number.isFinite(H))break}if(B>Q){if(yt=Math.max(0,rt-B*s),yt>Q){for(let[st,ut]of O)h.set(st,ut);for(let st of _)for(let ut of[...st.shapes,...st.hops.map(([N])=>N)])P(ut,N=>{N.throughput+=st.rate})}let it=rt/B;_.forEach((st,ut)=>{let N=p(st.hops,st.shapes);if(!N)return;let lt=Math.max(D/st.rate,.05);for(let tt=0;tt*lt<it&&tt*lt<=s&&tt<2048;tt++){let j=y(N,s-tt*lt,$);if(j===null)continue;let H=N.line.point(j/N.length);b.push(Cn(xe(x.id,2**39+2**20+z*2**14+ut*2**11+tt),H.x-W/2,H.y-W/2,W,Z,ot))}})}}if(!(yt>Q||X>Q))return;P(L,O=>{O.depth+=yt}),yt>Q&&(c.carry[Ln(L,x.id)]=yt);let gt=Math.min(Math.max(Math.ceil(yt/D-1e-9),1),30),Fe=Math.trunc((gt+9)/10),ue=M.get(L)??0;M.set(L,ue+Fe);for(let O=0;O<gt;O++){let _=K.x+2+W/2+O%10*(W+3),B=K.y-4-W/2-(ue+Math.trunc(O/10))*(W+3);b.push(Cn(xe(x.id,2**39+z*64+O),_-W/2,B-W/2,W,Z,ot))}})}for(let x of t.elements){let R=x.capacity??null,S=c.elements.get(x.id);R===null||!Number.isFinite(R)||!S||(S.load=R>0?S.throughput/R:1)}return{packets:b,metrics:c}}var Qr={seed:1,text:null,connector:null,groupID:null,points:null,path:null,subpaths:null,evenOdd:null,rotation:null,link:null,url:null,anchor:null,click:null,hover:null,when:null,overrides:null,symbol:null,playback:null,offset:null,args:null,image:null,reveal:null};function _r(e,t,n,r="solid",o=null){return{stroke:{...e},fill:{...t},fillStyle:r,strokeWidth:n,dash:"solid",roughness:0,bowing:1,fontSize:18,font:null,gridSize:null,opacity:o,dashOffset:null,textColor:null}}function Cn(e,t,n,r,o,i){return{...Qr,id:e,kind:"ellipse",layerID:i,x:t,y:n,width:r,height:r,style:_r(o,o,1.5)}}function mi(e,t){let n=new Map;for(let o of t.elements)o.anchor!==null&&!n.has(o.anchor)&&n.set(o.anchor,o.id);let r=/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/;return(o,i)=>{let l=o.target===""?i:n.get(o.target)??(r.test(o.target)?o.target.toUpperCase():null);return l===null?null:Kr(e,o.metric,l)}}function to(e,t,n,r,o,i=1/0,l={}){let s=mi(t,r),u=[],c={};for(let a of e){if(n!==null&&a.overrides)for(let p of a.overrides){let y=a.id;Kt(p.when)&&qt(p.when,n,w=>s(w,y))&&(a=De(gr(p),a))}if(!a.gauge||n===null){u.push(a);continue}let h=a.gauge,d=Kr(t,h.metric,h.of),m=l[Hr(a.id)];if(d!==null&&m!==void 0&&h.metric!=="depth"&&h.metric!=="inFlight"&&i<Jr){let p=Math.max(0,i/Jr),y=p*p*(3-2*p);d=m+(d-m)*y}d!==null&&(c[Hr(a.id)]=d),u.push(...ki(a,h,d,r,o))}return{elements:u,readings:c}}var Hr=e=>"gauge|"+e,Jr=1,oe=e=>{let t=parseInt(e.slice(1),16);return{r:(t>>16&255)/255,g:(t>>8&255)/255,b:(t&255)/255,a:1}},di=oe("#16a34a"),pi=oe("#d97706"),yi=oe("#dc2626"),gi=oe("#2f6fdf"),Dn=oe("#e5e7eb"),bi=oe("#9ca3af");function xi(e,t){if(t===null||!Number.isFinite(t))return"\u2013";switch(e){case"load":case"backup":return On(t*100,0)+"%";case"transit":case"delay":return On(t,Math.abs(t)>=10?1:2)+"s";default:return On(t,Math.abs(t)>=100?0:Math.abs(t)>=10?1:2)}}function On(e,t){let n=t===0?1:t===1?10:100,r=Math.floor(Math.abs(e)*n+.5);if(!(r<1e15))return e<0?"-\u221E":"\u221E";let o=Math.trunc(r/n),i=r-o*n,l=String(o);if(t>0&&i>0){let s=String(i);for(;s.length<t;)s="0"+s;for(;s.endsWith("0");)s=s.slice(0,-1);l+="."+s}return(e<0&&r>0?"-":"")+l}function ki(e,t,n,r,o){let i=r.elements.find(b=>b.id===t.of),l=t.max??(t.metric==="load"?1:i?.capacity??n??1),s=n===null?0:l>0?Math.min(Math.max(n/l,0),1):0,u=t.warn??(t.metric==="load"?.7:null),c=t.alarm??(t.metric==="load"?.9:null),a=u===null&&c===null?gi:di;n!==null&&u!==null&&n>=u&&(a=pi),n!==null&&c!==null&&n>=c&&(a=yi),n===null&&(a=bi);let h=t.label;if(h===null){let b=i?i.text!==null?i.text.split(`
3
+ `)[0]:i.anchor:null;h=`${t.metric} ${b??(o.some(f=>f.id===t.of)?"flow":"?")}`}let d=t.style??"number",m=Math.max(e.width,1),p=Math.max(e.height,1),y=(b,f)=>[b.x/m,b.y/p,(b.x+(f.x-b.x)/3)/m,(b.y+(f.y-b.y)/3)/p,(b.x+2*(f.x-b.x)/3)/m,(b.y+2*(f.y-b.y)/3)/p,f.x/m,f.y/p],w=(b,f,g,M)=>{let x=[{x:b,y:f},{x:b+g,y:f},{x:b+g,y:f+M},{x:b,y:f+M}],R=y(x[0],x[1]);for(let S=1;S<4;S++)R=R.concat(y(x[S],x[(S+1)%4]).slice(2));return{closed:!0,coords:R}},P=(b,f,g,M)=>{let x=Math.max(1,Math.ceil(Math.abs(M-g)/(Math.PI/2)-1e-9)),R=(M-g)/x,S=4/3*Math.tan(R/4),C=$=>({x:b.x+f*Math.cos($),y:b.y+f*Math.sin($)}),F=C(g),D=[F.x/m,F.y/p];for(let $=0;$<x;$++){let W=g+$*R,Z=W+R,L=C(W),z=C(Z),K={x:L.x-S*f*Math.sin(W),y:L.y+S*f*Math.cos(W)},ot={x:z.x+S*f*Math.sin(Z),y:z.y-S*f*Math.cos(Z)};D.push(K.x/m,K.y/p,ot.x/m,ot.y/p,z.x/m,z.y/p)}return{closed:!1,coords:D}},A=(b,f,g,M,x)=>({...Qr,id:xe(e.id,-(2**38)-b),kind:"path",layerID:e.layerID,x:e.x,y:e.y,width:e.width,height:e.height,style:_r(g,M??{r:0,g:0,b:0,a:0},x,"solid",e.style.opacity),subpaths:f}),k={...e,gauge:null,kind:"path",subpaths:[w(0,0,m,p)],text:h+`
4
+ `+xi(t.metric,n),style:{...e.style}},v=[];if(d==="number")k.labelRect={x:0,y:0,width:1,height:1},k.style.textColor={...a};else if(d==="bar"){k.labelRect={x:0,y:0,width:1,height:.66};let b=Math.min(10,m*.08),f=Math.min(12,p*.18),g=p*.72,M=m-2*b;v.push(A(1,[w(b,g,M,f)],Dn,Dn,.5)),s>0&&v.push(A(2,[w(b,g,M*s,f)],a,a,.5))}else{k.labelRect={x:0,y:.54,width:1,height:.46};let b=Math.min(m*.38,p*.4),f={x:m/2,y:p*.5},g=Math.max(2,b*.16);v.push(A(1,[P(f,b,Math.PI,2*Math.PI)],Dn,null,g)),s>0&&v.push(A(2,[P(f,b,Math.PI,Math.PI+Math.PI*s)],a,null,g));let M=Math.PI+Math.PI*s,x={x:f.x+b*.85*Math.cos(M),y:f.y+b*.85*Math.sin(M)};v.push(A(3,[{closed:!1,coords:y(f,x)}],{r:.2,g:.2,b:.2,a:1},null,2))}return[k,...v]}var eo=(e,t,n)=>e.signed()*t*n;function Dt(e,t,n,r,o,i,l){let s=Math.hypot(t.x-e.x,t.y-e.y);if(!(s>.5))return;let u=s<200?1:s>500?.4:-.0016668*s+1.233334,c=s<20?s/10:2;for(let a=0;a<2;a++){let h=(a===0?1:.5)*u,d=()=>eo(n,c,r)*h,m=n.unit()*.4+.3,p=eo(n,s/60,r)*o*u,y=t.x-e.x,w=t.y-e.y,P=-w/s,A=y/s,k=i?e:{x:e.x+d(),y:e.y+d()},v=i?t:{x:t.x+d(),y:t.y+d()},b=e.x+y*m*.66+P*p+d()*.5,f=e.y+w*m*.66+A*p+d()*.5,g=e.x+y*(.5+m*.5)+P*p+d()*.5,M=e.y+w*(.5+m*.5)+A*p+d()*.5;l.moveTo(k),l.curveTo(v,{x:b,y:f},{x:g,y:M})}}function Wn(e,t,n,r){let o=new U;for(let i=0;i<e.length;i++)Dt(e[i],e[(i+1)%e.length],t,n,r,!1,o);return o}function no(e,t,n){let r=new U,o=e.x+e.width/2,i=e.y+e.height/2,l=e.width/2,s=e.height/2;if(!(l>.5&&s>.5))return r;let u=Math.max(8,Math.min(24,Math.trunc((l+s)/6))),c=Math.min(2.5,(l+s)/25)*n;for(let a=0;a<2;a++){let h=t.unit()*2*Math.PI,d=2*Math.PI*(a===0?1:1.04),m=Math.trunc(u*d/(2*Math.PI))+1,p=[];for(let y=0;y<m;y++){let w=h+d*y/u,P=t.signed()*c,A=t.signed()*c;p.push({x:o+l*Math.cos(w)+P,y:i+s*Math.sin(w)+A})}wi(p,r)}return r}function wi(e,t){if(!(e.length<=2)){t.moveTo(e[0]);for(let n=0;n<e.length-1;n++){let r=e[Math.max(n-1,0)],o=e[n],i=e[n+1],l=e[Math.min(n+2,e.length-1)];t.curveTo(i,{x:o.x+(i.x-r.x)/6,y:o.y+(i.y-r.y)/6},{x:i.x-(l.x-o.x)/6,y:i.y-(l.y-o.y)/6})}}}var Vn=-41*Math.PI/180;function ro(e,t,n){if(!(n>0))return[];let r=Math.cos(t),o=Math.sin(t),i=e.filter(d=>d.length>=3).map(d=>d.map(m=>({x:m.x*r+m.y*o,y:-m.x*o+m.y*r}))),l=i.flat();if(l.length===0)return[];let s=1/0,u=-1/0;for(let d of l)s=Math.min(s,d.y),u=Math.max(u,d.y);let c=(d,m)=>({x:d*r-m*o,y:d*o+m*r}),a=[],h=s+n/2;for(;h<u;){let d=[];for(let m of i)for(let p=0;p<m.length;p++){let y=m[p],w=m[(p+1)%m.length];(y.y<=h&&h<w.y||w.y<=h&&h<y.y)&&d.push(y.x+(h-y.y)/(w.y-y.y)*(w.x-y.x))}d.sort((m,p)=>m-p);for(let m=0;m+1<d.length;m+=2)d[m+1]-d[m]>.5&&a.push([c(d[m],h),c(d[m+1],h)]);h+=n}return a}var lo=2,$n=.75,Mi=.8,io=.6;function ao(e,t){return[...so(e,t,!1),...so(e,t,!0)]}function so(e,t,n){if(!(t>0))return[];let r=c=>n?{x:c.y,y:c.x}:c,o=e.filter(c=>c.length>=3).map(c=>c.map(r)),i=o.flat().map(c=>c.y);if(i.length===0)return[];let l=Math.min(...i),s=Math.max(...i),u=[];for(let c=Math.floor(l/t)*t;c<s-.5;c+=t){if(!(c>l+.5))continue;let a=[];for(let h of o)for(let d=0;d<h.length;d++){let m=h[d],p=h[(d+1)%h.length];(m.y<=c&&c<p.y||p.y<=c&&c<m.y)&&a.push(m.x+(c-m.y)/(p.y-m.y)*(p.x-m.x))}a.sort((h,d)=>h-d);for(let h=0;h+1<a.length;h+=2)a[h+1]-a[h]>.5&&u.push([r({x:a[h],y:c}),r({x:a[h+1],y:c})])}return u}function uo(e){return .2126*e.r+.7152*e.g+.0722*e.b>.5?{r:e.r*.84,g:e.g*.84,b:e.b*.8,a:e.a}:{r:e.r+(1-e.r)*.25,g:e.g+(1-e.g)*.25,b:e.b+(1-e.b)*.25,a:e.a}}function Gn(e){return e.style.fillStyle==="grid"&&e.style.fill.a>0&&["rectangle","ellipse","diamond","path"].includes(e.kind)}function He(e,t,n){let r=(Math.imul(e,668265261)^Math.imul(t,374761393)^Math.imul(n,2654435761))>>>0;return r=Math.imul(r^r>>>15,2246822507)>>>0,r=Math.imul(r^r>>>13,3266489909)>>>0,r=(r^r>>>16)>>>0,r/4294967296}function co(e,t,n){let r=n/lo;return{x:(e+.5+(He(e,t,1)-.5)*io)*r,y:(t+.5+(He(e,t,2)-.5)*io)*r}}function Pi(e,t,n,r){let o=1/0;for(let i=-1;i<=1;i++)for(let l=-1;l<=1;l++){if(i===0&&l===0)continue;let s=co(e+i,t+l,r);o=Math.min(o,Math.hypot(s.x-n.x,s.y-n.y))}return o*Mi}function vi(e,t,n){let r=Math.cos(t),o=Math.sin(t),i=n*.8,l=n*.5;return[-1,0,1].map(s=>{let u=e.x-o*l*s,c=e.y+r*l*s;return[{x:u-r*i,y:c-o*i},{x:u+r*i,y:c+o*i}]})}function Ri(e,t){let n=!1;for(let r of e){if(r.length<3)continue;let o=r.length-1;for(let i=0;i<r.length;i++){let l=r[i],s=r[o];l.y>t.y!=s.y>t.y&&t.x<(s.x-l.x)*(t.y-l.y)/(s.y-l.y)+l.x&&(n=!n),o=i}}return n}function Ai(e,t){let n=1/0;for(let r of t)if(!(r.length<2))for(let o=0;o<r.length;o++){let i=r[o],l=r[(o+1)%r.length],s=l.x-i.x,u=l.y-i.y,c=s*s+u*u,a=c>0?Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*u)/c)):0;n=Math.min(n,Math.hypot(e.x-(i.x+a*s),e.y-(i.y+a*u)))}return n}var Si=(e,t)=>t.x>=e.x&&t.x<e.x+e.width&&t.y>=e.y&&t.y<e.y+e.height,Xe=new Map;function ho(e){if(e.length===0)return[];let t=e.map(o=>[o.kind,o.x,o.y,o.width,o.height,o.rotation??0,jt(o),JSON.stringify(o.subpaths??null),o.style.stroke.r,o.style.stroke.g,o.style.stroke.b,o.style.stroke.a,o.style.roughness,o.style.strokeWidth].join(",")).join(";"),n=Xe.get(t);if(n)return n;let r=Ei(e);return Xe.size>=16&&Xe.clear(),Xe.set(t,r),r}function Ei(e){let t=e.map(i=>{let l=zn(i).map(m=>m.map(p=>Rt(i,p))),s=l.flat(),u=s.map(m=>m.x),c=s.map(m=>m.y),a=u.length?Math.min(...u):0,h=c.length?Math.min(...c):0,d={x:a,y:h,width:(u.length?Math.max(...u):0)-a,height:(c.length?Math.max(...c):0)-h};return{contours:l,box:d,cell:jt(i),element:i}}),n=t.map(()=>[]),r=new Set;for(let i of t){let l=i.cell/lo,s=ne(i.box,-i.cell,-i.cell),u=Math.floor(s.x/l),c=Math.ceil((s.x+s.width)/l),a=Math.floor(s.y/l),h=Math.ceil((s.y+s.height)/l),d=$n*i.cell;for(let m=u;m<c;m++)for(let p=a;p<h;p++){let y=`${i.cell}|${m}|${p}`;if(r.has(y))continue;r.add(y);let w=co(m,p,i.cell),P=1/0,A=-1;for(let f=0;f<t.length;f++){let g=t[f];if(!Si(ne(g.box,-d,-d),w))continue;if(Ri(g.contours,w)){P=0;break}let M=Ai(w,g.contours);M<P&&(P=M,A=f)}if(!(P>0&&P<=d&&A>=0))continue;let k=He(m,p,3)*Math.PI,v=Pi(m,p,w,i.cell),b=Math.trunc(He(m,p,4)*4294967296)>>>0;for(let[f,g]of vi(w,k,v))n[A].push([f,g,b])}}let o=[];return t.forEach((i,l)=>{if(n[l].length===0)return;let s=i.element,u=new U;for(let[c,a,h]of n[l])s.style.roughness<=0?u.moveTo(c).lineTo(a):Dt(c,a,new Vt(h),s.style.roughness*.35,.2,!1,u);o.push({ink:{...s.style.stroke,a:s.style.stroke.a*.6},width:Math.max(.8,s.style.strokeWidth*.45),path:u})}),o}var Je=class{constructor(t=6e3){E(this,"map",new Map);E(this,"limit");this.limit=t}get(t,n){let r=this.map.get(t);if(r!==void 0)return r;let o=n();return this.map.size>=this.limit&&this.map.clear(),this.map.set(t,o),o}},po=new Je,Ti=new Je;function yo(e,t){let n=e.style;return[t,e.kind,e.x,e.y,e.width,e.height,e.seed,n.roughness,n.bowing,n.strokeWidth,n.fillStyle,n.fillStyle==="grid"?jt(e):0,e.path?e.path.join(","):e.subpaths?JSON.stringify(e.subpaths):""].join("|")}var jt=e=>Math.max(8,e.style.gridSize??50);function Xt(e){return e.kind==="freehand"&&e.path===null?fo(e):po.get(yo(e,0),()=>fo(e))}function go(e){return[{x:e.x,y:e.y},{x:xt(e),y:e.y},{x:xt(e),y:kt(e)},{x:e.x,y:kt(e)}]}function Ke(e){return[{x:wt(e),y:e.y},{x:xt(e),y:Mt(e)},{x:wt(e),y:kt(e)},{x:e.x,y:Mt(e)}]}function fo(e){let t=nt(e),n=new Vt(e.seed),r=e.style.roughness;switch(e.kind){case"ellipse":return r<=0?U.ellipse(t):no(t,n,r);case"diamond":return r<=0?new U().addLines(Ke(t)).close():Wn(Ke(t),n,r,e.style.bowing);case"text":case"connector":return U.rect(t);case"freehand":return Fi(e);case"path":return r<=0?Pn(e):Ii(e,n);default:return r<=0?U.rect(t):Wn(go(t),n,r,e.style.bowing)}}function Ii(e,t){let n=e.style.roughness,r=new U;for(let o of re(e)){let i=o.points;for(let l=0;l<(i.length-1)/3;l++){let s=i[3*l],u=i[3*l+1],c=i[3*l+2],a=i[3*l+3];if(u.x===s.x&&u.y===s.y&&c.x===a.x&&c.y===a.y){Dt(s,a,t,n,e.style.bowing,!0,r);continue}let h=Math.hypot(u.x-s.x,u.y-s.y)+Math.hypot(c.x-u.x,c.y-u.y)+Math.hypot(a.x-c.x,a.y-c.y),d=Math.min(2.5,h/30)*n;for(let m=0;m<2;m++){let p=m===0?1:.5,y=()=>t.signed()*d*p;r.moveTo(s);let w=u.x+y(),P=u.y+y(),A=c.x+y(),k=c.y+y();r.curveTo(a,{x:w,y:P},{x:A,y:k})}}}return r}function Fi(e){let t=nt(e),n=e.path;if(n&&n.length>=8&&(n.length-2)%6===0){let i=s=>({x:t.x+n[2*s]*t.width,y:t.y+n[2*s+1]*t.height}),l=new U().moveTo(i(0));for(let s=0;s<Math.floor((n.length/2-1)/3);s++)l.curveTo(i(3*s+3),i(3*s+1),i(3*s+2));return l}let r=(e.points??[]).map(i=>({x:t.x+i.x*t.width,y:t.y+i.y*t.height})),o=new U;if(r.length===0)return o;if(o.moveTo(r[0]),r.length===1)return o.lineTo(r[0]);if(r.length===2)return o.lineTo(r[1]);for(let i=1;i<r.length-1;i++)o.quadTo({x:(r[i].x+r[i+1].x)/2,y:(r[i].y+r[i+1].y)/2},r[i]);return o.lineTo(r[r.length-1])}function zn(e){return e.kind!=="path"?[Li(e)]:re(e).map(t=>Or(t.points,3))}function Li(e){let t=nt(e);if(e.kind==="ellipse"){let n=[];for(let r=0;r<48;r++){let o=2*Math.PI*r/48;n.push({x:wt(t)+t.width/2*Math.cos(o),y:Mt(t)+t.height/2*Math.sin(o)})}return n}return e.kind==="diamond"?Ke(t):go(t)}function qe(e){let t=nt(e);return e.kind==="ellipse"?U.ellipse(t):e.kind==="path"?Pn(e):e.kind==="diamond"?new U().addLines(Ke(t)).close():U.rect(t)}function Bn(e){return e.style.fillStyle==="solid"||["freehand","connector","text","image"].includes(e.kind)?new U:po.get(yo(e,1),()=>Ci(e))}function Ci(e){let t=zn(e),n=new Vt((e.seed^1540483477)>>>0),r=new U;if(e.style.fillStyle==="grid"){for(let[l,s]of ao(t,jt(e)))e.style.roughness<=0?r.moveTo(l).lineTo(s):Dt(l,s,n,e.style.roughness*.3,.3,!1,r);return r}let o=Math.max(4,e.style.strokeWidth*4),i=[Vn];e.style.fillStyle==="crossHatch"&&i.push(Vn+Math.PI/2);for(let l of i)for(let[s,u]of ro(t,l,o))e.style.roughness<=0?r.moveTo(s).lineTo(u):Dt(s,u,n,e.style.roughness*.6,.5,!1,r);return r}function Qe(e,t){switch(e){case"solid":return null;case"dashed":return[Math.max(8,t*4),Math.max(6,t*3)];case"dotted":return[.01,Math.max(5,t*2.6)]}}function Un(e,t,n){let r=e.connector;if(!r)return[new U,new U];let[o,i]=Ft(e,t),l=Ct(e,t),s=r.hops===!0&&n?Di(e,l,n,t):[],u=[e.seed,e.style.roughness,e.style.bowing,e.style.strokeWidth,r.routing,r.startHead,r.endHead,r.start.port,r.end.port,o.x,o.y,i.x,i.y,JSON.stringify(r.waypoints),JSON.stringify(s)].join("|");return Ti.get(u,()=>Oi(e,l,s))}function bo(e){return Math.max(8,e*4)}function xo(e){let t=e.points,n=[];if(e.kind==="polyline"){for(let r=0;r<t.length-1;r++)n.push([t[r],t[r+1]]);return n}for(let r=0;r<Math.floor((t.length-1)/3);r++){let o=t.slice(3*r,3*r+4),i=[];for(let l=0;l<=24;l++)i.push(Nn(o,l/24));n.push(i)}return n}function ko(e){let t=[0];for(let n=1;n<e.length;n++)t.push(t[n-1]+Math.hypot(e[n].x-e[n-1].x,e[n].y-e[n-1].y));return t}function Nn(e,t){let n=1-t;return{x:n*n*n*e[0].x+3*n*n*t*e[1].x+3*n*t*t*e[2].x+t*t*t*e[3].x,y:n*n*n*e[0].y+3*n*n*t*e[1].y+3*n*t*t*e[2].y+t*t*t*e[3].y}}function mo(e,t,n){let r=(i,l)=>{let s=(p,y)=>({x:p.x+(y.x-p.x)*l,y:p.y+(y.y-p.y)*l}),u=s(i[0],i[1]),c=s(i[1],i[2]),a=s(i[2],i[3]),h=s(u,c),d=s(c,a),m=s(h,d);return[[i[0],u,h,m],[m,d,a,i[3]]]},o=r(e,n)[0];return n>0?r(o,t/n)[1]:[e[0],e[0],e[0],e[0]]}function Di(e,t,n,r){let o=xo(t);if(o.length===0)return[];let i=new Set(n.layers.filter(c=>c.visible).map(c=>c.id)),l=[];for(let c of It(n)){if(c.id===e.id)break;c.kind!=="connector"||!i.has(c.layerID)||l.push(Lt(Ct(c,r)))}let s=bo(e.style.strokeWidth),u=[];for(let c of o){let a=ko(c),h=a[a.length-1],d=[];for(let p=0;p<c.length-1;p++){let y=c[p],w=c[p+1],P=w.x-y.x,A=w.y-y.y;for(let k of l)for(let v=0;v<k.length-1;v++){let b=k[v],f=k[v+1],g=f.x-b.x,M=f.y-b.y,x=P*M-A*g;if(Math.abs(x)<1e-9)continue;let R=b.x-y.x,S=b.y-y.y,C=(R*M-S*g)/x,F=(R*A-S*P)/x;C>0&&C<1&&F>=0&&F<=1&&d.push(a[p]+C*(a[p+1]-a[p]))}}let m=[];for(let p of d.sort((y,w)=>y-w))p<s+2||p>h-s-2||m.length>0&&p-m[m.length-1]<2*s+2||m.push(p);u.push(m)}return u}function Oi(e,t,n){let r=e.connector,o=new Vt(e.seed),i=e.style.roughness,l=e.style.bowing,s=new U,u=new U,c=i*3,a=()=>o.signed()*c,h=(P,A,k,v)=>{let b={x:k.y,y:-k.x};(b.y>1e-9||Math.abs(b.y)<=1e-9&&b.x>0)&&(b={x:-b.x,y:-b.y});let f=v*.5523,g={x:(P.x+A.x)/2,y:(P.y+A.y)/2},M={x:g.x+b.x*v,y:g.y+b.y*v};s.moveTo(P);let x=P.x+b.x*f+a(),R=P.y+b.y*f+a(),S=M.x-k.x*f+a(),C=M.y-k.y*f+a();s.curveTo(M,{x,y:R},{x:S,y:C});let F=M.x+k.x*f+a(),D=M.y+k.y*f+a(),$=A.x+b.x*f+a(),W=A.y+b.y*f+a();s.curveTo(A,{x:F,y:D},{x:$,y:W})},d=bo(e.style.strokeWidth);if(t.kind==="polyline"){let P=t.points,A=(k,v)=>{i<=0?s.moveTo(k).lineTo(v):Dt(k,v,o,i,l,!0,s)};for(let k=0;k<Math.max(P.length-1,0);k++){let v=P[k],b=P[k+1],f=Math.hypot(b.x-v.x,b.y-v.y),g=f>0?{x:(b.x-v.x)/f,y:(b.y-v.y)/f}:{x:0,y:0},M=R=>({x:v.x+g.x*R,y:v.y+g.y*R}),x=v;for(let R of k<n.length?n[k]:[]){let S=M(R-d),C=M(R+d);A(x,S),h(S,C,g,d),x=C}A(x,b)}}else{let P=t.points,A=xo(t);s.moveTo(P[0]);for(let k=0;k<Math.floor((P.length-1)/3);k++){let v=P[3*k+1],b=P[3*k+2],f=P[3*k+3],g=v.x+a(),M=v.y+a(),x=b.x+a(),R=b.y+a(),S=k<n.length?n[k]:[];if(S.length===0){s.curveTo(f,{x:g,y:M},{x,y:R});continue}let C=[P[3*k],{x:g,y:M},{x,y:R},f],F=ko(A[k]),D=Z=>{let L=0;for(;L<F.length-2&&F[L+1]<Z;)L++;let z=F[L+1]-F[L];return(L+(z>0?(Z-F[L])/z:0))/24},$=0;for(let Z of S){let L=D(Z-d),z=D(Z+d),K=mo(C,$,L);(k>0||$>0)&&s.moveTo(K[0]),s.curveTo(K[3],K[1],K[2]);let ot=Nn(C,L),X=Nn(C,z),rt=Math.hypot(X.x-ot.x,X.y-ot.y),yt=rt>0?{x:(X.x-ot.x)/rt,y:(X.y-ot.y)/rt}:{x:0,y:0};h(ot,X,yt,rt/2),$=z}let W=mo(C,$,1);s.moveTo(W[0]).curveTo(W[3],W[1],W[2])}}let m=Lt(t),p=Math.max(10,e.style.strokeWidth*5),y=(P,A)=>{i<=0?s.moveTo(P).lineTo(A):Dt(P,A,o,i*.5,0,!0,s)},w=(P,A,k)=>{let[v,b]=Nr(A,k,p);switch(P){case"arrow":y(v,A),y(b,A);break;case"triangle":y(v,A),y(b,A),y(v,b),u.moveTo(A).lineTo(v).lineTo(b).close();break;case"dot":{let f=p*.32,g=Math.atan2(A.y-k.y,A.x-k.x),M=A.x-f*Math.cos(g),x=A.y-f*Math.sin(g);u.addEllipse({x:M-f,y:x-f,width:2*f,height:2*f});break}case"bar":{let f=Math.atan2(A.y-k.y,A.x-k.x)+Math.PI/2,g=p*.5;y({x:A.x-g*Math.cos(f),y:A.y-g*Math.sin(f)},{x:A.x+g*Math.cos(f),y:A.y+g*Math.sin(f)});break}}};return m.length>1&&(w(r.endHead,m[m.length-1],m[m.length-2]),w(r.startHead,m[0],m[1])),[s,u]}function Xn(e,t){switch(e){case"linear":return t;case"easeIn":return t*t*t;case"easeOut":return 1-Math.pow(1-t,3);case"easeInOut":return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2;case"hold":return 0;case"spring":return Yi(t);case"bounce":return Wi(t);case"elastic":return Vi(t)}}function Yi(e){if(e<=0)return 0;if(e>=1)return 1;let t=n=>1-Math.exp(-6*n)*(Math.cos(3*Math.PI*n)+6/(3*Math.PI)*Math.sin(3*Math.PI*n));return t(e)+e*(1-t(1))}function Wi(e){if(e<=0)return 0;if(e>=1)return 1;let t=7.5625,n=2.75;if(e<1/n)return t*e*e;if(e<2/n){let o=e-1.5/n;return t*o*o+.75}if(e<2.5/n){let o=e-2.25/n;return t*o*o+.9375}let r=e-2.625/n;return t*r*r+.984375}function Vi(e){return e<=0?0:e>=1?1:Math.pow(2,-10*e)*Math.sin((e*10-.75)*(2*Math.PI/3))+1}var ke=(e,t)=>e%t;function we(e,t){let n=(e.repeats??[]).filter(Ye).slice().sort((r,o)=>r.start-o.start);if(n.length===0)return t;for(let r of n){if(!(t>=r.end))continue;let o=r.end-r.start;if(r.count===null)return r.start+ke(t-r.start,o);let i=o*r.count;if(t<r.start+i)return r.start+ke(t-r.start,o);t-=i-o}return t}function Zn(e,t,n,r,o){t=we(e,t);let i,l;for(let a of e.keys)if(n(a)!==void 0)if(a.t<=t)i=a;else{l=a;break}if(!i&&!l)return r;if(i&&!l)return n(i);if(!i&&l)return n(l);let s=i,u=l,c=u.t-s.t>0?(t-s.t)/(u.t-s.t):1;return o(n(s),n(u),Xn(s.ease??"linear",c))}var $i=(e,t,n)=>e+(t-e)*n,_e=(e,t,n)=>Math.min(Math.max(e+(t-e)*n,0),1),wo=(e,t,n)=>({r:_e(e.r,t.r,n),g:_e(e.g,t.g,n),b:_e(e.b,t.b,n),a:_e(e.a,t.a,n)});function $t(e,t,n,r){return Zn(e,t,o=>o[n],r,$i)}function Gi(e,t){t=we(e,t);let n=(o,i)=>{let l;for(let u of e.keys)u.t<=t&&o(u)!==void 0&&(l=u);let s=e.keys.find(u=>u.t>t&&o(u)!==void 0);return!l||!s?!1:l.ease!=="hold"&&!i(o(l),o(s))},r=o=>n(i=>i[o],(i,l)=>i===l);return r("x")||r("y")||r("width")||r("height")||r("rotation")||r("strokeWidth")||n(o=>o.stroke,_t)||n(o=>o.fill,_t)||r("reveal")||r("opacity")}function jn(e,t){t=we(e,t);let n=e.keys.filter(o=>o.visible!==void 0);if(n.length===0)return!0;let r;for(let o of n)o.t<=t&&(r=o);return r?r.visible:!n[0].visible}function zi(e,t,n){if(t=at(t),e.keys.some(r=>r.reveal!==void 0)){let r=$t(e,n,"reveal",t.reveal??1);t.reveal=r>=1?null:Math.max(0,r)}if(e.keys.some(r=>r.opacity!==void 0)){let r=Math.min(Math.max($t(e,n,"opacity",t.style.opacity??1),0),1);t.style.opacity=r>=1?null:r}return t.kind==="connector"||(t.x=$t(e,n,"x",t.x),t.y=$t(e,n,"y",t.y),t.width=Math.max(0,$t(e,n,"width",t.width)),t.height=Math.max(0,$t(e,n,"height",t.height)),e.keys.some(r=>r.rotation!==void 0)&&(t.rotation=$t(e,n,"rotation",mt(t))),t.style.strokeWidth=Math.max(0,$t(e,n,"strokeWidth",t.style.strokeWidth)),t.style.stroke=Zn(e,n,r=>r.stroke,t.style.stroke,wo),t.style.fill=Zn(e,n,r=>r.fill,t.style.fill,wo)),t}function Ni(e,t){t=we(e,t);let n=null;for(let o of e.follow??[])o.start<=t&&(n===null||o.start>n.start)&&(n=o);if(!n)return null;let r=n;return e.keys.some(o=>o.t>=r.end&&o.t<=t&&(o.x!==void 0||o.y!==void 0))?null:n}function Ze(e,t){if(e.kind==="connector")return new Yt(Lt(Ct(e,At(t))));let n=at(e);n.style.roughness=0;let r=Xt(n).contours()[0]??[];return new Yt(mt(e)===0?r:r.map(o=>Rt(e,o)))}function Bi(e,t,n,r){let o=Ni(e,n);if(!o)return t;n=we(e,n);let i=r.elements.find(h=>h.id===o.path);if(!i||i.id===t.id)return t;let l=Ze(i,r),s=o.end-o.start,u=Math.min(Math.max(Xn(o.ease??"easeInOut",s>0?Math.min(1,(n-o.start)/s):1),0),1)*(o.laps??1);u>1&&(u=ke(u,1)===0?1:ke(u,1)),o.reverse===!0&&(u=1-u);let c=l.point(u),a=at(t);if(a.x=c.x-t.width/2,a.y=c.y-t.height/2,o.orient===!0){let h=o.reverse===!0?-.01:.01,d=l.point(u-h/2),m=l.point(u+h/2);(d.x!==m.x||d.y!==m.y)&&(a.rotation=Math.atan2(m.y-d.y,m.x-d.x))}return a}function Ui(e,t,n,r){if(!(n>0))return 0;let o=ct(e.duration);if(o>0){let l=ge(t*o/n);l!==0&&(t=l*n/o)}let i=ke(t*r,n);return i<0?-i:i===0?0:n-i}function Zi(e){let t=new Map;for(let n of e.tracks)t.has(n.element)||t.set(n.element,n);return t}function St(e,t,n="initial",r=null,o={}){return Pt(ie(e,t,n,r,o),ct(t))}var ji={fps:12,duration:0,boil:null,settle:null,poster:null,tracks:[],camera:null,markers:null};function ie(e,t,n="initial",r=null,o={}){return Hn(e,t,n,r,o).frame}function Hn(e,t,n="initial",r=null,o={}){let i=pr(e,n),l=hn(e,n),s=new Map;for(let f of e.elements){let g=yr(f,l);g.length>0&&s.set(f.id,g)}let c=(e.flows??[]).length>0||e.elements.some(f=>f.gauge||(f.overrides??[]).some(g=>Kt(g.when))),a=e.timeline??(i.size===0&&s.size===0&&!c?null:ji);if(!a)return{frame:e,metrics:je()};t=ct(t);let h=Zi(a);for(let[f,g]of s){let M=h.get(f);!M?.follow||!g.some(x=>x.reroute)||h.set(f,{...M,follow:M.follow.map(x=>{let R=x.path;for(let S of g)R=S.reroute?.[R]??R;return{...x,path:R}})})}let d=a.boil===null?null:Math.trunc(Math.floor(t*te(a.fps)+1e-9)/Math.max(1,a.boil))%pn>>>0,m=new Set;for(let f of h.values())jn(f,t)||m.add(f.element);for(let f of i)m.add(f);let p=null;if(a.settle===!0){p=new Set;for(let f of h.values())Gi(f,t)&&p.add(f.element)}let y=f=>{let g=h.get(f.id)?.boil;return g??(p?f.connector?[f.connector.start.elementID,f.connector.end.elementID].some(M=>M!==null&&p.has(M)):p.has(f.id):!0)},w=e.elements.map(f=>{let g=h.get(f.id),M=g?zi(g,f,t):f;for(let S of s.get(f.id)??[])M=De(S,M);let x=s.get(f.id);if(x){let S=x.map(F=>F.capacity).filter(F=>F!==null&&Number.isFinite(F)),C=x.map(F=>F.delay).filter(F=>F!==null&&Number.isFinite(F));S.length>0&&(M.capacity=Math.max(Math.min(...S),0)),C.length>0&&M.kind!=="connector"&&(M.delay=Math.max(Math.max(...C),0))}d!==null&&d>0&&y(f)&&(M===f&&(M=at(f)),M.seed=Be(f.seed,d));let R=g?.march!=null?Qe(M.style.dash,M.style.strokeWidth):null;return g?.march!=null&&R&&(M===f&&(M=at(f)),M.style.dashOffset=Ui(a,g.march,R.reduce((S,C)=>S+C,0),t)),M});w=w.map((f,g)=>m.has(f.id)?e.elements[g]:f);let P={...e,elements:w,timeline:null};w=w.map(f=>{let g=h.get(f.id);return g?Bi(g,f,t,P):f});let A={...e,elements:w,timeline:null},k=At(A),v=new Set(m);w=w.map(f=>{let g=f.connector;if(!g||![g.start.elementID,g.end.elementID].some(S=>S!==null&&m.has(S)))return f;if(!(h.get(f.id)?.keys.some(S=>S.visible!==void 0)??!1)||[g.start.elementID,g.end.elementID].some(S=>S!==null&&i.has(S)))return v.add(f.id),f;let[M,x]=Ft(f,k),R=at(f);return R.connector.start={elementID:null,port:g.start.port,x:M.x,y:M.y},R.connector.end={elementID:null,port:g.end.port,x:x.x,y:x.y},R}),w=w.filter(f=>!v.has(f.id));let b=je();if(c){let f=new Set([...s].filter(([,R])=>R.some(S=>S.offline===!0)).map(([R])=>R)),g={...e,elements:w,timeline:null},M=qr(e.flows,g,t,l,f,r,o);b=M.metrics;let x=to(w,M.metrics,l,g,e.flows??[],Math.max(0,Math.min(r??t,1e6)),o);Object.assign(b.carry,x.readings),w=[...x.elements,...M.packets]}return{frame:{...e,elements:w,timeline:null,flows:c?null:e.flows},metrics:b}}function Gt(e){return e.timeline?e.timeline.poster??e.timeline.duration:0}function Po(e){return e.timeline?St(e,Gt(e)):Pt(ie(e,0),0)}function Xi(e,t){let n=e.camera??[];if(n.length===0)return null;let r;for(let s of n)s.t<=t&&(r=s);let o=n.find(s=>s.t>t);if(!r)return Mo(n[0]);if(!o)return Mo(r);let i=Xn(r.ease??"easeInOut",(t-r.t)/Math.max(o.t-r.t,1e-9)),l=(s,u)=>s+(u-s)*i;return{x:l(r.x,o.x),y:l(r.y,o.y),width:Math.max(1,l(r.width,o.width)),height:Math.max(1,l(r.height,o.height))}}var Mo=e=>({x:e.x,y:e.y,width:e.width,height:e.height});function se(e,t){let n=e.camera?.[0],r=Xi(e,t);return!n||!r||!(r.width>0&&r.height>0)?null:Hi(r,n.width/n.height)}function Hi(e,t){if(!(e.width>0&&e.height>0&&t>0))return e;let n=e.width,r=e.height;return e.width/e.height<t?n=e.height*t:r=e.width/t,{x:e.x+e.width/2-n/2,y:e.y+e.height/2-r/2,width:n,height:r}}function Ji(e){return Math.max(1,Math.ceil(ct(e.duration)*te(e.fps)))}function tn(e){let t=te(e.fps),n=[];for(let o=0;o<Ji(e);o++)n.push(o/t);let r=n[n.length-1];return e.duration-r>1e-6&&n.push(e.duration),n}function vo(e,t){let n=-1;return(e.markers??[]).forEach((r,o)=>{r.t<=t&&(n=o)}),n}function Ro(e){let t=e.timeline;if(!t)return new Set;let n=t.poster??t.duration;return new Set(t.tracks.filter(r=>!jn(r,0)&&!jn(r,n)).map(r=>r.element))}var Ki=8,qi=2e4,Jn=1e-9;function en(e,t){let n=(e.timeline?.markers??[]).find(r=>r.name.toLowerCase()===t);return n?Math.min(Math.max(n.t,0),ct(e.timeline?.duration??0)):null}function Pe(e,t){switch(t){case"up":return en(e,"up")??0;case"over":return en(e,"over")??Pe(e,"up");case"down":return en(e,"down")??Pe(e,"over");default:return en(e,"hit")}}function Qi(e,t,n,r){let o=ct(e.timeline?.duration??0);if(e.button===!0)return Pe(e,"up")??0;let i=r!==null&&Number.isFinite(r)?r:0;switch(n??"loop"){case"still":return Math.min(e.timeline?.poster??o,o);case"click":return Math.min(Math.max(i,0),o);case"once":return Math.min(Math.max(t+i,0),o);default:{if(o<=0)return 0;let l=t+i,s=l%o;return s<0&&(s+=o),l>Jn&&(s<Jn||o-s<Jn)?o:s}}}function _i(e,t){let n=e.params;if(!n||Object.keys(n).length===0)return e;let r=new Map(Object.entries(n));for(let[i,l]of Object.entries(t??{}))r.has(i)&&r.set(i,l);let o=i=>i.includes("{{")?i.replace(/\{\{\s*([^{}]*?)\s*\}\}/g,(l,s)=>r.get(s)??l):i;return{...e,elements:e.elements.map(i=>{if(i.text===null&&i.args===null)return i;let l=at(i);return l.text!==null&&(l.text=o(l.text)),l.args!==null&&(l.args=Object.fromEntries(Object.entries(l.args).map(([s,u])=>[s,o(u)]))),l})}}function ts(e){return{id:e.id,name:e.name,layers:e.layers,elements:e.elements,theme:null,timeline:e.timeline,symbols:null,variables:null,flows:null}}function nn(e){return e.elements.some(t=>t.kind==="symbol")}function Pt(e,t,n=!0,r=new Map){if(!nn(e))return e;let o={left:qi};return{...e,elements:So(e.elements,e,t,Qn(e),[],n,o,r)}}function Qn(e){let t=new Map;for(let n of e.symbols??[])t.has(n.id)||t.set(n.id,n);return t}function So(e,t,n,r,o,i,l,s=new Map){let u=new Set(e.filter(h=>h.kind==="symbol").map(h=>h.id));if(u.size===0)return l.left-=e.length,e;let c=At(t),a=[];for(let h of e){if(l.left<=0)break;let d=h.connector;if(h.kind==="connector"&&d&&[d.start.elementID,d.end.elementID].some(b=>b!==null&&u.has(b))){let[b,f]=Ft(h,c),g=at(h);d.start.elementID!==null&&u.has(d.start.elementID)&&(g.connector.start={elementID:null,port:d.start.port,x:b.x,y:b.y}),d.end.elementID!==null&&u.has(d.end.elementID)&&(g.connector.end={elementID:null,port:d.end.port,x:f.x,y:f.y}),a.push(g),l.left-=1;continue}if(h.kind!=="symbol"){a.push(h),l.left-=1;continue}l.left-=1;let m=h.symbol,p=m===null?void 0:r.get(m);if(m===null||!p||o.includes(m)||o.length>=Ki)continue;let y=o.length===0?s.get(h.id):void 0,w=y!==void 0?Math.min(Math.max(y,0),ct(p.timeline?.duration??0)):Qi(p,n,h.playback,h.offset),P=ts(_i(p,h.args)),A=i?ie(P,w):P,k=new Set(A.layers.filter(b=>b.visible).map(b=>b.id)),v={...A,elements:It(A).filter(b=>k.has(b.layerID)),layers:[{id:h.layerID,name:"",visible:!0,locked:!1}]};for(let b of So(v.elements,v,w,r,[...o,m],i,l))a.push(es(b,h,p))}return a}function es(e,t,n){let r={x:t.x,y:t.y,width:t.width,height:t.height},o=r.width/n.width,i=r.height/n.height,l=Math.sqrt(Math.abs(o*i)),s={x:r.x+r.width/2,y:r.y+r.height/2},u=mt(t),c=m=>Wt({x:r.x+m.x*o,y:r.y+m.y*i},s,u),a=at(e);a.id=qn(t.id,e.id),a.layerID=t.layerID,a.groupID=null,a.link=e.link===null?null:qn(t.id,e.link),a.seed=Be(e.seed,t.seed),a.click=null,a.hover=null;let h={x:r.x+e.x*o,y:r.y+e.y*i,width:e.width*o,height:e.height*i},d=Wt({x:h.x+h.width/2,y:h.y+h.height/2},s,u);if(a.x=d.x-h.width/2,a.y=d.y-h.height/2,a.width=h.width,a.height=h.height,(u!==0||e.rotation!==null)&&(a.rotation=mt(e)+u),a.style.strokeWidth=e.style.strokeWidth*l,a.style.fontSize=e.style.fontSize*l,e.style.gridSize!==null&&(a.style.gridSize=e.style.gridSize*l),t.style.opacity!==null&&(a.style.opacity=(e.style.opacity??1)*t.style.opacity),e.connector){let m=p=>{if(p.elementID!==null)return{elementID:qn(t.id,p.elementID),port:p.port,x:p.x,y:p.y};let y=c(p);return{elementID:null,port:p.port,x:y.x,y:y.y}};a.connector={...e.connector,start:m(e.connector.start),end:m(e.connector.end),waypoints:e.connector.waypoints?.map(c)??null}}return a}var Kn=(1n<<64n)-1n;function Me(e){let t=e+0x9e3779b97f4a7c15n&Kn;return t=(t^t>>30n)*0xbf58476d1ce4e5b9n&Kn,t=(t^t>>27n)*0x94d049bb133111ebn&Kn,t^t>>31n}function Ao(e){let t=e.replace(/-/g,"").padStart(32,"0").slice(-32);return[BigInt(`0x${t.slice(0,16)}`),BigInt(`0x${t.slice(16)}`)]}function qn(e,t){let[n,r]=Ao(e),[o,i]=Ao(t),l=Me(Me(Me(Me(n)^r)^o)^i),s=Me(l^0x6a09e667f3bcc909n),u=l.toString(16).padStart(16,"0")+s.toString(16).padStart(16,"0");return`${u.slice(0,8)}-${u.slice(8,12)}-${u.slice(12,16)}-${u.slice(16,20)}-${u.slice(20)}`.toUpperCase()}function ns(e,t){let n=t.findIndex(r=>r.name===e);return n>=0?n:t.findIndex(r=>r.name.toLowerCase()===e.toLowerCase())}function Eo(e,t){let n=e.timeline?.markers??[],r=new Map,o=null;for(let i of e.elements){let l=i.click,s=l&&br(l)?{...l.set?{set:l.set}:{},...l.toggle?{toggle:l.toggle}:{},...l.reset?{reset:!0}:{}}:null;if(l?.scene){let c=ns(l.scene,n);if(c>=0){r.set(i.id,{scene:c,...s});continue}}let u=(l?.url?Bt(l.url):null)??he(i.url);if(u){r.set(i.id,{url:u,...s});continue}if(s){r.set(i.id,{state:!0,...s});continue}if(i.link&&t&&t.pages.length>1){o||(o=new Map,t.pages.forEach((a,h)=>{for(let d of a.elements)o.has(d.id)||o.set(d.id,h)}));let c=o.get(i.link);c!==void 0&&t.pages[c]!==e&&r.set(i.id,{page:c})}}return r}function rs(e){let t=e.hover;if(!t)return e;let n={...e.style};if(t.stroke&&(n.stroke=t.stroke),t.fill&&(n.fill=t.fill),t.opacity!==null&&Number.isFinite(t.opacity)){let r=Math.min(Math.max(t.opacity,0),1);n.opacity=r>=1?null:r}return{...e,style:n}}function To(e,t){return{...e,elements:e.elements.map(n=>t.has(n.id)?rs(n):n)}}function Io(e){return!!e.hover&&(e.hover.stroke!==null||e.hover.fill!==null||e.hover.opacity!==null)}function Fo(e,t){let n=(e.text??"").split(`
5
+ `).find(r=>r.length>0);return n||(e.anchor?e.anchor:t||e.kind)}function Lo(e,t){let n=new Map;for(let r of e.elements){if(!t.has(r.id)||r.kind!=="symbol")continue;let o={...e,layers:[{id:r.layerID,name:"",visible:!0,locked:!1}],elements:[r]};for(let i of Pt(o,0,!1).elements)n.set(i.id,r.id)}return n}var Co=`
4
6
  .dottie-a { cursor: pointer; outline: none; }
5
7
  .dottie-a .dottie-h { display: none; }
6
8
  .dottie-a:hover .dottie-h, .dottie-a.dottie-hover .dottie-h, .dottie-a:focus-visible .dottie-h { display: inline; }
@@ -10,47 +12,47 @@
10
12
  .dottie-a .dottie-d { display: none; }
11
13
  .dottie-b:active .dottie-n, .dottie-b:active .dottie-h, .dottie-b.dottie-press .dottie-n, .dottie-b.dottie-press .dottie-h { display: none; }
12
14
  .dottie-b:active .dottie-d, .dottie-b.dottie-press .dottie-d { display: inline; }
13
- `;function W(t){let e=n=>Math.round(Math.min(Math.max(n,0),1)*255).toString(16).padStart(2,"0");return`#${e(t.r)}${e(t.g)}${e(t.b)}`}function qt(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Li=12,Rt="\u2028";function Jo(t){let e=Math.min(Li,t.width/2),n=Math.min(Li,t.height/2);return{x:t.x+e,y:t.y+n,width:t.width-2*e,height:t.height-2*n}}var hn=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?(?:[ \t]+#+)?[ \t]*$/,Yi=/^ {0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/,fn=/^ {0,3}(`{3,}|~{3,})/,Qt=/^( *)([-*+]|\d{1,9}[.)])([ \t]+|$)(.*)$/,Ae=/^ {0,3}> ?(.*)$/,Ho=/^ *\|? *:?-+:? *(\| *:?-+:? *)*\|? *$/;function un(t){let e=t.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&!e.endsWith("\\|")&&(e=e.slice(0,-1)),e.split(/(?<!\\)\|/).map(n=>n.trim())}function Ko(t){return yn(t.replace(/\r\n?/g,`
15
+ `;function ht(e){let t=n=>Math.round(Math.min(Math.max(n,0),1)*255).toString(16).padStart(2,"0");return`#${t(e.r)}${t(e.g)}${t(e.b)}`}function ve(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Do=12,Ht="\u2028";function os(e){let t=Math.min(Do,e.width/2),n=Math.min(Do,e.height/2);return{x:e.x+t,y:e.y+n,width:e.width-2*t,height:e.height-2*n}}var tr=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?(?:[ \t]+#+)?[ \t]*$/,Vo=/^ {0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/,er=/^ {0,3}(`{3,}|~{3,})/,Re=/^( *)([-*+]|\d{1,9}[.)])([ \t]+|$)(.*)$/,rn=/^ {0,3}> ?(.*)$/,is=/^ *\|? *:?-+:? *(\| *:?-+:? *)*\|? *$/;function _n(e){let t=e.trim();return t.startsWith("|")&&(t=t.slice(1)),t.endsWith("|")&&!t.endsWith("\\|")&&(t=t.slice(0,-1)),t.split(/(?<!\\)\|/).map(n=>n.trim())}function ss(e){return ir(e.replace(/\r\n?/g,`
14
16
  `).split(`
15
- `))}function yn(t){let e=[],n=0,i=null,o=()=>{i&&(e.push({kind:"paragraph",inline:it(i.join(`
16
- `))}),i=null)};for(;n<t.length;){let r=t[n];if(r.trim()===""){o(),n++;continue}let l=fn.exec(r);if(l){o();let u=new RegExp(`^ {0,3}${l[1][0]==="`"?"`":"~"}{${l[1].length},}[ \\t]*$`),c=[];for(n++;n<t.length&&!u.test(t[n]);)c.push(t[n++]);n++,e.push({kind:"code",text:c.join(`
17
- `)});continue}let s=hn.exec(r);if(s){o(),e.push({kind:"heading",level:s[1].length,inline:it(s[2]??"")}),n++;continue}if(i&&/^ {0,3}(=+|-+)[ \t]*$/.test(r)){let u=r.trim()[0]==="="?1:2;e.push({kind:"heading",level:u,inline:it(i.join(`
18
- `))}),i=null,n++;continue}if(Yi.test(r)){o(),e.push({kind:"rule"}),n++;continue}if(Ae.test(r)){o();let u=[];for(;n<t.length&&t[n].trim()!=="";){let c=Ae.exec(t[n]);u.push(c?c[1]:t[n]),n++}e.push({kind:"quote",children:yn(u)});continue}let a=Qt.exec(r);if(a&&(!i||a[4].trim()!=="")){o();let u=qo(t,n);e.push(u.block),n=u.next;continue}if(!i&&r.includes("|")&&n+1<t.length&&Ho.test(t[n+1])&&t[n+1].includes("-")){let u=un(r),c=un(t[n+1]).map(m=>m.startsWith(":")&&m.endsWith(":")?"center":m.endsWith(":")?"right":m.startsWith(":")?"left":null),h=[];for(n+=2;n<t.length&&t[n].trim()!==""&&!hn.test(t[n])&&!Ae.test(t[n])&&!fn.test(t[n]);)h.push(un(t[n]).slice(0,u.length).map(m=>it(m))),n++;e.push({kind:"table",align:c,head:u.map(m=>it(m)),rows:h});continue}i||(i=[]),i.push(r.replace(/^ +/,"")),n++}return o(),e}function qo(t,e){let n=Qt.exec(t[e]),i=n[1].length,o=/^\d/.test(n[2])?null:n[2],r=o===null?parseInt(n[2],10):null,l=[],s=e;for(;s<t.length;){let a=Qt.exec(t[s]);if(!a||a[1].length!==i||o===null!==/^\d/.test(a[2])||o!==null&&a[2]!==o)break;let u=a[1].length+a[2].length+Math.max(1,Math.min(a[3].length,4)),c=[a[4]];s++;let h=!1;for(;s<t.length;){let p=t[s];if(p.trim()===""){h=!0,c.push(""),s++;continue}if(p.length-p.trimStart().length>=u){c.push(p.slice(u)),h=!1,s++;continue}if(!h&&!Qt.test(p)&&!hn.test(p)&&!Ae.test(p)&&!fn.test(p)&&!Yi.test(p)){c.push(p.trimStart()),s++;continue}break}for(;c.length&&c[c.length-1].trim()==="";)c.pop();let m=null,d=/^\[([ xX])\](?:[ \t]+|$)/.exec(c[0]??"");if(d&&(m=d[1]!==" ",c[0]=c[0].slice(d[0].length)),l.push({checkbox:m,children:yn(c)}),h&&s<t.length&&t[s-1]?.trim()===""){let p=Qt.exec(t[s]);if(!p||p[1].length!==i)break}}return{block:{kind:"list",ordered:r,items:l},next:s}}function it(t,e={}){let n=[],i=(s,a)=>{s&&n.push({...a,text:s})},o=0,r="",l=()=>{i(r,e),r=""};for(;o<t.length;){let s=t.slice(o),a;if(s[0]==="\\"&&/^\\[\\`*_{}[\]()#+\-.!|~>]/.test(s)){r+=s[1],o+=2;continue}if(s.startsWith(`\\
19
- `)){for(r+=Rt,o+=2;t[o]===" ";)o++;continue}if(s[0]===`
20
- `){for(r=r.replace(/ +$/,""),r+=Rt,o++;t[o]===" ";)o++;continue}if(a=/^(`+)([\s\S]*?[^`])\1(?!`)/.exec(s)){l();let u=a[2].replace(/\n/g," ");/^ .* $/.test(u)&&(u=u.slice(1,-1)),i(u,{...e,mono:!0}),o+=a[0].length;continue}if(a=/^!\[([^\]]*)\]\([^)]*\)/.exec(s)){l(),n.push(...it(a[1],e)),o+=a[0].length;continue}if(a=/^\[([^\]]+)\]\([^)]*\)/.exec(s)){l(),n.push(...it(a[1],{...e,link:!0})),o+=a[0].length;continue}if(a=/^<((?:https?|ftp|mailto):[^>\s]+)>/.exec(s)){l(),i(a[1],{...e,link:!0}),o+=a[0].length;continue}if(a=/^~~(?=\S)([\s\S]*?\S)~~/.exec(s)){l(),n.push(...it(a[1],{...e,strike:!0})),o+=a[0].length;continue}if(a=/^(\*\*|__)(?=\S)([\s\S]*?\S)\1/.exec(s)){l(),n.push(...it(a[2],{...e,bold:!0})),o+=a[0].length;continue}if((a=/^(\*|_)(?=\S)([\s\S]*?\S)\1(?!\1)/.exec(s))&&(a[1]==="*"||!/\w/.test(t[o-1]??""))){l(),n.push(...it(a[2],{...e,italic:!0})),o+=a[0].length;continue}r+=s[0],o++}return l(),Qo(n)}function Qo(t){let e=/\b(?:(?:https?|ftp):\/\/|www\.)[^\s<]*[^\s<.,:;"')\]!?]/g;return t.flatMap(n=>{if(n.link||n.mono||!(n.text.includes("://")||n.text.includes("www.")))return[n];let i=[],o=0;for(let r of n.text.matchAll(e))r.index>o&&i.push({...n,text:n.text.slice(o,r.index)}),i.push({...n,text:r[0],link:!0}),o=r.index+r[0].length;return o<n.text.length&&i.push({...n,text:n.text.slice(o)}),i})}function Ee(t,e){return t.mono?wt[ue]:e}function Se(t,e,n){let i=Ee(e,n);if(e.mono&&i.fallback[t]===void 0)return Dn*e.size;let o=i.faces[Zt(i,e.bold,e.italic)];return(o.w[t]??i.faces.regular.w[t]??o.w.n)*e.size/1e3}function mn(t,e,n,i){return n.mono?0:(i.faces[Zt(i,n.bold,n.italic)].k[t+e]??0)*n.size/1e3}function dn(t,e,n){let i=Ee(e,n).fallback[t];if(i)return[i[0]*e.size,i[1]*e.size,i[2]*e.size];if(e.mono)return[Yn*e.size,On*e.size,0];let o=n.faces[Zt(n,e.bold,e.italic)];return[o.ascent*e.size,o.descent*e.size,o.leading*e.size]}var pn=class{constructor(e,n,i){v(this,"paras",[]);v(this,"nextSpacing",null);v(this,"fontSize");v(this,"width");v(this,"fam");this.fontSize=e,this.width=n,this.fam=i}get gap(){return this.fontSize*.5}spacing(e){return this.paras.length===0?0:this.nextSpacing??e}run(e,n,i,o={}){let r=!!e.mono;return{text:e.text,size:r?n*.9:n,bold:!!(e.bold||o.bold),italic:!!(e.italic||o.italic),mono:r,strike:!!e.strike,underline:!!e.link,alpha:i}}paragraph(e,n){this.paras.push({tabs:[],rule:null,tableRule:null,...e,quote:n}),this.nextSpacing=null}text(e,n,i,o={}){if(n.marker){let r={text:n.marker.text+" ",size:this.fontSize,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1};this.paragraph({runs:[r,...e],spacing:i,firstIndent:n.marker.start,indent:n.marker.hang,tabs:[{align:"left",x:n.marker.hang}],...o},n.quote)}else this.paragraph({runs:e,spacing:i,firstIndent:n.indent,indent:n.indent,...o},n.quote)}block(e,n){let i=n.quote!==null,o=i?.7:1;switch(e.kind){case"heading":{let r=[1.5,1.3,1.15,1.05,1,1][Math.min(Math.max(e.level,1),6)-1];this.text(e.inline.map(l=>this.run(l,this.fontSize*r,o,{bold:!0,italic:i})),n,this.spacing(this.gap*1.4));break}case"paragraph":this.text(e.inline.map(r=>this.run(r,this.fontSize,o,{italic:i})),n,this.spacing(this.gap));break;case"list":{let r=e.items.map((u,c)=>u.checkbox===!0?"\u2611":u.checkbox===!1?"\u2610":e.ordered!==null?`${e.ordered+c}.`:n.listDepth%2===0?"\u2022":"\u25E6"),l=u=>Fi({text:u,size:this.fontSize,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1},this.fam),s=Math.max(0,...r.map(l)),a=n.indent+Math.max(s+this.fontSize*.45,this.fontSize*1.2);e.items.forEach((u,c)=>{(c>0||n.listDepth>0||n.marker)&&(this.nextSpacing=this.fontSize*.15);let h={...n,marker:{text:r[c],start:n.indent,hang:a},indent:a,listDepth:n.listDepth+1};u.children.length===0&&this.text([],h,this.spacing(this.gap));for(let m of u.children)this.block(m,h),h.marker=null,this.nextSpacing=this.fontSize*.3;this.nextSpacing=null});break}case"quote":{let r={...n,quote:n.indent+3,indent:n.indent+this.fontSize};for(let l of e.children)this.block(l,r);break}case"code":{let l={text:e.text===""?" ":e.text.replace(/\n/g,Rt),size:this.fontSize*.85,bold:!1,italic:!1,mono:!0,strike:!1,underline:!1,alpha:o};this.text([l],{...n,indent:n.indent+this.fontSize*.5},this.spacing(this.gap));break}case"rule":{let r={text:" ",size:this.fontSize*.6,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1};this.text([r],n,this.spacing(this.gap),{rule:n.indent});break}case"table":this.table(e,n);break}}table(e,n){let i=[{cells:e.head,header:!0},...e.rows.map(g=>({cells:g,header:!1}))],o=Math.max(1,...i.map(g=>g.cells.length)),r=n.quote!==null,l=(g,k,P)=>g.map(b=>({...this.run({...b,text:b.text.replaceAll(Rt," ")},P,r?.7:1,{bold:k,italic:r})})),s=g=>{let k=new Array(o).fill(0);for(let P of i)P.cells.forEach((b,M)=>{M<o&&(k[M]=Math.max(k[M],l(b,P.header,g).reduce((T,S)=>T+Fi(S,this.fam),0)))});return k},a=Math.max(this.width-n.indent,1),u=this.fontSize,c=s(u),h=u*1.2,m=c.reduce((g,k)=>g+k,0)+h*(o-1);m>a&&(u=Math.max(this.fontSize*a/m,Math.min(this.fontSize,9)),c=s(u),h=u*1.2);let d=[],p=n.indent;for(let g of c)d.push(p),p+=g+h;let f=p-h-n.indent,y=[],x=!1;for(let g=0;g<o;g++){let k=e.align[g]??null;k==="center"?y.push({align:"center",x:d[g]+c[g]/2}):k==="right"?y.push({align:"right",x:d[g]+c[g]}):g>0&&y.push({align:"left",x:d[g]}),g===0&&(k==="center"||k==="right")&&(x=!0)}let w=g=>({text:g,size:u,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1});i.forEach((g,k)=>{let P=[];x&&P.push(w(" "));for(let M=0;M<o;M++)M>0&&P.push(w(" ")),M<g.cells.length&&P.push(...l(g.cells[M],g.header,u));P.length===0&&P.push(w(" "));let b=k===0?this.spacing(this.gap):k===1?u*.45:u*.2;this.paragraph({runs:P,spacing:b,firstIndent:n.indent,indent:n.indent,tabs:y,tableRule:g.header?[n.indent,f]:null},n.quote)})}};function Fi(t,e){let n=0,i="";for(let o of t.text)n+=Se(o,t,e),i&&(n+=mn(i,o,t,e)),i=o;return n}var Ci=28;function _o(t,e,n,i,o){let r=[],l=0,s=null;return t.forEach((a,u)=>{let c=u<t.length-1?[...a.runs,{text:`
21
- `,size:i,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1}]:a.runs,h=[];c.forEach((p,f)=>{for(let y of p.text)h.push({ch:y,run:f})});let m=0,d=!0;for(;m<h.length||d&&h.length===0;){let p=d?a.firstIndent:a.indent,f=e,y=[],x=p,w=-1,g=m;for(;g<h.length;g++){let{ch:T,run:S}=h[g],O=c[S];if(T===Rt||T===`
22
- `){y.push({ch:T,run:S,x,w:0}),g++;break}if(T===" "){let B=a.tabs.find(U=>U.x>x+.01),X;if(B)if(B.align==="left")X=B.x;else{let U=0,ot="";for(let D=g+1;D<h.length&&h[D].ch!==" "&&h[D].ch!==`
23
- `&&h[D].ch!==Rt;D++){let ft=c[h[D].run];U+=Se(h[D].ch,ft,o)+(ot?mn(ot,h[D].ch,ft,o):0),ot=h[D].ch}X=Math.max(x,B.align==="right"?B.x-U:B.x-U/2)}else X=(Math.floor(x/Ci)+1)*Ci;y.push({ch:T,run:S,x,w:X-x}),x=X;continue}let C=y[y.length-1],V=C&&C.run===S&&C.ch!==" "?mn(C.ch,T,O,o):0;C&&(C.w+=V,x+=V);let $=Se(T,O,o);if(T!==" "&&x+$>f+.01&&y.some(B=>B.ch!==" ")){w>=0&&(y.length=w+1,g=m+w+1),C&&(C.w-=V);break}y.push({ch:T,run:S,x,w:$}),x+=$,We(T,h[g+1]?.ch??"")&&(w=y.length-1)}if(y.length===0&&g===m&&m<h.length){let{ch:T,run:S}=h[m];y.push({ch:T,run:S,x:p,w:Se(T,c[S],o)}),g=m+1}let k=0,P=0,b=0;for(let T of y){let[S,O,C]=dn(T.ch,c[T.run],o);k=Math.max(k,S),P=Math.max(P,O),b=Math.max(b,C)}if(y.length===0&&([k,P,b]=dn(" ",c[0]??{text:" ",size:i,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1},o)),l=s?l+Math.round(s.desc)+Math.round(s.lead)+(d?a.spacing:0)+Math.round(k):Math.round(k),l+P>n+.5)return;let M={glyphs:y,asc:k,desc:P,lead:b,baseline:l,para:a,first:d};if(M.glyphs.forEach(T=>{T.r=c[T.run]}),r.push(M),s=M,d=!1,m=g,h.length===0)break}}),r}function Oi(t,e){let n=Jo({x:e.x,y:e.y,width:e.width,height:e.height});if(!(n.width>1&&n.height>1))return"";let i=he(e.style.font),o=new pn(e.style.fontSize,n.width,i);for(let c of Ko(t))o.block(c,{indent:0,marker:null,quote:null,listDepth:0});let r=_o(o.paras,n.width,n.height,e.style.fontSize,i),l=W(e.style.stroke),s="",a=[];for(let c of r){let h=c.para;if(h.quote!==null&&a.push([n.x+h.quote,n.y+c.baseline-c.asc,n.x+h.quote,n.y+c.baseline+c.desc]),h.rule!==null&&a.push([n.x+h.rule,n.y+c.baseline-3,n.x+n.width,n.y+c.baseline-3]),h.tableRule){let f=n.y+c.baseline+c.desc+2;a.push([n.x+h.tableRule[0],f,Math.min(n.x+n.width,n.x+h.tableRule[0]+h.tableRule[1]),f])}let m="",d=0,p=c.glyphs;for(;d<p.length;){let f=p[d].r,y=d,x="",w=Di(p[d].ch,Ee(f,i));for(;y<p.length&&tr(p[y].r,f)&&p[y].ch!==" "&&Di(p[y].ch,Ee(f,i))===w;)x+=p[y].ch,y++;let g=x.replaceAll(`
24
- `,"").replaceAll(Rt,"");if(g.trim()!==""){let k=`font-size="${R(f.size)}"`;f.mono&&(k+=' font-family="Menlo, Consolas, monospace"');let P=f.mono?"regular":Zt(i,f.bold,f.italic);(f.mono?f.bold:P==="bold"||P==="boldItalic")&&(k+=' font-weight="bold"'),(f.mono?f.italic:P==="italic"||P==="boldItalic")&&(k+=' font-style="italic"'),f.underline&&(k+=' text-decoration="underline"'),f.alpha<1&&(k+=` fill-opacity="${R(f.alpha*e.style.stroke.a)}"`),m+=`<tspan x="${R(n.x+p[d].x)}" ${k}>${qt(g)}</tspan>`}if(f.strike&&y>d){let k=c.baseline-dn(p[d].ch,f,i)[0]*.32;a.push([n.x+p[d].x,n.y+k,n.x+p[y-1].x+p[y-1].w,n.y+k])}y===d&&y++,d=y}m&&(s+=`<text y="${R(n.y+c.baseline)}" font-family="${fe(e.style.font)}" fill="${l}" xml:space="preserve">${m}</text>
25
- `)}let u=R(Math.max(1,e.style.fontSize/14));for(let[c,h,m,d]of a)s+=`<line x1="${R(c)}" y1="${R(h)}" x2="${R(m)}" y2="${R(d)}" stroke="${l}" stroke-width="${u}"/>
26
- `;return s}function Di(t,e){return e.fallback[t]?`fb:${t}`:""}function tr(t,e){return t===e||t.size===e.size&&t.bold===e.bold&&t.italic===e.italic&&t.mono===e.mono&&t.strike===e.strike&&t.underline===e.underline&&t.alpha===e.alpha}var J=(t,e,n)=>({r:t,g:e,b:n,a:1}),gn=[{id:"paper",name:"Paper",background:J(.984,.98,.965),ink:J(.12,.12,.13)},{id:"white",name:"White",background:J(1,1,1),ink:J(.12,.12,.13)},{id:"sepia",name:"Sepia",background:J(.953,.914,.824),ink:J(.23,.18,.13)},{id:"blueprint",name:"Blueprint",background:J(.106,.227,.361),ink:J(.91,.945,.984)},{id:"chalkboard",name:"Chalkboard",background:J(.169,.227,.2),ink:J(.945,.945,.918)},{id:"midnight",name:"Midnight",background:J(.082,.086,.102),ink:J(.925,.925,.94)}];function vt(t){return gn.find(e=>e.id===t)??null}function ht(t,e=24){if(Te(t))return ht(_(t,0),e);let n=et(t),i=l=>{if(l.kind==="connector")return Kn(l,n);let s=qe(l)?(Ke+.25)*Pt(l):0;return Lt(Zn(l),-s,-s)};if(t.elements.length===0)return{x:0,y:0,width:200,height:200};let o=t.elements.filter(l=>(l.style.opacity??1)>0),r=null;for(let l of o.length?o:t.elements)r=Be(r,i(l));return Lt(r,-e,-e)}function Yt(t){let e=t.timeline??{fps:12,duration:0,boil:null,settle:null,poster:null,tracks:[],camera:null,markers:null},n=Re(e),i=e.camera?.find(r=>r.width>1&&r.height>1);if(i){let r=i.width/i.height,l=n.map(a=>Dt(e,a)??{x:i.x,y:i.y,width:i.width,height:i.height}),s=Math.min(Math.max(...l.map(a=>a.width)),4096);return{times:n,rects:l,size:{width:s,height:s/r}}}let o=null;for(let r of n){let l=nt(t,r);l.elements.length>0&&(o=Be(o,ht(l)))}return o||(o=ht(nt(t,n[0]))),{times:n,rects:n.map(()=>o),size:{width:o.width,height:o.height}}}var _t=(t,e)=>t.a<1?` ${e}="${R(t.a)}"`:"";function er(t,e,n){let i=`<svg xmlns="http://www.w3.org/2000/svg" width="${R(t.width)}" height="${R(t.height)}" viewBox="${R(t.x)} ${R(t.y)} ${R(t.width)} ${R(t.height)}">
27
- `;return n&&e&&(i+=`<rect x="${R(t.x)}" y="${R(t.y)}" width="${R(t.width)}" height="${R(t.height)}" fill="${W(e)}"/>
28
- `),i}function gt(t,e,n,i=!1){if(Te(t))return gt(_(t,0),e,n,i);let o=vt(t.theme),r=e?o?.background??e:null,l=o?.ink??xt,s={...t,elements:t.elements.map(f=>Xn(f,l))},a=n??ht(s),u=new Set(s.layers.filter(f=>f.visible).map(f=>f.id)),c=[],h=et(s),m=st(s),d=m.filter(f=>u.has(f.layerID)&&qe(f)),p=ci(d).map(f=>`<path d="${f.path.data()}" fill="none" stroke="${W(f.ink)}"${_t(f.ink,"stroke-opacity")} stroke-width="${R(f.width)}" stroke-linecap="round"/>
29
- `).join("");p&&c.push({key:"rock",markup:p});for(let f of m){if(!u.has(f.layerID))continue;let y=Math.min(Math.max(f.style.opacity??1,0),1);if(y<=0)continue;let x=rr(f,h,r,s);Z(f)!==0&&f.kind!=="connector"&&(x=`<g transform="rotate(${R(Z(f)*180/Math.PI)} ${R(q(Y(f)))} ${R(Q(Y(f)))})">
30
- ${x}</g>
31
- `),y<1&&(x=`<g opacity="${R(y)}">
32
- ${x}</g>
33
- `);let w=i?(f.click?.url?kt(f.click.url):null)??$t(f.url):null;w&&(x=`<a href="${qt(w).replace(/"/g,"&quot;")}" target="_blank">
34
- ${x}</a>
35
- `),c.push({key:f.id,markup:x})}return{bounds:a,parts:c}}function Le(t,e={r:1,g:1,b:1,a:1},n){let{bounds:i,parts:o}=gt(t,e,n,!0);return er(i,vt(t.theme)?.background??e,e!==null)+o.map(r=>r.markup).join("")+`</svg>
36
- `}function nr(t,e){let n=qn(t,e),i=t.text??"",o=Wn(i===""?"Label":i,t.style.fontSize,200,t.style.font),r=Math.max(o.width+12,44),l=o.height+6;return{x:n.x-r/2,y:n.y-l/2,width:r,height:l}}function ir(t,e){let n=[...t];return n.slice(0,Math.floor(n.length*e)).join("")}function or(t){return t.reveal!==null&&t.reveal<1?Math.max(0,t.reveal):null}function rr(t,e,n,i){let o=W(t.style.stroke),r=`stroke="${o}" stroke-width="${R(t.style.strokeWidth)}" stroke-linecap="round" stroke-linejoin="round"`,l=Pe(t.style.dash,t.style.strokeWidth);l&&(r+=` stroke-dasharray="${l.map(R).join(" ")}"`),l&&t.style.dashOffset!==null&&R(t.style.dashOffset)!=="0"&&(r+=` stroke-dashoffset="${R(t.style.dashOffset)}"`);let s=t.text,a=or(t);if(a!==null)if(t.kind==="text")s=ir(s??"",a);else return t.kind==="connector"?`<path d="${en(t,e,i)[0].trimmed(a).data()}" fill="none" ${r}/>
37
- `:`<path d="${Mt(t).trimmed(a).data()}" fill="none" ${r}/>
38
- `;switch(t.kind){case"connector":{let[u,c]=en(t,e,i),h=`<path d="${u.data()}" fill="none" ${r}/>
39
- `;if(c.isEmpty||(h+=`<path d="${c.data()}" fill="${o}" stroke="none"/>
40
- `),s){let m=nr(t,e);n&&(h+=`<rect x="${R(m.x)}" y="${R(m.y)}" width="${R(m.width)}" height="${R(m.height)}" fill="${W(n)}"/>
41
- `),h+=Ie(s,m,t,!0)}return h}case"text":return Ie(s??"",Y(t),t,!1);case"image":{let u=Y(t),c="";if(t.image){let h=t.image.format==="jpeg"?"image/jpeg":"image/png";c+=`<image x="${R(u.x)}" y="${R(u.y)}" width="${R(u.width)}" height="${R(u.height)}" preserveAspectRatio="none" href="data:${h};base64,${t.image.data}"/>
42
- `}return t.style.stroke.a>0&&t.style.strokeWidth>0&&(c+=`<path d="${Mt(t).data()}" fill="none" ${r}/>
43
- `),c}case"freehand":return`<path d="${Mt(t).data()}" fill="none" ${r}/>
44
- `;case"rectangle":case"ellipse":case"diamond":case"path":case"note":{let u="";if(t.kind==="note"&&t.style.fill.a>0&&(u+=`<path d="${we(t).translated(2,3).data()}" fill="#000000" fill-opacity="${R(.14*t.style.fill.a)}" stroke="none"/>
45
- `),t.style.fill.a>0){let c=t.evenOdd===!0?' fill-rule="evenodd"':"";if(t.style.fillStyle==="solid")u+=`<path d="${we(t).data()}" fill="${W(t.style.fill)}"${_t(t.style.fill,"fill-opacity")}${c} stroke="none"/>
46
- `;else if(t.style.fillStyle==="grid"){let h=li(t.style.fill);u+=`<path d="${we(t).data()}" fill="${W(t.style.fill)}"${_t(t.style.fill,"fill-opacity")}${c} stroke="none"/>
47
- `,u+=`<path d="${tn(t).data()}" fill="none" stroke="${W(h)}"${_t(h,"stroke-opacity")} stroke-width="1" stroke-linecap="round"/>
48
- `}else u+=`<path d="${tn(t).data()}" fill="none" stroke="${W(t.style.fill)}"${_t(t.style.fill,"stroke-opacity")} stroke-width="${R(Math.max(1,t.style.strokeWidth/2))}" stroke-linecap="round"/>
49
- `}return u+=`<path d="${Mt(t).data()}" fill="none" ${r}/>
50
- `,s&&(u+=t.kind==="note"?Oi(s,t):Ie(s,t.kind==="path"?lr(t):Y(t),t,!0)),u}default:return sr(t,r)}}function sr(t,e){let n=Y(t);return`<path d="${I.rect(n).moveTo({x:n.x,y:n.y}).lineTo({x:n.x+n.width,y:n.y+n.height}).data()}" fill="none" ${e} stroke-opacity="0.5" stroke-dasharray="6 4"/>
51
- `+Ie(`${t.kind}${t.text?`: ${t.text}`:""}`,n,{...t,style:{...t.style,fontSize:Math.min(t.style.fontSize,12)}},!0)}function lr(t){let e=Y(t),n=t.labelRect;return n?{x:e.x+n.x*e.width,y:e.y+n.y*e.height,width:n.width*e.width,height:n.height*e.height}:e}function Ie(t,e,n,i){let o=n.style.fontSize,r=t.split(`
52
- `),l=o*1.2,s=l*r.length,a=i?q(e):e.x,u=i?Q(e)-s/2:e.y,c=`<text x="${R(a)}" font-family="${fe(n.style.font)}" font-size="${R(o)}" fill="${W(Un(n))}"${i?' text-anchor="middle"':""}>`;return r.forEach((h,m)=>{c+=`<tspan x="${R(a)}" y="${R(u+l*(m+.8))}">${qt(h)}</tspan>`}),c+`</text>
53
- `}var ar={r:1,g:1,b:1,a:1};function ee(t,e){let n=(e??"").trim();if(!n)return 0;let i=t.pages.findIndex(r=>r.name.toLowerCase()===n.toLowerCase());if(i>=0)return i;let o=Number(n);return Number.isInteger(o)&&o>=1&&o<=t.pages.length?o-1:0}function ne(t,e){return{...t,elements:t.elements.map(n=>({...n,style:{...n.style,roughness:e}}))}}var cr=`
17
+ `))}function ir(e){let t=[],n=0,r=null,o=()=>{r&&(t.push({kind:"paragraph",inline:Et(r.join(`
18
+ `))}),r=null)};for(;n<e.length;){let i=e[n];if(i.trim()===""){o(),n++;continue}let l=er.exec(i);if(l){o();let c=new RegExp(`^ {0,3}${l[1][0]==="`"?"`":"~"}{${l[1].length},}[ \\t]*$`),a=[];for(n++;n<e.length&&!c.test(e[n]);)a.push(e[n++]);n++,t.push({kind:"code",text:a.join(`
19
+ `)});continue}let s=tr.exec(i);if(s){o(),t.push({kind:"heading",level:s[1].length,inline:Et(s[2]??"")}),n++;continue}if(r&&/^ {0,3}(=+|-+)[ \t]*$/.test(i)){let c=i.trim()[0]==="="?1:2;t.push({kind:"heading",level:c,inline:Et(r.join(`
20
+ `))}),r=null,n++;continue}if(Vo.test(i)){o(),t.push({kind:"rule"}),n++;continue}if(rn.test(i)){o();let c=[];for(;n<e.length&&e[n].trim()!=="";){let a=rn.exec(e[n]);c.push(a?a[1]:e[n]),n++}t.push({kind:"quote",children:ir(c)});continue}let u=Re.exec(i);if(u&&(!r||u[4].trim()!=="")){o();let c=ls(e,n);t.push(c.block),n=c.next;continue}if(!r&&i.includes("|")&&n+1<e.length&&is.test(e[n+1])&&e[n+1].includes("-")){let c=_n(i),a=_n(e[n+1]).map(d=>d.startsWith(":")&&d.endsWith(":")?"center":d.endsWith(":")?"right":d.startsWith(":")?"left":null),h=[];for(n+=2;n<e.length&&e[n].trim()!==""&&!tr.test(e[n])&&!rn.test(e[n])&&!er.test(e[n]);)h.push(_n(e[n]).slice(0,c.length).map(d=>Et(d))),n++;t.push({kind:"table",align:a,head:c.map(d=>Et(d)),rows:h});continue}r||(r=[]),r.push(i.replace(/^ +/,"")),n++}return o(),t}function ls(e,t){let n=Re.exec(e[t]),r=n[1].length,o=/^\d/.test(n[2])?null:n[2],i=o===null?parseInt(n[2],10):null,l=[],s=t;for(;s<e.length;){let u=Re.exec(e[s]);if(!u||u[1].length!==r||o===null!==/^\d/.test(u[2])||o!==null&&u[2]!==o)break;let c=u[1].length+u[2].length+Math.max(1,Math.min(u[3].length,4)),a=[u[4]];s++;let h=!1;for(;s<e.length;){let p=e[s];if(p.trim()===""){h=!0,a.push(""),s++;continue}if(p.length-p.trimStart().length>=c){a.push(p.slice(c)),h=!1,s++;continue}if(!h&&!Re.test(p)&&!tr.test(p)&&!rn.test(p)&&!er.test(p)&&!Vo.test(p)){a.push(p.trimStart()),s++;continue}break}for(;a.length&&a[a.length-1].trim()==="";)a.pop();let d=null,m=/^\[([ xX])\](?:[ \t]+|$)/.exec(a[0]??"");if(m&&(d=m[1]!==" ",a[0]=a[0].slice(m[0].length)),l.push({checkbox:d,children:ir(a)}),h&&s<e.length&&e[s-1]?.trim()===""){let p=Re.exec(e[s]);if(!p||p[1].length!==r)break}}return{block:{kind:"list",ordered:i,items:l},next:s}}function Et(e,t={}){let n=[],r=(s,u)=>{s&&n.push({...u,text:s})},o=0,i="",l=()=>{r(i,t),i=""};for(;o<e.length;){let s=e.slice(o),u;if(s[0]==="\\"&&/^\\[\\`*_{}[\]()#+\-.!|~>]/.test(s)){i+=s[1],o+=2;continue}if(s.startsWith(`\\
21
+ `)){for(i+=Ht,o+=2;e[o]===" ";)o++;continue}if(s[0]===`
22
+ `){for(i=i.replace(/ +$/,""),i+=Ht,o++;e[o]===" ";)o++;continue}if(u=/^(`+)([\s\S]*?[^`])\1(?!`)/.exec(s)){l();let c=u[2].replace(/\n/g," ");/^ .* $/.test(c)&&(c=c.slice(1,-1)),r(c,{...t,mono:!0}),o+=u[0].length;continue}if(u=/^!\[([^\]]*)\]\([^)]*\)/.exec(s)){l(),n.push(...Et(u[1],t)),o+=u[0].length;continue}if(u=/^\[([^\]]+)\]\([^)]*\)/.exec(s)){l(),n.push(...Et(u[1],{...t,link:!0})),o+=u[0].length;continue}if(u=/^<((?:https?|ftp|mailto):[^>\s]+)>/.exec(s)){l(),r(u[1],{...t,link:!0}),o+=u[0].length;continue}if(u=/^~~(?=\S)([\s\S]*?\S)~~/.exec(s)){l(),n.push(...Et(u[1],{...t,strike:!0})),o+=u[0].length;continue}if(u=/^(\*\*|__)(?=\S)([\s\S]*?\S)\1/.exec(s)){l(),n.push(...Et(u[2],{...t,bold:!0})),o+=u[0].length;continue}if((u=/^(\*|_)(?=\S)([\s\S]*?\S)\1(?!\1)/.exec(s))&&(u[1]==="*"||!/\w/.test(e[o-1]??""))){l(),n.push(...Et(u[2],{...t,italic:!0})),o+=u[0].length;continue}i+=s[0],o++}return l(),as(n)}function as(e){let t=/\b(?:(?:https?|ftp):\/\/|www\.)[^\s<]*[^\s<.,:;"')\]!?]/g;return e.flatMap(n=>{if(n.link||n.mono||!(n.text.includes("://")||n.text.includes("www.")))return[n];let r=[],o=0;for(let i of n.text.matchAll(t))i.index>o&&r.push({...n,text:n.text.slice(o,i.index)}),r.push({...n,text:i[0],link:!0}),o=i.index+i[0].length;return o<n.text.length&&r.push({...n,text:n.text.slice(o)}),r})}function sn(e,t){return e.mono?Ut[We]:t}function on(e,t,n){let r=sn(t,n);if(t.mono&&r.fallback[e]===void 0)return Sr*t.size;let o=r.faces[ye(r,t.bold,t.italic)];return(o.w[e]??r.faces.regular.w[e]??o.w.n)*t.size/1e3}function nr(e,t,n,r){return n.mono?0:(r.faces[ye(r,n.bold,n.italic)].k[e+t]??0)*n.size/1e3}function rr(e,t,n){let r=sn(t,n).fallback[e];if(r)return[r[0]*t.size,r[1]*t.size,r[2]*t.size];if(t.mono)return[Er*t.size,Tr*t.size,0];let o=n.faces[ye(n,t.bold,t.italic)];return[o.ascent*t.size,o.descent*t.size,o.leading*t.size]}var or=class{constructor(t,n,r){E(this,"paras",[]);E(this,"nextSpacing",null);E(this,"fontSize");E(this,"width");E(this,"fam");this.fontSize=t,this.width=n,this.fam=r}get gap(){return this.fontSize*.5}spacing(t){return this.paras.length===0?0:this.nextSpacing??t}run(t,n,r,o={}){let i=!!t.mono;return{text:t.text,size:i?n*.9:n,bold:!!(t.bold||o.bold),italic:!!(t.italic||o.italic),mono:i,strike:!!t.strike,underline:!!t.link,alpha:r}}paragraph(t,n){this.paras.push({tabs:[],rule:null,tableRule:null,...t,quote:n}),this.nextSpacing=null}text(t,n,r,o={}){if(n.marker){let i={text:n.marker.text+" ",size:this.fontSize,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1};this.paragraph({runs:[i,...t],spacing:r,firstIndent:n.marker.start,indent:n.marker.hang,tabs:[{align:"left",x:n.marker.hang}],...o},n.quote)}else this.paragraph({runs:t,spacing:r,firstIndent:n.indent,indent:n.indent,...o},n.quote)}block(t,n){let r=n.quote!==null,o=r?.7:1;switch(t.kind){case"heading":{let i=[1.5,1.3,1.15,1.05,1,1][Math.min(Math.max(t.level,1),6)-1];this.text(t.inline.map(l=>this.run(l,this.fontSize*i,o,{bold:!0,italic:r})),n,this.spacing(this.gap*1.4));break}case"paragraph":this.text(t.inline.map(i=>this.run(i,this.fontSize,o,{italic:r})),n,this.spacing(this.gap));break;case"list":{let i=t.items.map((c,a)=>c.checkbox===!0?"\u2611":c.checkbox===!1?"\u2610":t.ordered!==null?`${t.ordered+a}.`:n.listDepth%2===0?"\u2022":"\u25E6"),l=c=>Oo({text:c,size:this.fontSize,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1},this.fam),s=Math.max(0,...i.map(l)),u=n.indent+Math.max(s+this.fontSize*.45,this.fontSize*1.2);t.items.forEach((c,a)=>{(a>0||n.listDepth>0||n.marker)&&(this.nextSpacing=this.fontSize*.15);let h={...n,marker:{text:i[a],start:n.indent,hang:u},indent:u,listDepth:n.listDepth+1};c.children.length===0&&this.text([],h,this.spacing(this.gap));for(let d of c.children)this.block(d,h),h.marker=null,this.nextSpacing=this.fontSize*.3;this.nextSpacing=null});break}case"quote":{let i={...n,quote:n.indent+3,indent:n.indent+this.fontSize};for(let l of t.children)this.block(l,i);break}case"code":{let l={text:t.text===""?" ":t.text.replace(/\n/g,Ht),size:this.fontSize*.85,bold:!1,italic:!1,mono:!0,strike:!1,underline:!1,alpha:o};this.text([l],{...n,indent:n.indent+this.fontSize*.5},this.spacing(this.gap));break}case"rule":{let i={text:" ",size:this.fontSize*.6,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1};this.text([i],n,this.spacing(this.gap),{rule:n.indent});break}case"table":this.table(t,n);break}}table(t,n){let r=[{cells:t.head,header:!0},...t.rows.map(k=>({cells:k,header:!1}))],o=Math.max(1,...r.map(k=>k.cells.length)),i=n.quote!==null,l=(k,v,b)=>k.map(f=>({...this.run({...f,text:f.text.replaceAll(Ht," ")},b,i?.7:1,{bold:v,italic:i})})),s=k=>{let v=new Array(o).fill(0);for(let b of r)b.cells.forEach((f,g)=>{g<o&&(v[g]=Math.max(v[g],l(f,b.header,k).reduce((M,x)=>M+Oo(x,this.fam),0)))});return v},u=Math.max(this.width-n.indent,1),c=this.fontSize,a=s(c),h=c*1.2,d=a.reduce((k,v)=>k+v,0)+h*(o-1);d>u&&(c=Math.max(this.fontSize*u/d,Math.min(this.fontSize,9)),a=s(c),h=c*1.2);let m=[],p=n.indent;for(let k of a)m.push(p),p+=k+h;let y=p-h-n.indent,w=[],P=!1;for(let k=0;k<o;k++){let v=t.align[k]??null;v==="center"?w.push({align:"center",x:m[k]+a[k]/2}):v==="right"?w.push({align:"right",x:m[k]+a[k]}):k>0&&w.push({align:"left",x:m[k]}),k===0&&(v==="center"||v==="right")&&(P=!0)}let A=k=>({text:k,size:c,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1});r.forEach((k,v)=>{let b=[];P&&b.push(A(" "));for(let g=0;g<o;g++)g>0&&b.push(A(" ")),g<k.cells.length&&b.push(...l(k.cells[g],k.header,c));b.length===0&&b.push(A(" "));let f=v===0?this.spacing(this.gap):v===1?c*.45:c*.2;this.paragraph({runs:b,spacing:f,firstIndent:n.indent,indent:n.indent,tabs:w,tableRule:k.header?[n.indent,y]:null},n.quote)})}};function Oo(e,t){let n=0,r="";for(let o of e.text)n+=on(o,e,t),r&&(n+=nr(r,o,e,t)),r=o;return n}var Yo=28;function us(e,t,n,r,o){let i=[],l=0,s=null;return e.forEach((u,c)=>{let a=c<e.length-1?[...u.runs,{text:`
23
+ `,size:r,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1}]:u.runs,h=[];a.forEach((p,y)=>{for(let w of p.text)h.push({ch:w,run:y})});let d=0,m=!0;for(;d<h.length||m&&h.length===0;){let p=m?u.firstIndent:u.indent,y=t,w=[],P=p,A=-1,k=d;for(;k<h.length;k++){let{ch:M,run:x}=h[k],R=a[x];if(M===Ht||M===`
24
+ `){w.push({ch:M,run:x,x:P,w:0}),k++;break}if(M===" "){let D=u.tabs.find(W=>W.x>P+.01),$;if(D)if(D.align==="left")$=D.x;else{let W=0,Z="";for(let L=k+1;L<h.length&&h[L].ch!==" "&&h[L].ch!==`
25
+ `&&h[L].ch!==Ht;L++){let z=a[h[L].run];W+=on(h[L].ch,z,o)+(Z?nr(Z,h[L].ch,z,o):0),Z=h[L].ch}$=Math.max(P,D.align==="right"?D.x-W:D.x-W/2)}else $=(Math.floor(P/Yo)+1)*Yo;w.push({ch:M,run:x,x:P,w:$-P}),P=$;continue}let S=w[w.length-1],C=S&&S.run===x&&S.ch!==" "?nr(S.ch,M,R,o):0;S&&(S.w+=C,P+=C);let F=on(M,R,o);if(M!==" "&&P+F>y+.01&&w.some(D=>D.ch!==" ")){A>=0&&(w.length=A+1,k=d+A+1),S&&(S.w-=C);break}w.push({ch:M,run:x,x:P,w:F}),P+=F,gn(M,h[k+1]?.ch??"")&&(A=w.length-1)}if(w.length===0&&k===d&&d<h.length){let{ch:M,run:x}=h[d];w.push({ch:M,run:x,x:p,w:on(M,a[x],o)}),k=d+1}let v=0,b=0,f=0;for(let M of w){let[x,R,S]=rr(M.ch,a[M.run],o);v=Math.max(v,x),b=Math.max(b,R),f=Math.max(f,S)}if(w.length===0&&([v,b,f]=rr(" ",a[0]??{text:" ",size:r,bold:!1,italic:!1,mono:!1,strike:!1,underline:!1,alpha:1},o)),l=s?l+Math.round(s.desc)+Math.round(s.lead)+(m?u.spacing:0)+Math.round(v):Math.round(v),l+b>n+.5)return;let g={glyphs:w,asc:v,desc:b,lead:f,baseline:l,para:u,first:m};if(g.glyphs.forEach(M=>{M.r=a[M.run]}),i.push(g),s=g,m=!1,d=k,h.length===0)break}}),i}function $o(e,t){let n=os({x:t.x,y:t.y,width:t.width,height:t.height});if(!(n.width>1&&n.height>1))return"";let r=Ve(t.style.font),o=new or(t.style.fontSize,n.width,r);for(let a of ss(e))o.block(a,{indent:0,marker:null,quote:null,listDepth:0});let i=us(o.paras,n.width,n.height,t.style.fontSize,r),l=ht(t.style.stroke),s="",u=[];for(let a of i){let h=a.para;if(h.quote!==null&&u.push([n.x+h.quote,n.y+a.baseline-a.asc,n.x+h.quote,n.y+a.baseline+a.desc]),h.rule!==null&&u.push([n.x+h.rule,n.y+a.baseline-3,n.x+n.width,n.y+a.baseline-3]),h.tableRule){let y=n.y+a.baseline+a.desc+2;u.push([n.x+h.tableRule[0],y,Math.min(n.x+n.width,n.x+h.tableRule[0]+h.tableRule[1]),y])}let d="",m=0,p=a.glyphs;for(;m<p.length;){let y=p[m].r,w=m,P="",A=Wo(p[m].ch,sn(y,r));for(;w<p.length&&cs(p[w].r,y)&&p[w].ch!==" "&&Wo(p[w].ch,sn(y,r))===A;)P+=p[w].ch,w++;let k=P.replaceAll(`
26
+ `,"").replaceAll(Ht,"");if(k.trim()!==""){let v=`font-size="${T(y.size)}"`;y.mono&&(v+=' font-family="Menlo, Consolas, monospace"');let b=y.mono?"regular":ye(r,y.bold,y.italic);(y.mono?y.bold:b==="bold"||b==="boldItalic")&&(v+=' font-weight="bold"'),(y.mono?y.italic:b==="italic"||b==="boldItalic")&&(v+=' font-style="italic"'),y.underline&&(v+=' text-decoration="underline"'),y.alpha<1&&(v+=` fill-opacity="${T(y.alpha*t.style.stroke.a)}"`),d+=`<tspan x="${T(n.x+p[m].x)}" ${v}>${ve(k)}</tspan>`}if(y.strike&&w>m){let v=a.baseline-rr(p[m].ch,y,r)[0]*.32;u.push([n.x+p[m].x,n.y+v,n.x+p[w-1].x+p[w-1].w,n.y+v])}w===m&&w++,m=w}d&&(s+=`<text y="${T(n.y+a.baseline)}" font-family="${$e(t.style.font)}" fill="${l}" xml:space="preserve">${d}</text>
27
+ `)}let c=T(Math.max(1,t.style.fontSize/14));for(let[a,h,d,m]of u)s+=`<line x1="${T(a)}" y1="${T(h)}" x2="${T(d)}" y2="${T(m)}" stroke="${l}" stroke-width="${c}"/>
28
+ `;return s}function Wo(e,t){return t.fallback[e]?`fb:${e}`:""}function cs(e,t){return e===t||e.size===t.size&&e.bold===t.bold&&e.italic===t.italic&&e.mono===t.mono&&e.strike===t.strike&&e.underline===t.underline&&e.alpha===t.alpha}var pt=(e,t,n)=>({r:e,g:t,b:n,a:1}),sr=[{id:"paper",name:"Paper",background:pt(.984,.98,.965),ink:pt(.12,.12,.13)},{id:"white",name:"White",background:pt(1,1,1),ink:pt(.12,.12,.13)},{id:"sepia",name:"Sepia",background:pt(.953,.914,.824),ink:pt(.23,.18,.13)},{id:"blueprint",name:"Blueprint",background:pt(.106,.227,.361),ink:pt(.91,.945,.984)},{id:"chalkboard",name:"Chalkboard",background:pt(.169,.227,.2),ink:pt(.945,.945,.918)},{id:"midnight",name:"Midnight",background:pt(.082,.086,.102),ink:pt(.925,.925,.94)}];function Jt(e){return sr.find(t=>t.id===e)??null}function Ot(e,t=24){if(nn(e))return Ot(Pt(e,0),t);let n=At(e),r=l=>{if(l.kind==="connector")return Br(l,n);let s=Gn(l)?($n+.25)*jt(l):0;return ne(Wr(l),-s,-s)};if(e.elements.length===0)return{x:0,y:0,width:200,height:200};let o=e.elements.filter(l=>(l.style.opacity??1)>0),i=null;for(let l of o.length?o:e.elements)i=wn(i,r(l));return ne(i,-t,-t)}function le(e){let t=e.timeline??{fps:12,duration:0,boil:null,settle:null,poster:null,tracks:[],camera:null,markers:null},n=tn(t),r=t.camera?.find(i=>i.width>1&&i.height>1);if(r){let i=r.width/r.height,l=n.map(u=>se(t,u)??{x:r.x,y:r.y,width:r.width,height:r.height}),s=Math.min(Math.max(...l.map(u=>u.width)),4096);return{times:n,rects:l,size:{width:s,height:s/i}}}let o=null;for(let i of n){let l=St(e,i);l.elements.length>0&&(o=wn(o,Ot(l)))}return o||(o=Ot(St(e,n[0]))),{times:n,rects:n.map(()=>o),size:{width:o.width,height:o.height}}}var Ae=(e,t)=>e.a<1?` ${t}="${T(e.a)}"`:"";function hs(e,t,n){let r=`<svg xmlns="http://www.w3.org/2000/svg" width="${T(e.width)}" height="${T(e.height)}" viewBox="${T(e.x)} ${T(e.y)} ${T(e.width)} ${T(e.height)}">
29
+ `;return n&&t&&(r+=`<rect x="${T(e.x)}" y="${T(e.y)}" width="${T(e.width)}" height="${T(e.height)}" fill="${ht(t)}"/>
30
+ `),r}function zt(e,t,n,r=!1){if(nn(e))return zt(Pt(e,0),t,n,r);let o=Jt(e.theme),i=t?o?.background??t:null,l=o?.ink??Nt,s={...e,elements:e.elements.map(y=>Vr(y,l))},u=n??Ot(s),c=new Set(s.layers.filter(y=>y.visible).map(y=>y.id)),a=[],h=At(s),d=It(s),m=d.filter(y=>c.has(y.layerID)&&Gn(y)),p=ho(m).map(y=>`<path d="${y.path.data()}" fill="none" stroke="${ht(y.ink)}"${Ae(y.ink,"stroke-opacity")} stroke-width="${T(y.width)}" stroke-linecap="round"/>
31
+ `).join("");p&&a.push({key:"rock",markup:p});for(let y of d){if(!c.has(y.layerID))continue;let w=Math.min(Math.max(y.style.opacity??1,0),1);if(w<=0)continue;let P=ps(y,h,i,s);mt(y)!==0&&y.kind!=="connector"&&(P=`<g transform="rotate(${T(mt(y)*180/Math.PI)} ${T(wt(nt(y)))} ${T(Mt(nt(y)))})">
32
+ ${P}</g>
33
+ `),w<1&&(P=`<g opacity="${T(w)}">
34
+ ${P}</g>
35
+ `);let A=r?(y.click?.url?Bt(y.click.url):null)??he(y.url):null;A&&(P=`<a href="${ve(A).replace(/"/g,"&quot;")}" target="_blank">
36
+ ${P}</a>
37
+ `),a.push({key:y.id,markup:P})}return{bounds:u,parts:a}}function an(e,t={r:1,g:1,b:1,a:1},n){let{bounds:r,parts:o}=zt(e,t,n,!0);return hs(r,Jt(e.theme)?.background??t,t!==null)+o.map(i=>i.markup).join("")+`</svg>
38
+ `}function fs(e,t){let n=Ur(e,t),r=e.text??"",o=Fr(r===""?"Label":r,e.style.fontSize,200,e.style.font),i=Math.max(o.width+12,44),l=o.height+6;return{x:n.x-i/2,y:n.y-l/2,width:i,height:l}}function ms(e,t){let n=[...e];return n.slice(0,Math.floor(n.length*t)).join("")}function ds(e){return e.reveal!==null&&e.reveal<1?Math.max(0,e.reveal):null}function ps(e,t,n,r){let o=ht(e.style.stroke),i=`stroke="${o}" stroke-width="${T(e.style.strokeWidth)}" stroke-linecap="round" stroke-linejoin="round"`,l=Qe(e.style.dash,e.style.strokeWidth);l&&(i+=` stroke-dasharray="${l.map(T).join(" ")}"`),l&&e.style.dashOffset!==null&&T(e.style.dashOffset)!=="0"&&(i+=` stroke-dashoffset="${T(e.style.dashOffset)}"`);let s=e.text,u=ds(e);if(u!==null)if(e.kind==="text")s=ms(s??"",u);else return e.kind==="connector"?`<path d="${Un(e,t,r)[0].trimmed(u).data()}" fill="none" ${i}/>
39
+ `:`<path d="${Xt(e).trimmed(u).data()}" fill="none" ${i}/>
40
+ `;switch(e.kind){case"connector":{let[c,a]=Un(e,t,r),h=`<path d="${c.data()}" fill="none" ${i}/>
41
+ `;if(a.isEmpty||(h+=`<path d="${a.data()}" fill="${o}" stroke="none"/>
42
+ `),s){let d=fs(e,t);n&&(h+=`<rect x="${T(d.x)}" y="${T(d.y)}" width="${T(d.width)}" height="${T(d.height)}" fill="${ht(n)}"/>
43
+ `),h+=ln(s,d,e,!0)}return h}case"text":return ln(s??"",nt(e),e,!1);case"image":{let c=nt(e),a="";if(e.image){let h=e.image.format==="jpeg"?"image/jpeg":"image/png";a+=`<image x="${T(c.x)}" y="${T(c.y)}" width="${T(c.width)}" height="${T(c.height)}" preserveAspectRatio="none" href="data:${h};base64,${e.image.data}"/>
44
+ `}return e.style.stroke.a>0&&e.style.strokeWidth>0&&(a+=`<path d="${Xt(e).data()}" fill="none" ${i}/>
45
+ `),a}case"freehand":return`<path d="${Xt(e).data()}" fill="none" ${i}/>
46
+ `;case"rectangle":case"ellipse":case"diamond":case"path":case"note":{let c="";if(e.kind==="note"&&e.style.fill.a>0&&(c+=`<path d="${qe(e).translated(2,3).data()}" fill="#000000" fill-opacity="${T(.14*e.style.fill.a)}" stroke="none"/>
47
+ `),e.style.fill.a>0){let a=e.evenOdd===!0?' fill-rule="evenodd"':"";if(e.style.fillStyle==="solid")c+=`<path d="${qe(e).data()}" fill="${ht(e.style.fill)}"${Ae(e.style.fill,"fill-opacity")}${a} stroke="none"/>
48
+ `;else if(e.style.fillStyle==="grid"){let h=uo(e.style.fill);c+=`<path d="${qe(e).data()}" fill="${ht(e.style.fill)}"${Ae(e.style.fill,"fill-opacity")}${a} stroke="none"/>
49
+ `,c+=`<path d="${Bn(e).data()}" fill="none" stroke="${ht(h)}"${Ae(h,"stroke-opacity")} stroke-width="1" stroke-linecap="round"/>
50
+ `}else c+=`<path d="${Bn(e).data()}" fill="none" stroke="${ht(e.style.fill)}"${Ae(e.style.fill,"stroke-opacity")} stroke-width="${T(Math.max(1,e.style.strokeWidth/2))}" stroke-linecap="round"/>
51
+ `}return c+=`<path d="${Xt(e).data()}" fill="none" ${i}/>
52
+ `,s&&(c+=e.kind==="note"?$o(s,e):ln(s,e.kind==="path"?gs(e):nt(e),e,!0)),c}default:return ys(e,i)}}function ys(e,t){let n=nt(e);return`<path d="${U.rect(n).moveTo({x:n.x,y:n.y}).lineTo({x:n.x+n.width,y:n.y+n.height}).data()}" fill="none" ${t} stroke-opacity="0.5" stroke-dasharray="6 4"/>
53
+ `+ln(`${e.kind}${e.text?`: ${e.text}`:""}`,n,{...e,style:{...e.style,fontSize:Math.min(e.style.fontSize,12)}},!0)}function gs(e){let t=nt(e),n=e.labelRect;return n?{x:t.x+n.x*t.width,y:t.y+n.y*t.height,width:n.width*t.width,height:n.height*t.height}:t}function ln(e,t,n,r){let o=n.style.fontSize,i=e.split(`
54
+ `),l=o*1.2,s=l*i.length,u=r?wt(t):t.x,c=r?Mt(t)-s/2:t.y,a=`<text x="${T(u)}" font-family="${$e(n.style.font)}" font-size="${T(o)}" fill="${ht($r(n))}"${r?' text-anchor="middle"':""}>`;return i.forEach((h,d)=>{a+=`<tspan x="${T(u)}" y="${T(c+l*(d+.8))}">${ve(h)}</tspan>`}),a+`</text>
55
+ `}var bs={r:1,g:1,b:1,a:1};function Ee(e,t){let n=(t??"").trim();if(!n)return 0;let r=e.pages.findIndex(i=>i.name.toLowerCase()===n.toLowerCase());if(r>=0)return r;let o=Number(n);return Number.isInteger(o)&&o>=1&&o<=e.pages.length?o-1:0}function Te(e,t){return{...e,elements:e.elements.map(n=>({...n,style:{...n.style,roughness:t}}))}}var xs=`
54
56
  :host { display: block; position: relative; color: var(--dottie-ink); background: var(--dottie-page);
55
57
  font: 14px -apple-system, system-ui, sans-serif; border-radius: var(--dottie-radius, 0); }
56
58
  :host([hidden]) { display: none; }
@@ -65,16 +67,16 @@ input[type=range] { flex: 1; min-width: 60px; accent-color: currentColor; }
65
67
  output { font-variant-numeric: tabular-nums; min-width: 4.5em; text-align: right; }
66
68
  .scene { min-width: 0; flex: 0 1 auto; text-align: center; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
67
69
  .error { padding: 16px; font-family: ui-monospace, Menlo, monospace; white-space: pre-wrap; }
68
- ${Ii}`,te=class{constructor(e,n,i={}){v(this,"page");v(this,"plan");v(this,"scenes");v(this,"sceneNames");v(this,"sceneLoops");v(this,"state");v(this,"background");v(this,"ink");v(this,"clicks");v(this,"replays",new Map);v(this,"replayStarts",new Map);v(this,"hoverIDs");v(this,"labels",new Map);v(this,"owner",new Map);v(this,"partsOfOwner",new Map);v(this,"overTimes",new Map);v(this,"downTimes",new Map);v(this,"hitTimes",new Map);v(this,"last",{t:0,i:0});v(this,"svg");v(this,"groups",new Map);v(this,"order",[]);v(this,"frame",-1);v(this,"onFrame",null);this.page=i.clean?ne(e,0):e,de(me(this.page)),this.plan=Yt(this.page),this.clicks=vi(e,i.file);let o=cn(this.page);for(let c of this.page.elements){let h=c.kind==="symbol"&&c.symbol!==null?o.get(c.symbol):void 0;if(h)if(h.button===!0)for(let[m,d]of[["over",this.overTimes],["down",this.downTimes],["hit",this.hitTimes]]){let p=Kt(h,m);p!==null&&d.set(c.id,p)}else c.playback==="click"&&(h.timeline?.duration??0)>0&&this.replays.set(c.id,h.timeline.duration)}let r=new Set([...this.clicks.keys(),...this.replays.keys()]);this.hoverIDs=new Set(this.page.elements.filter(c=>r.has(c.id)&&c.kind!=="symbol"&&Ai(c)).map(c=>c.id));let l=new Set(this.page.elements.filter(c=>r.has(c.id)&&c.kind==="symbol").map(c=>c.id));for(let c of this.page.elements)r.has(c.id)&&(this.labels.set(c.id,Si(c,c.symbol!==null?o.get(c.symbol)?.name:void 0)),c.kind!=="symbol"&&this.owner.set(c.id,c.id));for(let[c,h]of Ei(this.page,l))this.owner.set(c,h);for(let[c,h]of this.owner)this.partsOfOwner.set(h,[...this.partsOfOwner.get(h)??[],c]);let s=c=>{let h=0;return this.plan.times.forEach((m,d)=>{Math.abs(m-c)<Math.abs(this.plan.times[h]-c)&&(h=d)}),h};this.scenes=(e.timeline?.markers??[]).map(c=>s(c.t)),this.sceneNames=(e.timeline?.markers??[]).map(c=>c.name),this.sceneLoops=(e.timeline?.markers??[]).map(c=>c.loop===!0),this.state={...e.variables??{}};let a=vt(e.theme);this.background=a?.background??ar,this.ink=a?.ink??{r:.12,g:.12,b:.13,a:1};let u="http://www.w3.org/2000/svg";this.svg=document.createElementNS(u,"svg"),this.svg.setAttribute("width",R(this.plan.size.width)),this.svg.setAttribute("height",R(this.plan.size.height)),this.svg.style.maxWidth=`${Math.ceil(this.plan.size.width)}px`,n.replaceChildren(this.svg)}get frameCount(){return this.plan.times.length}get posterFrame(){let e=yt(this.page),n=0;return this.plan.times.forEach((i,o)=>{Math.abs(i-e)<Math.abs(this.plan.times[n]-e)&&(n=o)}),n}show(e){let n=this.frameCount;e=(e%n+n)%n,this.drawAt(this.plan.times[e],e),this.frame=e,this.onFrame?.(e)}replay(e,n){this.replays.has(e)&&this.replayStarts.set(e,n)}replaying(e=performance.now()){for(let[n,i]of this.replayStarts)if(e-i<(this.replays.get(n)??0)*1e3)return!0;return!1}redraw(){this.drawAt(this.last.t,this.last.i)}drawAt(e,n=0){this.last={t:e,i:n};let i=this.plan.rects[Math.min(n,this.plan.rects.length-1)],o=typeof performance>"u"?0:performance.now(),r=new Map;for(let[b,M]of this.replayStarts)r.set(b,Math.min((o-M)/1e3,this.replays.get(b)??0));let l=z(e),s=Ct(this.page,l,this.state),a=_(s,l,!0,r),{parts:u}=gt(a,this.background,i),c=(b,M)=>{for(let T of M)this.owner.has(T.key)&&b.set(T.key,T.markup);return b},h=b=>b.size===0?new Map:c(new Map,gt(_(s,l,!0,new Map([...r,...b])),this.background,i).parts.filter(M=>b.has(this.owner.get(M.key)??""))),m=this.hoverIDs.size===0?new Map:c(new Map,gt(Ti(a,this.hoverIDs),this.background,i).parts.filter(b=>this.hoverIDs.has(b.key))),d=h(this.overTimes),p=h(this.downTimes),f=h(this.hitTimes),y=c(new Map,u),x=[],w=new Set;for(let b of u){let M=this.owner.get(b.key);if(M===void 0){x.push(b);continue}w.has(M)||(w.add(M),x.push(this.buttonPart(M,y,m,d,p,f,s)))}this.svg.setAttribute("viewBox",`${R(i.x)} ${R(i.y)} ${R(i.width)} ${R(i.height)}`);let g="http://www.w3.org/2000/svg",k=x.map(b=>b.key);for(let b of x){let M=b.markup,T=this.groups.get(b.key);if(T)T.markup!==M&&(T.g.innerHTML=M,T.markup=M),b.button!==void 0&&T.g.classList.toggle("dottie-b",b.button);else{let S=document.createElementNS(g,"g");S.innerHTML=M,b.button!==void 0&&(S.setAttribute("class",b.button?"dottie-a dottie-b":"dottie-a"),S.setAttribute("data-a",b.key),S.setAttribute("tabindex","0"),S.setAttribute("role","button"),S.setAttribute("aria-label",this.labels.get(b.key)??"")),this.groups.set(b.key,{g:S,markup:M})}}let P=new Set(k);for(let[b,M]of this.groups)P.has(b)||(M.g.remove(),this.groups.delete(b));if(k.length!==this.order.length||k.some((b,M)=>b!==this.order[M])){let b=this.svg.firstChild;for(let M of k){let T=this.groups.get(M).g;T===b?b=b.nextSibling:this.svg.insertBefore(T,b)}for(;b;){let M=b.nextSibling;b.remove(),b=M}this.order=k}}buttonPart(e,n,i,o,r,l,s){let a=this.partsOfOwner.get(e)??[e],u=w=>{let g=a.map(k=>w.get(k)??"").join("");return g===""?null:g},c=u(n)??"",h=s.elements.find(w=>w.id===e&&w.kind==="symbol"),m=u(h?o:i),d=h?u(r):null,p=m!==null&&m!==c?m:null,f=d!==null&&d!==(m??c)?d:null;if(!h&&p===null)return{key:e,markup:c,button:!1};let y=h?' pointer-events="none"':"",x=`<g class="dottie-n"${y}>
69
- ${c}</g>
70
- `;if(p!==null&&(x+=`<g class="dottie-h"${y}>
70
+ ${Co}`,Se=class{constructor(t,n,r={}){E(this,"page");E(this,"plan");E(this,"scenes");E(this,"sceneNames");E(this,"sceneLoops");E(this,"state");E(this,"stateSince",typeof performance>"u"?0:performance.now());E(this,"still",!1);E(this,"carried",{});E(this,"background");E(this,"ink");E(this,"clicks");E(this,"replays",new Map);E(this,"replayStarts",new Map);E(this,"hoverIDs");E(this,"labels",new Map);E(this,"owner",new Map);E(this,"partsOfOwner",new Map);E(this,"overTimes",new Map);E(this,"downTimes",new Map);E(this,"hitTimes",new Map);E(this,"last",{t:0,i:0});E(this,"svg");E(this,"groups",new Map);E(this,"order",[]);E(this,"frame",-1);E(this,"onFrame",null);this.page=r.clean?Te(t,0):t,ze(Ge(this.page)),this.plan=le(this.page),this.clicks=Eo(t,r.file);let o=Qn(this.page);for(let a of this.page.elements){let h=a.kind==="symbol"&&a.symbol!==null?o.get(a.symbol):void 0;if(h)if(h.button===!0)for(let[d,m]of[["over",this.overTimes],["down",this.downTimes],["hit",this.hitTimes]]){let p=Pe(h,d);p!==null&&m.set(a.id,p)}else a.playback==="click"&&(h.timeline?.duration??0)>0&&this.replays.set(a.id,h.timeline.duration)}let i=new Set([...this.clicks.keys(),...this.replays.keys()]);this.hoverIDs=new Set(this.page.elements.filter(a=>i.has(a.id)&&a.kind!=="symbol"&&Io(a)).map(a=>a.id));let l=new Set(this.page.elements.filter(a=>i.has(a.id)&&a.kind==="symbol").map(a=>a.id));for(let a of this.page.elements)i.has(a.id)&&(this.labels.set(a.id,Fo(a,a.symbol!==null?o.get(a.symbol)?.name:void 0)),a.kind!=="symbol"&&this.owner.set(a.id,a.id));for(let[a,h]of Lo(this.page,l))this.owner.set(a,h);for(let[a,h]of this.owner)this.partsOfOwner.set(h,[...this.partsOfOwner.get(h)??[],a]);let s=a=>{let h=0;return this.plan.times.forEach((d,m)=>{Math.abs(d-a)<Math.abs(this.plan.times[h]-a)&&(h=m)}),h};this.scenes=(t.timeline?.markers??[]).map(a=>s(a.t)),this.sceneNames=(t.timeline?.markers??[]).map(a=>a.name),this.sceneLoops=(t.timeline?.markers??[]).map(a=>a.loop===!0),this.state={...t.variables??{}};let u=Jt(t.theme);this.background=u?.background??bs,this.ink=u?.ink??{r:.12,g:.12,b:.13,a:1};let c="http://www.w3.org/2000/svg";this.svg=document.createElementNS(c,"svg"),this.svg.setAttribute("width",T(this.plan.size.width)),this.svg.setAttribute("height",T(this.plan.size.height)),this.svg.style.maxWidth=`${Math.ceil(this.plan.size.width)}px`,n.replaceChildren(this.svg)}sinceChange(t=typeof performance>"u"?0:performance.now()){return this.still||typeof performance>"u"?null:(t-this.stateSince)/1e3}get frameCount(){return this.plan.times.length}get posterFrame(){let t=Gt(this.page),n=0;return this.plan.times.forEach((r,o)=>{Math.abs(r-t)<Math.abs(this.plan.times[n]-t)&&(n=o)}),n}show(t){let n=this.frameCount;t=(t%n+n)%n,this.drawAt(this.plan.times[t],t),this.frame=t,this.onFrame?.(t)}replay(t,n){this.replays.has(t)&&this.replayStarts.set(t,n)}replaying(t=performance.now()){for(let[n,r]of this.replayStarts)if(t-r<(this.replays.get(n)??0)*1e3)return!0;return!1}redraw(){this.drawAt(this.last.t,this.last.i)}drawAt(t,n=0){this.last={t,i:n};let r=this.plan.rects[Math.min(n,this.plan.rects.length-1)],o=typeof performance>"u"?0:performance.now(),i=new Map;for(let[f,g]of this.replayStarts)i.set(f,Math.min((o-g)/1e3,this.replays.get(f)??0));let l=ct(t),s=ie(this.page,l,this.state,this.sinceChange(o),this.carried),u=Pt(s,l,!0,i),{parts:c}=zt(u,this.background,r),a=(f,g)=>{for(let M of g)this.owner.has(M.key)&&f.set(M.key,M.markup);return f},h=f=>f.size===0?new Map:a(new Map,zt(Pt(s,l,!0,new Map([...i,...f])),this.background,r).parts.filter(g=>f.has(this.owner.get(g.key)??""))),d=this.hoverIDs.size===0?new Map:a(new Map,zt(To(u,this.hoverIDs),this.background,r).parts.filter(f=>this.hoverIDs.has(f.key))),m=h(this.overTimes),p=h(this.downTimes),y=h(this.hitTimes),w=a(new Map,c),P=[],A=new Set;for(let f of c){let g=this.owner.get(f.key);if(g===void 0){P.push(f);continue}A.has(g)||(A.add(g),P.push(this.buttonPart(g,w,d,m,p,y,s)))}this.svg.setAttribute("viewBox",`${T(r.x)} ${T(r.y)} ${T(r.width)} ${T(r.height)}`);let k="http://www.w3.org/2000/svg",v=P.map(f=>f.key);for(let f of P){let g=f.markup,M=this.groups.get(f.key);if(M)M.markup!==g&&(M.g.innerHTML=g,M.markup=g),f.button!==void 0&&M.g.classList.toggle("dottie-b",f.button);else{let x=document.createElementNS(k,"g");x.innerHTML=g,f.button!==void 0&&(x.setAttribute("class",f.button?"dottie-a dottie-b":"dottie-a"),x.setAttribute("data-a",f.key),x.setAttribute("tabindex","0"),x.setAttribute("role","button"),x.setAttribute("aria-label",this.labels.get(f.key)??"")),this.groups.set(f.key,{g:x,markup:g})}}let b=new Set(v);for(let[f,g]of this.groups)b.has(f)||(g.g.remove(),this.groups.delete(f));if(v.length!==this.order.length||v.some((f,g)=>f!==this.order[g])){let f=this.svg.firstChild;for(let g of v){let M=this.groups.get(g).g;M===f?f=f.nextSibling:this.svg.insertBefore(M,f)}for(;f;){let g=f.nextSibling;f.remove(),f=g}this.order=v}}buttonPart(t,n,r,o,i,l,s){let u=this.partsOfOwner.get(t)??[t],c=A=>{let k=u.map(v=>A.get(v)??"").join("");return k===""?null:k},a=c(n)??"",h=s.elements.find(A=>A.id===t&&A.kind==="symbol"),d=c(h?o:r),m=h?c(i):null,p=d!==null&&d!==a?d:null,y=m!==null&&m!==(d??a)?m:null;if(!h&&p===null)return{key:t,markup:a,button:!1};let w=h?' pointer-events="none"':"",P=`<g class="dottie-n"${w}>
71
+ ${a}</g>
72
+ `;if(p!==null&&(P+=`<g class="dottie-h"${w}>
71
73
  ${p}</g>
72
- `),f!==null&&(x+=`<g class="dottie-d"${y}>
73
- ${f}</g>
74
- `),h){let w=u(l);if(w!==null)x+=`<g class="dottie-hit" opacity="0" pointer-events="all">
75
- ${w}</g>
76
- `;else{let g={x:h.x+h.width/2,y:h.y+h.height/2},k=h.rotation??0,P=[[h.x,h.y],[h.x+h.width,h.y],[h.x+h.width,h.y+h.height],[h.x,h.y+h.height]].map(([M,T])=>mt({x:M,y:T},g,k)),b=new I().moveTo(P[0]).lineTo(P[1]).lineTo(P[2]).lineTo(P[3]).close();x+=`<path class="dottie-hit" d="${b.data()}" fill="none" stroke="none" pointer-events="all"/>
77
- `}}return{key:e,markup:x,button:f!==null}}sceneAt(e){let n=-1;return this.scenes.forEach((i,o)=>{i<=e&&(n=o)}),n}sceneEnd(e){return this.scenes.find((n,i)=>i>e&&n>this.scenes[e])??this.frameCount}step(e,n){let i=e+1,o=this.sceneAt(e);if(o>=0&&this.sceneLoops[o]&&i>=this.sceneEnd(o))return{frame:this.scenes[o],stop:!1};if(i>=this.frameCount)return{frame:0,stop:!n||this.scenes.length>0};let r=this.scenes.indexOf(i);return{frame:i,stop:r>=0&&!this.sceneLoops[r]}}},ur=typeof HTMLElement>"u"?class{}:HTMLElement,Ot=class extends ur{constructor(){super();v(this,"file",null);v(this,"playback",null);v(this,"root");v(this,"stage");v(this,"bar");v(this,"playButton");v(this,"scrub");v(this,"time");v(this,"sceneLabel");v(this,"prev");v(this,"next");v(this,"playing",!1);v(this,"last",0);v(this,"acc",0);v(this,"raf",0);v(this,"replayRaf",0);v(this,"loadToken",0);v(this,"visible",!0);v(this,"observer",null);this.root=this.attachShadow({mode:"open"}),this.root.innerHTML=`<style>${cr}</style><div class="stage" part="stage" role="img"></div>
74
+ `),y!==null&&(P+=`<g class="dottie-d"${w}>
75
+ ${y}</g>
76
+ `),h){let A=c(l);if(A!==null)P+=`<g class="dottie-hit" opacity="0" pointer-events="all">
77
+ ${A}</g>
78
+ `;else{let k={x:h.x+h.width/2,y:h.y+h.height/2},v=h.rotation??0,b=[[h.x,h.y],[h.x+h.width,h.y],[h.x+h.width,h.y+h.height],[h.x,h.y+h.height]].map(([g,M])=>Wt({x:g,y:M},k,v)),f=new U().moveTo(b[0]).lineTo(b[1]).lineTo(b[2]).lineTo(b[3]).close();P+=`<path class="dottie-hit" d="${f.data()}" fill="none" stroke="none" pointer-events="all"/>
79
+ `}}return{key:t,markup:P,button:y!==null}}sceneAt(t){let n=-1;return this.scenes.forEach((r,o)=>{r<=t&&(n=o)}),n}sceneEnd(t){return this.scenes.find((n,r)=>r>t&&n>this.scenes[t])??this.frameCount}step(t,n){let r=t+1,o=this.sceneAt(t);if(o>=0&&this.sceneLoops[o]&&r>=this.sceneEnd(o))return{frame:this.scenes[o],stop:!1};if(r>=this.frameCount)return{frame:0,stop:!n||this.scenes.length>0};let i=this.scenes.indexOf(r);return{frame:r,stop:i>=0&&!this.sceneLoops[i]}}},ks=typeof HTMLElement>"u"?class{}:HTMLElement,ae=class extends ks{constructor(){super();E(this,"file",null);E(this,"playback",null);E(this,"root");E(this,"stage");E(this,"bar");E(this,"playButton");E(this,"scrub");E(this,"time");E(this,"sceneLabel");E(this,"prev");E(this,"next");E(this,"playing",!1);E(this,"last",0);E(this,"acc",0);E(this,"raf",0);E(this,"replayRaf",0);E(this,"loadToken",0);E(this,"visible",!0);E(this,"observer",null);this.root=this.attachShadow({mode:"open"}),this.root.innerHTML=`<style>${xs}</style><div class="stage" part="stage" role="img"></div>
78
80
  <div class="bar" part="controls" hidden>
79
81
  <button class="play" aria-label="Play">\u25B6</button>
80
82
  <button class="prev" aria-label="Previous scene" hidden>\u23EE</button>
@@ -82,4 +84,4 @@ ${w}</g>
82
84
  <button class="next" aria-label="Next scene" hidden>\u23ED</button>
83
85
  <input class="scrub" type="range" min="0" max="0" value="0" aria-label="Frame">
84
86
  <output class="time">0.0s</output>
85
- </div>`;let n=i=>this.root.querySelector(i);this.stage=n(".stage"),this.bar=n(".bar"),this.playButton=n(".play"),this.scrub=n(".scrub"),this.time=n(".time"),this.sceneLabel=n(".scene"),this.prev=n(".prev"),this.next=n(".next"),this.playButton.onclick=()=>{let i=this.playback;i&&!this.playing&&i.scenes.length&&i.frame>=i.frameCount-1&&i.show(0),this.setPlaying(!this.playing)},this.scrub.oninput=()=>{this.setPlaying(!1),this.playback?.show(Number(this.scrub.value))},this.next.onclick=()=>this.nextScene(),this.prev.onclick=()=>this.prevScene(),this.stage.addEventListener("click",i=>{let o=Vi(i.target);o&&this.activate(o.getAttribute("data-a")??"")}),this.addEventListener("keydown",i=>this.key(i))}connectedCallback(){this.hasAttribute("tabindex")||(this.tabIndex=0),"IntersectionObserver"in window&&(this.observer=new IntersectionObserver(n=>{this.visible=n.some(i=>i.isIntersecting),this.schedule()}),this.observer.observe(this)),this.load()}disconnectedCallback(){cancelAnimationFrame(this.raf),this.raf=0,this.observer?.disconnect()}attributeChangedCallback(n,i,o){i===o||!this.isConnected||(n==="src"?this.load():n==="label"?this.stage.setAttribute("aria-label",o??""):this.file&&this.mount())}async load(){let n=++this.loadToken;try{let i,o=this.getAttribute("src");if(o){let r=await fetch(o);if(!r.ok)throw new Error(`${o}: ${r.status} ${r.statusText}`);i=await r.text()}else{let r=this.querySelector('script[type="application/json"], script[type="application/vnd.dottie+json"]');if(!r)return;i=r.textContent??""}if(n!==this.loadToken)return;this.setFile(zt(i))}catch(i){if(n!==this.loadToken)return;this.stage.innerHTML="";let o=document.createElement("div");o.className="error",o.textContent=`Couldn't show this drawing: ${i.message}`,this.stage.append(o),this.dispatchEvent(new CustomEvent("error",{detail:i}))}}setFile(n){this.file=n;for(let i of n.warnings)console.warn(`dottie-player: ${i}`);this.mount(),this.dispatchEvent(new CustomEvent("load",{detail:{file:n}}))}mount(){let n=this.file,i=n.pages[ee(n,this.getAttribute("page"))],o=new te(i,this.stage,{clean:this.hasAttribute("clean"),file:n});this.playback=o,this.style.setProperty("--dottie-page",W(o.background)),this.style.setProperty("--dottie-ink",W(o.ink)),this.style.colorScheme=Et(o.background)<.5?"dark":"light",this.stage.setAttribute("aria-label",this.getAttribute("label")??i.name);let r=this.getAttribute("at"),l=i.timeline!==null&&o.frameCount>1&&r===null;this.bar.hidden=!l||this.hasAttribute("no-controls");let s=o.scenes.length>0;if(this.prev.hidden=this.next.hidden=this.sceneLabel.hidden=!s,this.scrub.max=String(o.frameCount-1),o.onFrame=u=>{if(this.scrub.value=String(u),this.time.textContent=`${o.plan.times[u].toFixed(1)}s`,s){let c=o.sceneAt(u);this.sceneLabel.textContent=c<0?"":o.sceneNames[c]}this.dispatchEvent(new CustomEvent("frame",{detail:{frame:u,time:o.plan.times[u]}}))},!l){o.drawAt(r!==null?Number(r)||0:yt(i),r!==null?Wi(o,Number(r)||0):o.posterFrame),this.setPlaying(!1);return}if(o.show(0),typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches){o.show(o.posterFrame),this.setPlaying(!1);return}this.setPlaying(!this.hasAttribute("no-autoplay")&&(!o.scenes.includes(0)||o.sceneLoops[o.scenes.indexOf(0)]))}get paused(){return!this.playing}get currentTime(){let n=this.playback;return n&&n.frame>=0?n.plan.times[n.frame]:0}set currentTime(n){let i=this.playback;i&&(this.setPlaying(!1),i.show(Wi(i,n)))}get duration(){return this.playback?.page.timeline?.duration??0}play(){this.setPlaying(!0)}pause(){this.setPlaying(!1)}nextScene(){let n=this.playback;if(!n)return;let i=n.sceneAt(n.frame);i>=0&&n.sceneLoops[i]?n.show(i+1<n.scenes.length?n.scenes[i+1]:0):n.frame>=n.frameCount-1&&n.show(0),this.setPlaying(!0)}prevScene(){let n=this.playback;if(!n)return;let i=n.sceneAt(n.frame);i>=0&&n.scenes[i]===n.frame&&(i-=1),this.setPlaying(!1),n.show(i>=0?n.scenes[i]:0)}activate(n){let i=this.playback,o=i?.clicks.get(n),r=i?.replays.has(n)??!1;if(!i||!o&&!r)return;let l={element:n,...o??{},...r?{replay:!0}:{}};if(!this.dispatchEvent(new CustomEvent("action",{detail:l,cancelable:!0})))return;let s=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches;if(r){let a=performance.now();i.replay(n,s?a-i.replays.get(n)*1e3:a),i.redraw(),this.scheduleReplay()}o&&((o.set||o.toggle)&&this.setState(An({scene:null,url:null,set:o.set??null,toggle:o.toggle??null},i.state)),!("state"in o)&&("url"in o?/^(https?:|mailto:)/i.test(o.url)&&window.open(o.url,"_blank","noopener"):"page"in o?this.setAttribute("page",String(o.page+1)):o.scene>=0&&o.scene<i.scenes.length&&(s||this.hasAttribute("at")||i.frameCount<2?(this.setPlaying(!1),i.show(i.sceneLoops[o.scene]?i.scenes[o.scene]:o.scene+1<i.scenes.length?i.scenes[o.scene+1]:i.frameCount-1)):(i.show(i.scenes[o.scene]),this.setPlaying(!0)))))}get variables(){return{...this.playback?.state??{}}}setState(n){let i=this.playback;if(!i)return;let o={...i.state,...n};Object.keys(o).every(r=>o[r]===i.state[r])||(i.state=o,i.redraw(),this.dispatchEvent(new CustomEvent("state",{detail:{variables:{...o}}})))}scheduleReplay(){if(this.replayRaf)return;let n=()=>{this.replayRaf=0;let i=this.playback;!i||!this.isConnected||(this.playing||i.redraw(),i.replaying()?this.replayRaf=requestAnimationFrame(n):this.playing||i.redraw())};this.replayRaf=requestAnimationFrame(n)}setPlaying(n){let i=this.playback;this.playing=n&&!!i&&i.frameCount>1&&i.page.timeline!==null,this.playButton.textContent=this.playing?"\u275A\u275A":"\u25B6",this.playButton.setAttribute("aria-label",this.playing?"Pause":"Play"),this.last=0,this.acc=0,this.schedule()}schedule(){this.playing&&this.visible&&!this.raf&&this.isConnected&&(this.raf=requestAnimationFrame(n=>this.tick(n)))}tick(n){this.raf=0;let i=this.playback;if(!this.playing||!i)return;let o=1e3/(i.page.timeline?.fps??12);this.last&&(this.acc+=Math.min(n-this.last,1e3)),this.last=n;let r=!1;for(;this.playing&&this.acc>=o;){this.acc-=o;let{frame:l,stop:s}=i.step(i.frame,!this.hasAttribute("no-loop"));if(s&&l===0&&i.frame+1>=i.frameCount){this.setPlaying(!1);break}if(i.frame=l,r=!0,s){this.setPlaying(!1);break}}r&&i.show(i.frame),this.playing&&!this.visible&&(this.last=0),this.schedule()}key(n){let i=this.playback,o=n.composedPath()[0],r=Vi(o);if(i&&r&&(n.key==="Enter"||n.key===" ")){n.preventDefault(),this.activate(r.getAttribute("data-a")??"");return}if(!i||i.page.timeline===null||i.frameCount<=1||this.hasAttribute("at")||o===this.scrub&&n.key!==" ")return;let l=i.scenes.length>0,s=!0;n.key===" "?l?this.playing?this.setPlaying(!1):this.nextScene():this.setPlaying(!this.playing):n.key==="ArrowRight"?l?this.nextScene():(this.setPlaying(!1),i.show(i.frame+1)):n.key==="ArrowLeft"?l?this.prevScene():(this.setPlaying(!1),i.show(i.frame-1)):n.key==="."?(this.setPlaying(!1),i.show(i.frame+1)):n.key===","?(this.setPlaying(!1),i.show(i.frame-1)):s=!1,s&&n.preventDefault()}};v(Ot,"observedAttributes",["src","page","at","clean","no-controls","label"]);function Vi(t){let e=t;return e&&typeof e.closest=="function"?e.closest(".dottie-a"):null}function Wi(t,e){let n=0;return t.plan.times.forEach((i,o)=>{Math.abs(i-e)<Math.abs(t.plan.times[n]-e)&&(n=o)}),n}function Fe(t="dottie-player"){typeof customElements<"u"&&!customElements.get(t)&&customElements.define(t,class extends Ot{})}var F=t=>{let e=Xt(t*1e4)/1e4;return e===0?0:e},bn=t=>[F(t.x),F(t.y)],ie=t=>[F(t.x),F(t.y),F(t.width),F(t.height)],xn=t=>[F(t.r),F(t.g),F(t.b),F(t.a)];function kn(t){let e=t.timeline;if(!e)return[0];let n=e.duration,i=[0,n];for(let o=1;o<16;o++)i.push(n*(o+.37)/16);for(let o of e.markers??[])i.push(o.t);return e.poster!==null&&i.push(e.poster),[...new Set(i.map(F))].filter(o=>o>=0&&o<=n).sort((o,r)=>o-r)}function wn(t,e){let n=nt(t,e),i=et(n),o=new Set(n.layers.filter(s=>s.visible).map(s=>s.id)),r={t:F(e)},l=t.timeline;if(l){let s=Dt(l,e);r.view=s?ie(s):null;let a=-1;(l.markers??[]).forEach((u,c)=>{u.t<=e&&(a=c)}),r.scene=a}return l?.camera?.length||(r.bounds=ie(ht(n))),r.elements=st(n).map((s,a)=>{let u={id:s.id,kind:s.kind,z:a,seed:s.seed,frame:ie({x:s.x,y:s.y,width:s.width,height:s.height})};if(o.has(s.layerID)||(u.hiddenLayer=!0),s.rotation!==null&&(u.rotation=F(s.rotation)),s.style.opacity!==null&&(u.opacity=F(s.style.opacity)),s.reveal!==null&&(u.reveal=F(s.reveal)),s.style.dashOffset!==null&&(u.dashOffset=F(s.style.dashOffset)),u.strokeWidth=F(s.style.strokeWidth),u.stroke=xn(s.style.stroke),u.fill=xn(s.style.fill),s.style.textColor!==null&&(u.textColor=xn(s.style.textColor)),s.kind==="connector"){let[c,h]=lt(s,i);u.start=bn(c),u.end=bn(h),u.route=at(ct(s,i)).map(bn)}return u}),r}function Pn(t,e,n){let i={page:e+1,name:t.name,id:t.id},o=t.timeline;if(o){let r=Yt(t);i.duration=F(o.duration),i.fps=F(o.fps),i.frameCount=r.times.length,i.poster=F(o.poster??o.duration),i.size=[F(r.size.width),F(r.size.height)],o.camera?.length||(i.bounds=ie(r.rects[0])),i.markers=(o.markers??[]).map(l=>({t:F(l.t),name:l.name}))}else i.bounds=ie(ht(t));return i.frames=n.map(r=>wn(t,r)),i}function $i(t,e){return{version:t.version,pages:t.pages.map((n,i)=>Pn(n,i,e??kn(n)))}}function hr(t,e={}){let n=fr(t)?t:zt(t),i=n.pages[ee(n,e.page===void 0?null:String(e.page))];return i=nt(i,e.at??yt(i)),e.clean&&(i=ne(i,0)),Le(i,e.background===void 0?{r:1,g:1,b:1,a:1}:e.background)}function fr(t){return typeof t=="object"&&t!==null&&Array.isArray(t.pages)&&Array.isArray(t.warnings)}var mr="0.7.0";Fe();globalThis.Dottie??(globalThis.Dottie=Mn);})();
87
+ </div>`;let n=r=>this.root.querySelector(r);this.stage=n(".stage"),this.bar=n(".bar"),this.playButton=n(".play"),this.scrub=n(".scrub"),this.time=n(".time"),this.sceneLabel=n(".scene"),this.prev=n(".prev"),this.next=n(".next"),this.playButton.onclick=()=>{let r=this.playback;r&&!this.playing&&r.scenes.length&&r.frame>=r.frameCount-1&&r.show(0),this.setPlaying(!this.playing)},this.scrub.oninput=()=>{this.setPlaying(!1),this.playback?.show(Number(this.scrub.value))},this.next.onclick=()=>this.nextScene(),this.prev.onclick=()=>this.prevScene(),this.stage.addEventListener("click",r=>{let o=Go(r.target);o&&this.activate(o.getAttribute("data-a")??"")}),this.addEventListener("keydown",r=>this.key(r))}connectedCallback(){this.hasAttribute("tabindex")||(this.tabIndex=0),"IntersectionObserver"in window&&(this.observer=new IntersectionObserver(n=>{this.visible=n.some(r=>r.isIntersecting),this.schedule()}),this.observer.observe(this)),this.load()}disconnectedCallback(){cancelAnimationFrame(this.raf),this.raf=0,this.observer?.disconnect()}attributeChangedCallback(n,r,o){r===o||!this.isConnected||(n==="src"?this.load():n==="label"?this.stage.setAttribute("aria-label",o??""):this.file&&this.mount())}async load(){let n=++this.loadToken;try{let r,o=this.getAttribute("src");if(o){let i=await fetch(o);if(!i.ok)throw new Error(`${o}: ${i.status} ${i.statusText}`);r=await i.text()}else{let i=this.querySelector('script[type="application/json"], script[type="application/vnd.dottie+json"]');if(!i)return;r=i.textContent??""}if(n!==this.loadToken)return;this.setFile(fe(r))}catch(r){if(n!==this.loadToken)return;this.stage.innerHTML="";let o=document.createElement("div");o.className="error",o.textContent=`Couldn't show this drawing: ${r.message}`,this.stage.append(o),this.dispatchEvent(new CustomEvent("error",{detail:r}))}}setFile(n){this.file=n;for(let r of n.warnings)console.warn(`dottie-player: ${r}`);this.mount(),this.dispatchEvent(new CustomEvent("load",{detail:{file:n}}))}mount(){let n=this.file,r=n.pages[Ee(n,this.getAttribute("page"))],o=new Se(r,this.stage,{clean:this.hasAttribute("clean"),file:n});o.still=this.hasAttribute("at"),this.playback=o,this.style.setProperty("--dottie-page",ht(o.background)),this.style.setProperty("--dottie-ink",ht(o.ink)),this.style.colorScheme=ee(o.background)<.5?"dark":"light",this.stage.setAttribute("aria-label",this.getAttribute("label")??r.name);let i=this.getAttribute("at"),l=r.timeline!==null&&o.frameCount>1&&i===null;this.bar.hidden=!l||this.hasAttribute("no-controls");let s=o.scenes.length>0;if(this.prev.hidden=this.next.hidden=this.sceneLabel.hidden=!s,this.scrub.max=String(o.frameCount-1),o.onFrame=c=>{if(this.scrub.value=String(c),this.time.textContent=`${o.plan.times[c].toFixed(1)}s`,s){let a=o.sceneAt(c);this.sceneLabel.textContent=a<0?"":o.sceneNames[a]}this.dispatchEvent(new CustomEvent("frame",{detail:{frame:c,time:o.plan.times[c]}}))},!l){o.drawAt(i!==null?Number(i)||0:Gt(r),i!==null?zo(o,Number(i)||0):o.posterFrame),this.setPlaying(!1);return}if(o.show(0),typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches){o.show(o.posterFrame),this.setPlaying(!1);return}this.setPlaying(!this.hasAttribute("no-autoplay")&&(!o.scenes.includes(0)||o.sceneLoops[o.scenes.indexOf(0)]))}get paused(){return!this.playing}get currentTime(){let n=this.playback;return n&&n.frame>=0?n.plan.times[n.frame]:0}set currentTime(n){let r=this.playback;r&&(this.setPlaying(!1),r.show(zo(r,n)))}get duration(){return this.playback?.page.timeline?.duration??0}play(){this.setPlaying(!0)}pause(){this.setPlaying(!1)}nextScene(){let n=this.playback;if(!n)return;let r=n.sceneAt(n.frame);r>=0&&n.sceneLoops[r]?n.show(r+1<n.scenes.length?n.scenes[r+1]:0):n.frame>=n.frameCount-1&&n.show(0),this.setPlaying(!0)}prevScene(){let n=this.playback;if(!n)return;let r=n.sceneAt(n.frame);r>=0&&n.scenes[r]===n.frame&&(r-=1),this.setPlaying(!1),n.show(r>=0?n.scenes[r]:0)}activate(n){let r=this.playback,o=r?.clicks.get(n),i=r?.replays.has(n)??!1;if(!r||!o&&!i)return;let l={element:n,...o??{},...i?{replay:!0}:{}};if(!this.dispatchEvent(new CustomEvent("action",{detail:l,cancelable:!0})))return;let s=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches;if(i){let u=performance.now();r.replay(n,s?u-r.replays.get(n)*1e3:u),r.redraw(),this.scheduleReplay()}o&&((o.set||o.toggle||o.reset)&&this.setState(xr({scene:null,url:null,set:o.set??null,toggle:o.toggle??null,reset:o.reset??null},r.state,r.page.variables??{})),!("state"in o)&&("url"in o?/^(https?:|mailto:)/i.test(o.url)&&window.open(o.url,"_blank","noopener"):"page"in o?this.setAttribute("page",String(o.page+1)):o.scene>=0&&o.scene<r.scenes.length&&(s||this.hasAttribute("at")||r.frameCount<2?(this.setPlaying(!1),r.show(r.sceneLoops[o.scene]?r.scenes[o.scene]:o.scene+1<r.scenes.length?r.scenes[o.scene+1]:r.frameCount-1)):(r.show(r.scenes[o.scene]),this.setPlaying(!0)))))}get variables(){return{...this.playback?.state??{}}}setState(n){let r=this.playback;if(!r)return;let o={...r.state,...n};if(Object.keys(o).every(l=>o[l]===r.state[l]))return;let i=ct(r.last.t);r.carried=Hn(r.page,i,r.state,r.sinceChange(),r.carried).metrics.carry,r.state=o,r.stateSince=performance.now(),r.redraw(),this.dispatchEvent(new CustomEvent("state",{detail:{variables:{...o}}}))}scheduleReplay(){if(this.replayRaf)return;let n=()=>{this.replayRaf=0;let r=this.playback;!r||!this.isConnected||(this.playing||r.redraw(),r.replaying()?this.replayRaf=requestAnimationFrame(n):this.playing||r.redraw())};this.replayRaf=requestAnimationFrame(n)}setPlaying(n){let r=this.playback;this.playing=n&&!!r&&r.frameCount>1&&r.page.timeline!==null,this.playButton.textContent=this.playing?"\u275A\u275A":"\u25B6",this.playButton.setAttribute("aria-label",this.playing?"Pause":"Play"),this.last=0,this.acc=0,this.schedule()}schedule(){this.playing&&this.visible&&!this.raf&&this.isConnected&&(this.raf=requestAnimationFrame(n=>this.tick(n)))}tick(n){this.raf=0;let r=this.playback;if(!this.playing||!r)return;let o=1e3/(r.page.timeline?.fps??12);this.last&&(this.acc+=Math.min(n-this.last,1e3)),this.last=n;let i=!1;for(;this.playing&&this.acc>=o;){this.acc-=o;let{frame:l,stop:s}=r.step(r.frame,!this.hasAttribute("no-loop"));if(s&&l===0&&r.frame+1>=r.frameCount){this.setPlaying(!1);break}if(r.frame=l,i=!0,s){this.setPlaying(!1);break}}i&&r.show(r.frame),this.playing&&!this.visible&&(this.last=0),this.schedule()}key(n){let r=this.playback,o=n.composedPath()[0],i=Go(o);if(r&&i&&(n.key==="Enter"||n.key===" ")){n.preventDefault(),this.activate(i.getAttribute("data-a")??"");return}if(!r||r.page.timeline===null||r.frameCount<=1||this.hasAttribute("at")||o===this.scrub&&n.key!==" ")return;let l=r.scenes.length>0,s=!0;n.key===" "?l?this.playing?this.setPlaying(!1):this.nextScene():this.setPlaying(!this.playing):n.key==="ArrowRight"?l?this.nextScene():(this.setPlaying(!1),r.show(r.frame+1)):n.key==="ArrowLeft"?l?this.prevScene():(this.setPlaying(!1),r.show(r.frame-1)):n.key==="."?(this.setPlaying(!1),r.show(r.frame+1)):n.key===","?(this.setPlaying(!1),r.show(r.frame-1)):s=!1,s&&n.preventDefault()}};E(ae,"observedAttributes",["src","page","at","clean","no-controls","label"]);function Go(e){let t=e;return t&&typeof t.closest=="function"?t.closest(".dottie-a"):null}function zo(e,t){let n=0;return e.plan.times.forEach((r,o)=>{Math.abs(r-t)<Math.abs(e.plan.times[n]-t)&&(n=o)}),n}function un(e="dottie-player"){typeof customElements<"u"&&!customElements.get(e)&&customElements.define(e,class extends ae{})}var J=e=>{let t=ge(e*1e4)/1e4;return t===0?0:t},lr=e=>[J(e.x),J(e.y)],Ie=e=>[J(e.x),J(e.y),J(e.width),J(e.height)],ar=e=>[J(e.r),J(e.g),J(e.b),J(e.a)];function ur(e){let t=e.timeline;if(!t)return[0];let n=t.duration,r=[0,n];for(let o=1;o<16;o++)r.push(n*(o+.37)/16);for(let o of t.markers??[])r.push(o.t);return t.poster!==null&&r.push(t.poster),[...new Set(r.map(J))].filter(o=>o>=0&&o<=n).sort((o,i)=>o-i)}function cr(e,t){let n=St(e,t),r=At(n),o=new Set(n.layers.filter(s=>s.visible).map(s=>s.id)),i={t:J(t)},l=e.timeline;if(l){let s=se(l,t);i.view=s?Ie(s):null;let u=-1;(l.markers??[]).forEach((c,a)=>{c.t<=t&&(u=a)}),i.scene=u}return l?.camera?.length||(i.bounds=Ie(Ot(n))),i.elements=It(n).map((s,u)=>{let c={id:s.id,kind:s.kind,z:u,seed:s.seed,frame:Ie({x:s.x,y:s.y,width:s.width,height:s.height})};if(o.has(s.layerID)||(c.hiddenLayer=!0),s.rotation!==null&&(c.rotation=J(s.rotation)),s.style.opacity!==null&&(c.opacity=J(s.style.opacity)),s.reveal!==null&&(c.reveal=J(s.reveal)),s.style.dashOffset!==null&&(c.dashOffset=J(s.style.dashOffset)),c.strokeWidth=J(s.style.strokeWidth),c.stroke=ar(s.style.stroke),c.fill=ar(s.style.fill),s.style.textColor!==null&&(c.textColor=ar(s.style.textColor)),s.kind==="connector"){let[a,h]=Ft(s,r);c.start=lr(a),c.end=lr(h),c.route=Lt(Ct(s,r)).map(lr)}return c}),i}function hr(e,t,n){let r={page:t+1,name:e.name,id:e.id},o=e.timeline;if(o){let i=le(e);r.duration=J(o.duration),r.fps=J(o.fps),r.frameCount=i.times.length,r.poster=J(o.poster??o.duration),r.size=[J(i.size.width),J(i.size.height)],o.camera?.length||(r.bounds=Ie(i.rects[0])),r.markers=(o.markers??[]).map(l=>({t:J(l.t),name:l.name}))}else r.bounds=Ie(Ot(e));return r.frames=n.map(i=>cr(e,i)),r}function No(e,t){return{version:e.version,pages:e.pages.map((n,r)=>hr(n,r,t??ur(n)))}}function ws(e,t={}){let n=Ms(e)?e:fe(e),r=n.pages[Ee(n,t.page===void 0?null:String(t.page))];return r=St(r,t.at??Gt(r)),t.clean&&(r=Te(r,0)),an(r,t.background===void 0?{r:1,g:1,b:1,a:1}:t.background)}function Ms(e){return typeof e=="object"&&e!==null&&Array.isArray(e.pages)&&Array.isArray(e.warnings)}var Ps="0.8.0";un();globalThis.Dottie??(globalThis.Dottie=fr);})();