hyperframes 0.6.58 → 0.6.60

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.
package/dist/cli.js CHANGED
@@ -50,7 +50,7 @@ var VERSION;
50
50
  var init_version = __esm({
51
51
  "src/version.ts"() {
52
52
  "use strict";
53
- VERSION = true ? "0.6.58" : "0.0.0-dev";
53
+ VERSION = true ? "0.6.60" : "0.0.0-dev";
54
54
  }
55
55
  });
56
56
 
@@ -8016,7 +8016,7 @@ var require_util = __commonJS({
8016
8016
  return path2;
8017
8017
  }
8018
8018
  exports.normalize = normalize;
8019
- function join91(aRoot, aPath) {
8019
+ function join92(aRoot, aPath) {
8020
8020
  if (aRoot === "") {
8021
8021
  aRoot = ".";
8022
8022
  }
@@ -8048,7 +8048,7 @@ var require_util = __commonJS({
8048
8048
  }
8049
8049
  return joined;
8050
8050
  }
8051
- exports.join = join91;
8051
+ exports.join = join92;
8052
8052
  exports.isAbsolute = function(aPath) {
8053
8053
  return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
8054
8054
  };
@@ -8221,7 +8221,7 @@ var require_util = __commonJS({
8221
8221
  parsed.path = parsed.path.substring(0, index + 1);
8222
8222
  }
8223
8223
  }
8224
- sourceURL = join91(urlGenerate(parsed), sourceURL);
8224
+ sourceURL = join92(urlGenerate(parsed), sourceURL);
8225
8225
  }
8226
8226
  return normalize(sourceURL);
8227
8227
  }
@@ -37859,6 +37859,24 @@ ${right.raw}`)
37859
37859
  }
37860
37860
  return findings;
37861
37861
  },
37862
+ // gsap_timeline_not_registered
37863
+ ({ scripts, rawSource, options }) => {
37864
+ const findings = [];
37865
+ const canInheritFromHost = options.isSubComposition || rawSource.trimStart().toLowerCase().startsWith("<template");
37866
+ for (const script of scripts) {
37867
+ const content = script.content;
37868
+ if (!/gsap\.timeline/.test(content)) continue;
37869
+ const hasRegistration = WINDOW_TIMELINE_ASSIGN_PATTERN.test(content);
37870
+ if (hasRegistration || canInheritFromHost) continue;
37871
+ findings.push({
37872
+ code: "gsap_timeline_not_registered",
37873
+ severity: "warning",
37874
+ message: "GSAP timeline is created but never registered in window.__timelines. The runtime discovers timelines from this registry \u2014 without registration, animations will not play during preview or render.",
37875
+ fixHint: 'Add `window.__timelines = window.__timelines || {};` and `window.__timelines["root"] = tl;` after creating the timeline (use the composition\'s data-composition-id as the key).'
37876
+ });
37877
+ }
37878
+ return findings;
37879
+ },
37862
37880
  // gsap_from_opacity_noop — CSS opacity:0 + gsap.from({opacity:0}) = invisible forever
37863
37881
  async ({ styles, scripts, tags }) => {
37864
37882
  const findings = [];
@@ -39215,7 +39233,7 @@ var RUNTIME_IIFE;
39215
39233
  var init_runtime_inline = __esm({
39216
39234
  "../core/src/generated/runtime-inline.ts"() {
39217
39235
  "use strict";
39218
- RUNTIME_IIFE = '"use strict";(()=>{var ns=Object.create;var xn=Object.defineProperty;var is=Object.getOwnPropertyDescriptor;var rs=Object.getOwnPropertyNames;var os=Object.getPrototypeOf,ss=Object.prototype.hasOwnProperty;var as=(t,e,n)=>e in t?xn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Z=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var ls=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of rs(e))!ss.call(t,r)&&r!==n&&xn(t,r,{get:()=>e[r],enumerable:!(i=is(e,r))||i.enumerable});return t};var us=(t,e,n)=>(n=t!=null?ns(os(t)):{},ls(e||!t||!t.__esModule?xn(n,"default",{value:t,enumerable:!0}):n,t));var ye=(t,e,n)=>as(t,typeof e!="symbol"?e+"":e,n);var qi=Z((fc,Fn)=>{var K=String,Hi=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};Fn.exports=Hi();Fn.exports.createColors=Hi});var wn=Z(()=>{});var qt=Z((hc,zi)=>{"use strict";var Vi=qi(),Ui=wn(),yt=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,t)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let n=this.source;e==null&&(e=Vi.isColorSupported);let i=u=>u,r=u=>u,o=u=>u;if(e){let{bold:u,gray:m,red:f}=Vi.createColors(!0);r=x=>u(f(x)),i=x=>m(x),Ui&&(o=x=>Ui(x))}let s=n.split(/\\r?\\n/),l=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),c=String(a).length;return s.slice(l,a).map((u,m)=>{let f=l+1+m,x=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(u.length>160){let E=20,S=Math.max(0,this.column-E),B=Math.max(this.column+E,this.endColumn+E),D=u.slice(S,B),v=i(x.replace(/\\d/g," "))+u.slice(0,Math.min(this.column-1,E-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(D)+`\n `+v+r("^")}let F=i(x.replace(/\\d/g," "))+u.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(u)+`\n `+F+r("^")}return" "+i(x)+o(u)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};zi.exports=yt;yt.default=yt});var Nn=Z((xc,$i)=>{"use strict";var _s=/(<)(\\/?style\\b)/gi,Rs=/(<)(!--)/g;function He(t){return typeof t!="string"||!t.includes("<")?t:t.replace(_s,"\\\\3c $2").replace(Rs,"\\\\3c $2")}var ji={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Ls(t){return t[0].toUpperCase()+t.slice(1)}var St=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(He(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let l=0;l<o;l++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(He(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(He(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let l=n[s],a=this.raw(l,"before");a&&this.builder(o?a:He(a)),this.stringify(l,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(He("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(He(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return ji[i];let s=e.root(),l=s.rawCache||(s.rawCache={});if(typeof l[i]<"u")return l[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let a="raw"+Ls(i);this[a]?r=this[a](s,e):s.walk(c=>{if(r=c.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=ji[i]),l[i]=r,r}rawBeforeClose(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(e,n){let i;return e.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(e,n){let i;return e.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:He(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(He(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};$i.exports=St;St.default=St});var bt=Z((gc,Gi)=>{"use strict";var Ds=Nn();function Cn(t,e){new Ds(e).stringify(t)}Gi.exports=Cn;Cn.default=Cn});var Vt=Z((yc,Mn)=>{"use strict";Mn.exports.isClean=Symbol("isClean");Mn.exports.my=Symbol("my")});var Ft=Z((Sc,Ki)=>{"use strict";var Bs=qt(),Is=Nn(),Os=bt(),{isClean:At,my:Ps}=Vt();function kn(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>kn(s,n)):(o==="object"&&r!==null&&(r=kn(r)),n[i]=r)}return n}function Oe(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var Et=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[At]=!1,this[Ps]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=kn(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Bs(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[At]=!0}markDirty(){if(this[At]){this[At]=!1;let e=this;for(;e=e.parent;)e[At]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Oe(i,this.source.start),Oe(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=Oe(r,this.source.start),s=o+e;for(let l=o;l<s;l++)r[l]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:Oe(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:Oe(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Oe(n,this.source.start),Oe(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Oe(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Oe(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(e,n){return new Is().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let l=this[s];if(Array.isArray(l))i[s]=l.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof l=="object"&&l.toJSON)i[s]=l.toJSON(null,n);else if(s==="source"){if(l==null)continue;let a=n.get(l.input);a==null&&(a=o,n.set(l.input,o),o++),i[s]={end:l.end,inputId:a,start:l.start}}else i[s]=l}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Os){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};Ki.exports=Et;Et.default=Et});var Nt=Z((bc,Ji)=>{"use strict";var Ws=Ft(),wt=class extends Ws{constructor(e){super(e),this.type="comment"}};Ji.exports=wt;wt.default=wt});var Mt=Z((Ac,Qi)=>{"use strict";var Hs=Ft(),Ct=class extends Hs{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};Qi.exports=Ct;Ct.default=Ct});var qe=Z((Ec,or)=>{"use strict";var Yi=Nt(),Zi=Mt(),qs=Ft(),{isClean:Xi,my:er}=Vt(),Tn,tr,nr,vn;function ir(t){return t.map(e=>(e.nodes&&(e.nodes=ir(e.nodes)),delete e.source,e))}function rr(t){if(t[Xi]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)rr(e)}var _e=class t extends qs{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let l of o)this.proxyOf.nodes.splice(i,0,l);let s;for(let l in this.indexes)s=this.indexes[l],i<=s&&(this.indexes[l]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=ir(tr(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Zi(e)]}else if(e.selector||e.selectors)e=[new vn(e)];else if(e.name)e=[new Tn(e)];else if(e.text)e=[new Yi(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[er]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[Xi]&&rr(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...e){e=e.reverse();for(let n of e){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};_e.registerParse=t=>{tr=t};_e.registerRule=t=>{vn=t};_e.registerAtRule=t=>{Tn=t};_e.registerRoot=t=>{nr=t};or.exports=_e;_e.default=_e;_e.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,Tn.prototype):t.type==="rule"?Object.setPrototypeOf(t,vn.prototype):t.type==="decl"?Object.setPrototypeOf(t,Zi.prototype):t.type==="comment"?Object.setPrototypeOf(t,Yi.prototype):t.type==="root"&&Object.setPrototypeOf(t,nr.prototype),t[er]=!0,t.nodes&&t.nodes.forEach(e=>{_e.rebuild(e)})}});var Ut=Z((Fc,ar)=>{"use strict";var sr=qe(),nt=class extends sr{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};ar.exports=nt;nt.default=nt;sr.registerAtRule(nt)});var zt=Z((wc,cr)=>{"use strict";var Vs=qe(),lr,ur,Ze=class extends Vs{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new lr(new ur,this,e).stringify()}};Ze.registerLazyResult=t=>{lr=t};Ze.registerProcessor=t=>{ur=t};cr.exports=Ze;Ze.default=Ze});var fr=Z((Nc,dr)=>{var Us="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",zs=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},js=(t=21)=>{let e="",n=t|0;for(;n--;)e+=Us[Math.random()*64|0];return e};dr.exports={nanoid:js,customAlphabet:zs}});var jt=Z(()=>{});var $t=Z(()=>{});var _n=Z(()=>{});var mr=Z(()=>{});var Ln=Z((Dc,xr)=>{"use strict";var{existsSync:$s,readFileSync:Gs}=mr(),{dirname:Rn,join:Ks}=jt(),{SourceMapConsumer:pr,SourceMapGenerator:hr}=$t();function Js(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var kt=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=Rn(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new pr(this.json||this.text)),this.consumerCache}decodeInline(e){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let l=e.match(n)||e.match(i);if(l)return Js(e.substr(l[0].length));let a=e.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=Rn(e),$s(e)))return this.mapFile=e,Gs(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof pr)return hr.fromSourceMap(n).toString();if(n instanceof hr)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;e&&(i=Ks(Rn(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};xr.exports=kt;kt.default=kt});var Tt=Z((Bc,Ar)=>{"use strict";var{nanoid:Qs}=fr(),{isAbsolute:In,resolve:On}=jt(),{SourceMapConsumer:Ys,SourceMapGenerator:Zs}=$t(),{fileURLToPath:gr,pathToFileURL:Gt}=_n(),yr=qt(),Xs=Ln(),Dn=wn(),Bn=Symbol("lineToIndexCache"),ea=!!(Ys&&Zs),Sr=!!(On&&In);function br(t){if(t[Bn])return t[Bn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Bn]=n,n}var it=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Sr||/^\\w+:\\/\\//.test(n.from)||In(n.from)?this.file=n.from:this.file=On(n.from)),Sr&&ea){let i=new Xs(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+Qs(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,l,a,c;if(n&&typeof n=="object"){let m=n,f=i;if(typeof m.offset=="number"){a=m.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=m.line,i=m.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){l=f.offset;let x=this.fromOffset(l);s=x.line,o=x.col}else s=f.line,o=f.column,l=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let m=this.fromOffset(a);n=m.line,i=m.col}let u=this.origin(n,i,s,o);return u?c=new yr(e,u.endLine===void 0?u.line:{column:u.column,line:u.line},u.endLine===void 0?u.column:{column:u.endColumn,line:u.endLine},u.source,u.file,r.plugin):c=new yr(e,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),c.input={column:i,endColumn:o,endLine:s,endOffset:l,line:n,offset:a,source:this.css},this.file&&(Gt&&(c.input.url=Gt(this.file).toString()),c.input.file=this.file),c}fromLineAndColumn(e,n){return br(this)[e-1]+n-1}fromOffset(e){let n=br(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:On(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let l;typeof i=="number"&&(l=o.originalPositionFor({column:r,line:i}));let a;In(s.source)?a=Gt(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||Gt(this.map.mapFile));let c={column:s.column,endColumn:l&&l.column,endLine:l&&l.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(gr)c.file=gr(a);else throw new Error("file: protocol is not available in this PostCSS build");let u=o.sourceContentFor(s.source);return u&&(c.source=u),c}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};Ar.exports=it;it.default=it;Dn&&Dn.registerInput&&Dn.registerInput(it)});var rt=Z((Ic,Nr)=>{"use strict";var Er=qe(),Fr,wr,Ve=class extends Er{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new Fr(new wr,this,e).stringify()}};Ve.registerLazyResult=t=>{Fr=t};Ve.registerProcessor=t=>{wr=t};Nr.exports=Ve;Ve.default=Ve;Er.registerRoot(Ve)});var Pn=Z((Oc,Cr)=>{"use strict";var vt={comma(t){return vt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return vt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,l=!1,a="",c=!1;for(let u of t)c?c=!1:u==="\\\\"?c=!0:l?u===a&&(l=!1):u===\'"\'||u==="\'"?(l=!0,a=u):u==="("?s+=1:u===")"?s>0&&(s-=1):s===0&&e.includes(u)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=u;return(n||r!=="")&&i.push(r.trim()),i}};Cr.exports=vt;vt.default=vt});var Kt=Z((Pc,kr)=>{"use strict";var Mr=qe(),ta=Pn(),ot=class extends Mr{get selectors(){return ta.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};kr.exports=ot;ot.default=ot;Mr.registerRule(ot)});var vr=Z((Wc,Tr)=>{"use strict";var na=Ut(),ia=Nt(),ra=Mt(),oa=Tt(),sa=Ln(),aa=rt(),la=Kt();function _t(t,e){if(Array.isArray(t))return t.map(r=>_t(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:oa.prototype};o.map&&(o.map={...o.map,__proto__:sa.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>_t(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new aa(i);if(i.type==="decl")return new ra(i);if(i.type==="rule")return new la(i);if(i.type==="comment")return new ia(i);if(i.type==="atrule")return new na(i);throw new Error("Unknown node type: "+t.type)}Tr.exports=_t;_t.default=_t});var Hn=Z((Hc,Ir)=>{"use strict";var{dirname:Jt,relative:Rr,resolve:Lr,sep:Dr}=jt(),{SourceMapConsumer:Br,SourceMapGenerator:Qt}=$t(),{pathToFileURL:_r}=_n(),ua=Tt(),ca=!!(Br&&Qt),da=!!(Jt&&Lr&&Rr&&Dr),Wn=class{constructor(e,n,i,r){this.stringify=e,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||Jt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new Br(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),da&&ca&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Qt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Qt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Qt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(l,a,c)=>{if(this.css+=l,a&&c!=="end"&&(r.generated.line=e,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=l.match(/\\n/g),s?(e+=s.length,o=l.lastIndexOf(`\n`),n=l.length-o):n+=l.length,a&&c!=="start"){let u=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==u.last||u.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?Jt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Jt(Lr(i,this.mapOpts.annotation)));let r=Rr(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new ua(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(_r){let i=_r(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;Dr==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};Ir.exports=Wn});var Wr=Z((qc,Pr)=>{"use strict";var Yt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,Zt=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,fa=/.[\\r\\n"\'(/\\\\]/,Or=/[\\da-f]/i;Pr.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,l,a,c,u,m,f,x,F,E=i.length,S=0,B=[],D=[],v=-1;function X(){return S}function q(N){throw e.error("Unclosed "+N,S)}function C(){return D.length===0&&S>=E}function g(N){if(D.length)return D.pop();if(S>=E)return;let w=N?N.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{a=S;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);u=["space",i.slice(S,a)],S=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let M=String.fromCharCode(o);u=[M,M,S];break}case 40:{if(F=B.length?B.pop()[1]:"",x=i.charCodeAt(S+1),F==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=S;do{if(m=!1,a=i.indexOf(")",a+1),a===-1)if(r||w){a=S;break}else q("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,m=!m}while(m);u=["brackets",i.slice(S,a+1),S,a],S=a}else S<=v?u=["(","(",S]:(a=i.indexOf(")",S+1),s=i.slice(S,a+1),a===-1||fa.test(s)?(v=a===-1?E:a,u=["(","(",S]):(u=["brackets",s,S,a],S=a));break}case 39:case 34:{c=o===39?"\'":\'"\',a=S;do{if(m=!1,a=i.indexOf(c,a+1),a===-1)if(r||w){a=S+1;break}else q("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,m=!m}while(m);u=["string",i.slice(S,a+1),S,a],S=a;break}case 64:{Yt.lastIndex=S+1,Yt.test(i),Yt.lastIndex===0?a=i.length-1:a=Yt.lastIndex-2,u=["at-word",i.slice(S,a+1),S,a],S=a;break}case 92:{for(a=S,l=!0;i.charCodeAt(a+1)===92;)a+=1,l=!l;if(o=i.charCodeAt(a+1),l&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Or.test(i.charAt(a)))){for(;Or.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}u=["word",i.slice(S,a+1),S,a],S=a;break}default:{o===47&&i.charCodeAt(S+1)===42?(a=i.indexOf("*/",S+2)+1,a===0&&(r||w?a=i.length:q("comment")),u=["comment",i.slice(S,a+1),S,a],S=a):(Zt.lastIndex=S+1,Zt.test(i),Zt.lastIndex===0?a=i.length-1:a=Zt.lastIndex-2,u=["word",i.slice(S,a+1),S,a],B.push(u),S=a);break}}return S++,u}function A(N){D.push(N)}return{back:A,endOfFile:C,nextToken:g,position:X}}});var Ur=Z((Vc,Vr)=>{"use strict";var ma=Ut(),pa=Nt(),ha=Mt(),xa=rt(),Hr=Kt(),ga=Wr(),qr={empty:!0,space:!0};function ya(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var qn=class{constructor(e){this.input=e,this.root=new xa,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new ma;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,l=!1,a=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[0],i==="("||i==="["?c.push(i==="("?")":"]"):i==="{"&&c.length>0?c.push("}"):i===c[c.length-1]&&c.pop(),c.length===0)if(i===";"){n.source.end=this.getPosition(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){l=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(e=a[a.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),l&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,l]of e.entries()){if(r=l,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(e){let n=new pa;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=ga(this.input)}decl(e,n){let i=new ha;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||ya(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],l;for(;e.length&&(l=e[0][0],!(l!=="space"&&l!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(o=e[c],o[1].toLowerCase()==="!important"){i.important=!0;let u=this.stringFrom(e,c);u=this.spacesFromEnd(e)+u,u!==" !important"&&(i.raws.important=u);break}else if(o[1].toLowerCase()==="important"){let u=e.slice(0),m="";for(let f=c;f>0;f--){let x=u[f][0];if(m.trim().startsWith("!")&&x!=="space")break;m=u.pop()[1]+m}m.trim().startsWith("!")&&(i.important=!0,i.raws.important=m,e=u)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(i.raws.between+=s.map(c=>c[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new Hr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],l=e[1].startsWith("--"),a=[],c=e;for(;c;){if(i=c[0],a.push(c),i==="("||i==="[")o||(o=c),s.push(i==="("?")":"]");else if(l&&r&&i==="{")o||(o=c),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,l);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!l)for(;a.length&&(c=a[a.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,l=i.length,a="",c=!0,u,m;for(let f=0;f<l;f+=1)o=i[f],s=o[0],s==="space"&&f===l-1&&!r?c=!1:s==="comment"?(m=i[f-1]?i[f-1][0]:"empty",u=i[f+1]?i[f+1][0]:"empty",!qr[m]&&!qr[u]?a.slice(-1)===","?c=!1:a+=o[1]:c=!1):a+=o[1];if(!c){let f=i.reduce((x,F)=>x+F[1],"");e.raws[n]={raw:f,value:a}}e[n]=a}rule(e){e.pop();let n=new Hr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};Vr.exports=qn});var en=Z((Uc,zr)=>{"use strict";var Sa=qe(),ba=Tt(),Aa=Ur();function Xt(t,e){let n=new ba(t,e),i=new Aa(n);try{i.parse()}catch(r){throw r}return i.root}zr.exports=Xt;Xt.default=Xt;Sa.registerParse(Xt)});var Vn=Z((zc,jr)=>{"use strict";var Rt=class{constructor(e,n={}){if(this.type="warning",this.text=e,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};jr.exports=Rt;Rt.default=Rt});var tn=Z((jc,$r)=>{"use strict";var Ea=Vn(),Lt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Ea(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};$r.exports=Lt;Lt.default=Lt});var Un=Z(($c,Kr)=>{"use strict";var Gr={};Kr.exports=function(e){Gr[e]||(Gr[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var $n=Z((Kc,Zr)=>{"use strict";var Fa=qe(),wa=zt(),Na=Hn(),Ca=en(),Jr=tn(),Ma=rt(),ka=bt(),{isClean:Be,my:Ta}=Vt(),Gc=Un(),va={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},_a={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Ra={Once:!0,postcssPlugin:!0,prepare:!0},st=0;function Dt(t){return typeof t=="object"&&typeof t.then=="function"}function Yr(t){let e=!1,n=va[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,st,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,st,n+"Exit"]:[n,n+"Exit"]}function Qr(t){let e;return t.type==="document"?e=["Document",st,"DocumentExit"]:t.type==="root"?e=["Root",st,"RootExit"]:e=Yr(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function zn(t){return t[Be]=!1,t.nodes&&t.nodes.forEach(e=>zn(e)),t}var jn={},Ue=class t{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=zn(n);else if(n instanceof t||n instanceof Jr)r=zn(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Ca;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Ta]&&Fa.rebuild(r)}this.result=new Jr(e,r,i),this.helpers={...jn,postcss:jn,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!_a[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ra[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(Dt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];){e[Be]=!0;let n=[Qr(e)];for(;n.length>0;){let i=this.visitTick(n);if(Dt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return Dt(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,n=ka;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,l=>{s+=l}),this.result.css=s,this.result}let o=new Na(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let n=this.runOnRoot(e);if(Dt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];)e[Be]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Dt(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,l]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return l(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,l;for(;l=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!l[Be]){l[Be]=!0,e.push(Qr(l));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===st){i.nodes&&i.nodes.length&&(i[Be]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[Be]=!0;let n=Yr(e);for(let i of n)if(i===st)e.nodes&&e.each(r=>{r[Be]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};Ue.registerPostcss=t=>{jn=t};Zr.exports=Ue;Ue.default=Ue;Ma.registerLazyResult(Ue);wa.registerLazyResult(Ue)});var eo=Z((Qc,Xr)=>{"use strict";var La=Hn(),Da=en(),Ba=tn(),Ia=bt(),Jc=Un(),Bt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,n=Da;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=Ia;this.result=new Ba(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new La(r,void 0,this._opts,n);if(s.isMap()){let[l,a]=s.generate();l&&(this.result.css=l),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};Xr.exports=Bt;Bt.default=Bt});var no=Z((Yc,to)=>{"use strict";var Oa=zt(),Pa=$n(),Wa=eo(),Ha=rt(),Xe=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Wa(this,e,n):new Pa(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};to.exports=Xe;Xe.default=Xe;Ha.registerProcessor(Xe);Oa.registerProcessor(Xe)});var co=Z((Zc,uo)=>{"use strict";var io=Ut(),ro=Nt(),qa=qe(),Va=qt(),oo=Mt(),so=zt(),Ua=vr(),za=Tt(),ja=$n(),$a=Pn(),Ga=Ft(),Ka=en(),Gn=no(),Ja=tn(),ao=rt(),lo=Kt(),Qa=bt(),Ya=Vn();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Gn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let l=n(...s);return l.postcssPlugin=e,l.postcssVersion=new Gn().version,l}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,l,a){return re([r(a)]).process(s,l)},r};re.stringify=Qa;re.parse=Ka;re.fromJSON=Ua;re.list=$a;re.comment=t=>new ro(t);re.atRule=t=>new io(t);re.decl=t=>new oo(t);re.rule=t=>new lo(t);re.root=t=>new ao(t);re.document=t=>new so(t);re.CssSyntaxError=Va;re.Declaration=oo;re.Container=qa;re.Processor=Gn;re.Document=so;re.Comment=ro;re.Warning=Ya;re.AtRule=io;re.Result=Ja;re.Input=za;re.Rule=lo;re.Root=ao;re.Node=Ga;ja.registerPostcss(re);uo.exports=re;re.default=re});function _(t,e){if(typeof window>"u")return;let n=window,i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ae(t){try{window.parent.postMessage(t,"*")}catch(e){_("bridge.postMessage",e)}}function hi(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="tick"){t.onTick();return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&cs(o,s)}};return window.addEventListener("message",e),e}function cs(t,e){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${e}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){_("bridge.flashElements.querySelector",i)}}var gn=null;function xi(t){gn=t}function dt(t,e){if(gn)try{gn({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){_("runtime.analytics.site1",n)}}function gi(t){let e=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=(l,a)=>{for(let c of l){try{c.currentTime=a}catch(u){_("runtime.adapters.css.site1",u)}try{c.pause()}catch(u){_("runtime.adapters.css.site2",u)}}},r=l=>{for(let a of l)try{a.play()}catch(c){_("runtime.adapters.css.site3",c)}},o=l=>{for(let a of l)try{a.pause()}catch(c){_("runtime.adapters.css.site4",c)}},s=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let l=document.querySelectorAll("*");for(let a of l){if(!(a instanceof HTMLElement))continue;let c=window.getComputedStyle(a);!c.animationName||c.animationName==="none"||e.push({el:a,baseDelay:a.style.animationDelay||"",basePlayState:a.style.animationPlayState||""})}},seek:l=>{let a=Number(l.time)||0;for(let c of e){if(!c.el.isConnected)continue;let u=t?.resolveStartSeconds?t.resolveStartSeconds(c.el):Number.parseFloat(c.el.getAttribute("data-start")??"0")||0,m=Math.max(0,a-u)*1e3,f=n(c.el);if(f.length>0){i(f,m);continue}c.el.style.animationPlayState="paused",c.el.style.animationDelay=`-${(m/1e3).toFixed(3)}s`}},pause:()=>{for(let l of e){if(!l.el.isConnected)continue;let a=n(l.el);a.length>0&&o(a),s(l)}},play:()=>{for(let l of e)l.el.isConnected&&(s(l),r(n(l.el)))},revert:()=>{e=[]}}}function yi(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?n.totalTime(i,!1):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function Si(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){_("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){_("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){_("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){_("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Ei(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){_("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(bi(i))i.goToAndStop(e*1e3,!1);else if(Ai(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,e/r*100);i.seek(o)}}}catch(r){_("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(bi(e)||Ai(e))&&e.pause()}catch(n){_("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function bi(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function Ai(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}var Fi=-1;function Ht(t){if(t!==Fi){Fi=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){_("runtime.adapters.seek-dispatch.site1",e)}}}function wi(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t,Ht(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Ni(){let t=null,e=0;return{name:"typegpu",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfTypegpuTime=t,Ht(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Ci(){let t=globalThis.GPUQueue;if(!t?.prototype?.copyExternalImageToTexture)return;let e=t.prototype.copyExternalImageToTexture;t.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=n.source.nextElementSibling;if(o instanceof HTMLImageElement&&o.classList.contains("__render_frame__")&&o.complete&&o.naturalWidth>0)return e.call(this,{...n,source:o},i,r)}return e.call(this,n,i,r)}}function Mi(){let t=!1,e=0,n=new WeakMap,i=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},r=l=>{let a=Number(l.currentTime);return Number.isFinite(a)&&a>0?a:0},o=(l,a)=>a<=0?l:l>=a?Math.max(0,l-a):l,s=(l,a)=>{let c=n.get(l);if(c)return c;let u={compositionTimeMs:a,animationTimeMs:t?o(r(l),a):r(l)};return n.set(l,u),u};return{name:"waapi",discover:()=>{t=!0;for(let l of i())s(l,e)},seek:l=>{let a=Math.max(0,(Number(l.time)||0)*1e3);e=a;for(let c of i()){let u=t?s(c,a):s(c,0),m=u.animationTimeMs+Math.max(0,a-u.compositionTimeMs);try{c.currentTime=m}catch(f){_("runtime.adapters.waapi.site1",f)}try{c.pause()}catch(f){_("runtime.adapters.waapi.site2",f)}}},pause:()=>{if(document.getAnimations)for(let l of document.getAnimations())try{l.pause()}catch(a){_("runtime.adapters.waapi.site3",a)}}}}function ki(t,e){if(t.length===0)return 1;let n=0;for(;n<t.length-2&&e>=t[n+1].time;)n+=1;let i=t[n],r=t[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(e-i.time)/o));return i.volume+(r.volume-i.volume)*s}function ds(t,e,n,i){let r=Number.parseFloat(t.dataset.start??"0")||0,o=Number.parseFloat(t.dataset.end??""),s=Number.parseFloat(t.dataset.duration??""),l=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(t.dataset.volume??""),c=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;t.volume=c;let u=1/Math.min(60,Math.max(1,i)),m=Math.max(0,r),f=Math.min(n,l),x=[];for(let E=m;E<=f+1e-6;E+=u){let S=Math.min(f,E);e(S);let B=Number(t.volume);if(!Number.isFinite(B))continue;let D=Math.max(0,Math.min(1,B)),v=x.at(-1);if((!v||Math.abs(v.volume-D)>1e-4||S===f)&&x.push({time:Number(S.toFixed(6)),volume:Number(D.toFixed(6))}),S===f)break}return x.some(E=>Math.abs(E.volume-c)>1e-4)?x:null}function Ti(t,e,n,i){if(!e||!(t instanceof HTMLAudioElement)&&!(t instanceof HTMLVideoElement)||n<=0)return;let o=ds(t,s=>{try{typeof e.totalTime=="function"?e.totalTime(s,!0):typeof e.seek=="function"&&e.seek(s,!0)}catch{}},n,60);o&&i.set(t,o)}function vi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let l=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(l))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,c=s.defaultPlaybackRate,u=Number.isFinite(c)&&c>0?Math.max(.1,Math.min(5,c)):1,m=s.loop,f=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,x=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(x)||x<=0)&&f!=null&&(x=Math.max(0,(f-a)/u));let F=Number.isFinite(x)&&x>0?l+x:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),S={el:s,start:l,mediaStart:a,duration:Number.isFinite(x)&&x>0?x:Number.POSITIVE_INFINITY,end:F,volume:Number.isFinite(E)?E:null,playbackRate:u,loop:m,sourceDuration:f};i.push(S),s.tagName==="VIDEO"&&r.push(S),Number.isFinite(F)&&(o=Math.max(o,F))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var yn=new WeakMap,ft=new WeakMap,Sn=new WeakSet,et=new WeakSet;function fs(t){if(et.has(t))return;et.add(t);let e=()=>et.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}var bn=new WeakMap;function mt(t){return Number.isFinite(t)?Math.max(0,Math.min(1,t)):1}function _i(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<n.end&&r>=0){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let w=n.sourceDuration-n.mediaStart;w>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%w)}let s=mt(t.userVolume??1),l=mt(n.volume??1),a=bn.get(i),c=mt(i.volume),u;n.volumeKeyframes&&n.volumeKeyframes.length>0?u=mt(ki(n.volumeKeyframes,r)):a===void 0||Math.abs(c-a)>1e-4?u=c:u=l;let m=mt(u*s);i.volume=m,bn.set(i,m),t.onElementVolume?.(i,m),e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(w){_("runtime.media.site1",w)}let f=.04,x=2,F=i.currentTime||0,E=Math.abs(F-r),S=r-F,B=yn.get(i);yn.set(i,S);let D=B===void 0,v=!D&&Math.abs(S-B)>.5,X=E>3,q=E>.5&&(D||v||X),C=i.tagName==="VIDEO"&&!i.paused,g=B!==void 0&&Math.abs(S-B)<.004,A=!1;if(!C&&!q&&!D&&g&&E>f){let w=(ft.get(i)??0)+1;ft.set(i,w),w>=x&&(A=!0,ft.set(i,0))}else E<=f&&ft.set(i,0);let N=!C&&t.forceSync&&E>.02;if(q||A||N){try{i.currentTime=r}catch(w){_("runtime.media.site2",w)}if(Math.abs(i.currentTime-r)>.5&&!Sn.has(i)){Sn.add(i),i.load();try{i.currentTime=r}catch(w){_("runtime.media.site3",w)}}et.delete(i)}t.playing&&i.paused&&!et.has(i)?(fs(i),i.play().catch(w=>{et.delete(i),(w&&typeof w=="object"&&"name"in w?String(w.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}yn.delete(i),ft.delete(i),Sn.delete(i),bn.delete(i),i.paused||i.pause()}}var ms=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),ps=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function Ri(t){let e=!1,n=null,i=null,r=null,o=null;function s(g,A){try{window.dispatchEvent(new CustomEvent(g,{detail:A}))}catch(N){_("runtime.picker.site1",N)}}function l(g){r=g,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function a(g){o=g,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function c(g){let A=g.ownerDocument.defaultView;if(!A)return!1;let N=g;for(;N&&N!==document.body&&N!==document.documentElement;){let w=A.getComputedStyle(N);if(w.display==="none"||w.visibility==="hidden"||w.pointerEvents==="none")return!0;let M=Number.parseFloat(w.opacity);if(Number.isFinite(M)&&M<=.01)return!0;N=N.parentElement}return!1}function u(g){if(!g||g===document.body||g===document.documentElement)return!1;let A=g.tagName.toLowerCase();return!(A==="script"||A==="style"||A==="link"||A==="meta"||g.classList.contains("__hf-pick-highlight")||g.closest(ms)||c(g))}function m(g){return!!g?.closest(ps)}function f(g){let A=g;if(A.id)return`#${A.id}`;let N=g.getAttribute("data-composition-id");if(N)return`[data-composition-id="${N}"]`;let w=g.getAttribute("data-composition-src");if(w)return`[data-composition-src="${w}"]`;let M=g.getAttribute("data-track-index");if(M)return`[data-track-index="${M}"]`;let L=g.tagName.toLowerCase(),P=g.parentElement;if(!P)return L;let J=P.querySelectorAll(`:scope > ${L}`);if(J.length===1)return L;for(let R=0;R<J.length;R+=1)if(J[R]===g)return`${L}:nth-of-type(${R+1})`;return L}function x(g){let A=g.tagName.toLowerCase(),N=(g.textContent??"").trim().replace(/\\s+/g," "),w=(M,L)=>M.length>L?`${M.slice(0,L-1)}\\u2026`:M;return A==="h1"||A==="h2"||A==="h3"?"Heading":A==="p"||A==="span"||A==="div"?N.length>0?w(N,56):"Text":A==="img"?"Image":A==="video"?"Video":A==="audio"?"Audio":A==="svg"?"Shape":g.getAttribute("data-composition-src")?"Composition":A==="section"?"Section":`${A.charAt(0).toUpperCase()}${A.slice(1)}`}function F(g,A,N){let w=typeof N=="number"&&N>0?N:8,M=[];if(document.elementsFromPoint)M=document.elementsFromPoint(g,A);else if(document.elementFromPoint){let J=document.elementFromPoint(g,A);M=J?[J]:[]}if(m(M[0]??null))return[];let L={},P=[];for(let J=0;J<M.length;J+=1){let R=M[J];if(!u(R))continue;let le=`${R.tagName}::${R.id||""}::${J}`;if(!L[le]&&(L[le]=!0,P.push(R),P.length>=w))break}return P}function E(g){let A=g.getBoundingClientRect(),N={};for(let M=0;M<g.attributes.length;M+=1){let L=g.attributes[M];L.name.startsWith("data-")&&(N[L.name]=L.value)}return{id:g.id||null,tagName:g.tagName.toLowerCase(),selector:f(g),label:x(g),boundingBox:{x:A.left,y:A.top,width:A.width,height:A.height},textContent:g.textContent?g.textContent.trim().slice(0,200):null,src:g.getAttribute("src")||g.getAttribute("data-composition-src")||null,dataAttributes:N}}function S(g,A,N){return F(g,A,N).map(E)}function B(g){if(!e)return;let N=F(g.clientX,g.clientY,1)[0]??(g.target instanceof Element?g.target:null);if(!u(N)||n===N)return;n&&n.classList.remove("__hf-pick-highlight"),n=N,N.classList.add("__hf-pick-highlight");let w=E(N);l(w),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:w})}function D(g){if(!e)return;g.preventDefault(),g.stopPropagation(),g.stopImmediatePropagation();let A=S(g.clientX,g.clientY,8);A.length!==0&&(l(A[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:A,selectedIndex:0,point:{x:g.clientX,y:g.clientY}}))}function v(g){g.key==="Escape"&&(q(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function X(){e||(e=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",B,!0),document.addEventListener("click",D,!0),document.addEventListener("keydown",v,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function q(){e&&(e=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",B,!0),document.removeEventListener("click",D,!0),document.removeEventListener("keydown",v,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function C(){window.__HF_PICKER_API={enable:X,disable:q,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(g,A,N)=>Number.isFinite(g)&&Number.isFinite(A)?S(g,A,N):[],pickAtPoint:(g,A,N)=>{if(!Number.isFinite(g)||!Number.isFinite(A))return null;let w=S(g,A,8);if(!w.length)return null;let M=Math.max(0,Math.min(w.length-1,Number(N??0))),L=w[M]??null;return L?(a(L),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:L}),q(),L):null},pickManyAtPoint:(g,A,N)=>{if(!Number.isFinite(g)||!Number.isFinite(A))return[];let w=S(g,A,8);if(!w.length)return[];let M=[],L=Array.isArray(N)?N:[0];for(let P of L){let J=Math.max(0,Math.min(w.length-1,Math.floor(Number(P)))),R=w[J];if(!R)continue;M.some(Se=>Se.selector===R.selector&&Se.tagName===R.tagName)||M.push(R)}return M.length?(a(M[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:M}),q(),M):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:X,disablePickMode:q,installPickerApi:C}}function tt(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function pt(t,e,n){let i=t?.[e];return typeof i=="function"?Number(i.call(t))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&_("runtime.player.nonConformantNum",{prop:e,actual:typeof i}),n)}function ve(t,e){let n=t?.[e];if(typeof n=="function"){n.call(t);return}n!==void 0&&_("runtime.player.nonConformantVoid",{method:e,actual:typeof n})}function ht(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){_("runtime.player.site1",r)}}}function Li(t,e,n){let i=tt(e,n);return ve(t,"pause"),typeof t.totalTime=="function"?t.totalTime(i,!1):typeof t.seek=="function"&&t.seek(i,!1),i}function hs(t,e,n,i){let r=[];ht(t,e,o=>{ve(o,"play"),r.push(o)});try{return Li(e,n,i)}finally{for(let o of r)try{ve(o,"pause")}catch(s){_("runtime.player.site2",s)}}}function xs(t,e){ht(t,e,n=>{ve(n,"play")})}function Di(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??pt(e,"duration",0))||0);n>0&&Math.max(0,pt(e,"time",0))>=n&&(ve(e,"pause"),typeof e.seek=="function"&&e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),ve(e,"play"),ht(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play")}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;ve(e,"pause"),ht(t.getTimelineRegistry?.(),e,i=>{ve(i,"pause")});let n=Math.max(0,pt(e,"time",0));t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:(e,n)=>{let i=t.getTimeline();if(!i)return;let r=Math.max(0,Number(e)||0),o=t.getIsPlaying(),s=hs(t.getTimelineRegistry?.(),i,r,t.getCanonicalFps());t.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play"),ht(t.getTimelineRegistry?.(),i,l=>{typeof l.timeScale=="function"&&l.timeScale(t.getPlaybackRate()),ve(l,"play")}),t.onDeterministicPlay(),t.onShowNativeVideos(),t.onSyncMedia(s,!0)):(t.setIsPlaying(!1),t.onSyncMedia(s,!1)),t.onRenderFrameSeek(s),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(xs(t.getTimelineRegistry?.(),n),Li(n,e,i)):tt(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>pt(t.getTimeline(),"time",0),getDuration:()=>pt(t.getTimeline(),"duration",0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function Bi(){return{capturedTimeline:null,isPlaying:!1,rafId:null,currentTime:0,deterministicAdapters:[],parityModeEnabled:!0,canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,clampDurationLoggedRaw:null,beforeUnloadHandler:null,domReadyHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,nativeVisualWatchdogTick:0,transportClock:null,transportRafId:null}}var gs="data-hf-authored-duration",ys="data-hf-authored-end";function Qe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Ss(t){return Qe(t.getAttribute("data-duration"))}function bs(t){return Qe(t.getAttribute("data-end"))}function As(t){return Qe(t.getAttribute(gs))}function Es(t){return Qe(t.getAttribute(ys))}function Fs(t){let e=(t??"").trim();if(!e)return null;let n=Qe(e);if(n!=null)return{kind:"absolute",value:n};let i=e.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",l=Number.parseFloat(s),a=Number.isFinite(l)?Math.max(0,l):0,c=o==="-"?-a:a;return{kind:"reference",refId:r,offset:c}}function Ye(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=u=>{let m=document.getElementById(u);return m||(document.querySelector(`[data-composition-id="${CSS.escape(u)}"]`)??null)},l=u=>{let m=r.get(u);if(m!==void 0)return m;let f=null,x=Ss(u)??(n?As(u):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let F=bs(u)??(n?Es(u):null);if(F!=null){let E=c(u,0),S=F-E;Number.isFinite(S)&&S>0&&(f=S)}}if((f==null||f<=0)&&u instanceof HTMLMediaElement){let F=Qe(u.getAttribute("data-playback-start"))??Qe(u.getAttribute("data-media-start"))??0;Number.isFinite(u.duration)&&u.duration>F&&(f=u.duration-F)}if(f==null||f<=0){let F=u.getAttribute("data-composition-id");if(F){let E=e[F]??null;if(E&&typeof E.duration=="function")try{let S=Number(E.duration());Number.isFinite(S)&&S>0&&(f=S)}catch(S){_("runtime.startResolver.site1",S)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(u,f),f):(r.set(u,null),null)},a=(u,m)=>{if(u.hasAttribute("data-composition-id")){let x=u.parentElement?.closest("[data-composition-id]");return x?c(x,m):0}let f=u.closest("[data-composition-id]");return f?c(f,m):0},c=(u,m)=>{let f=i.get(u);if(f!==void 0)return f??m;if(o.has(u))return m;o.add(u);try{let x=Fs(u.getAttribute("data-start"));if(!x){if(u.hasAttribute("data-composition-id")){let D=u.parentElement;if(D&&(D.hasAttribute("data-composition-src")||D.hasAttribute("data-composition-id"))){let v=c(D,m);return i.set(u,v),v}}return i.set(u,m),m}if(x.kind==="absolute"){let D=Math.max(0,x.value),v=Math.max(0,a(u,m)+D);return i.set(u,v),v}let F=s(x.refId);if(!F)return i.set(u,m),m;let E=c(F,0),S=l(F);if(S==null||S<=0){let D=Math.max(0,E+x.offset);return i.set(u,D),D}let B=Math.max(0,E+S+x.offset);return i.set(u,B),B}finally{o.delete(u)}};return{resolveStartForElement:(u,m=0)=>c(u,Math.max(0,m)),resolveDurationForElement:u=>l(u)}}var ws="data-hf-authored-duration",Ns="data-hf-authored-end";function Ee(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function An(t){return Ee(t.getAttribute("data-duration"))??Ee(t.getAttribute(ws))}function Ii(t){return Ee(t.getAttribute("data-end"))??Ee(t.getAttribute(Ns))}function En(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var Oi={composition:0,video:1,image:2,element:3,audio:4};function Cs(t){if(t.length===0)return;let e=new Map;for(let s of t){let l=e.get(s.track)??new Set;l.add(s.kind),e.set(s.track,l)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,l)=>s-l);for(let s of o){let l=e.get(s);if(l.size===1)r.set(`${s}:${[...l][0]}`,i++);else{let a=[...l].sort((c,u)=>(Oi[c]??99)-(Oi[u]??99));for(let c of a)r.set(`${s}:${c}`,i++)}}for(let s of t){let l=`${s.track}:${s.kind}`,a=r.get(l);a!=null&&(s.track=a)}}function gt(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Pi(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return gt(e);let n=t.getAttribute("data-composition-src");if(n)return gt(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?gt(i.getAttribute("src")):null}function Ms(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function ks(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Ts(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function xt(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function vs(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return xt(r);let o=t.id;if(o)return xt(o);let s=Ms(t);if(s)return xt(s);let l=ks(Pi(t));if(l)return xt(l);let a=Ts(t);return a||`${xt(e)} ${n+1}`}function Wi(t){let n=window.__timelines??{},i=Ye({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=H=>{if(!H)return null;let k=n[H]??null;if(!k||typeof k.duration!="function")return null;try{let O=Number(k.duration());return Number.isFinite(O)&&O>0?O:null}catch{return null}},o=H=>{let k=Ee(H.getAttribute("data-duration"));if(k!=null&&k>0)return k;let O=Ee(H.getAttribute("data-playback-start"))??Ee(H.getAttribute("data-media-start"))??0;return Number.isFinite(H.duration)&&H.duration>O?Math.max(0,H.duration-O):null},s=()=>{let H=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(H.length===0)return null;let k=0;for(let O of H){let ne=O.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(O,0):Math.max(0,Number(O.getAttribute("data-start")??0)||0);if(!Number.isFinite(ne))continue;let ee=o(O);ee==null||ee<=0||(k=Math.max(k,Math.max(0,ne)+ee))}return k>0?k:null},l=H=>{let k=H.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},a=(H,k)=>{let O=[],ne=null,ee=null,z=null,V=H.parentElement;for(;V;){let j=V.getAttribute("data-composition-id");j&&(O.push(j),!z&&V!==k&&(z=j),ne==null&&(ne=i.resolveStartForElement(V,0)),ee==null&&(ee=Ee(V.getAttribute("data-duration"))??r(j)??null)),V=V.parentElement}return{parentCompositionId:z,compositionAncestors:O.reverse(),inheritedStart:ne,inheritedDuration:ee}},c=document.querySelector("[data-composition-id]"),u=Array.from(document.querySelectorAll("[data-composition-id]")),m=c?.getAttribute("data-composition-id")??null,f=c?i.resolveStartForElement(c,0):0,x=s(),F=x!=null?Math.max(0,x-Math.max(0,f)):null,E=r(m),S=An(c??document.body),B=En(...u.filter(H=>H!==c).map(H=>{let k=i.resolveStartForElement(H,0),O=i.resolveDurationForElement(H)??r(H.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||O==null||O<=0?null:Math.max(0,k)+O})),D=B!=null?Math.max(0,B-Math.max(0,f)):null,v=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,X=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,q=typeof F=="number"&&Number.isFinite(F)&&F>0?F:null,C=typeof D=="number"&&Number.isFinite(D)&&D>0?D:null,g=En(q,C),A=v!=null&&g!=null&&v>g+1,w=X??(A?g:En(v,q,C))??null,L=(w!=null?f+w:null)??(typeof x=="number"&&Number.isFinite(x)&&x>0?x:null),P=(H,k)=>!Number.isFinite(k)||k<=0?0:L==null||!Number.isFinite(L)?k:!Number.isFinite(H)||H>=L?0:Math.max(0,Math.min(k,L-H)),J=[],R=[],le=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),Se=0;for(let H=0;H<le.length;H+=1){let k=le[H];if(k===c||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let O=a(k,c),ne=i.resolveStartForElement(k,O.inheritedStart??0),ee=k.getAttribute("data-composition-id"),z=An(k);if((z==null||z<=0)&&ee&&ee!==m&&(z=r(ee)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let we=Ee(k.getAttribute("data-playback-start"))??Ee(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-we))}if(z==null||z<=0){let we=O.inheritedDuration;if(we!=null&&we>0){let Le=(O.inheritedStart??0)+we;z=Math.max(0,Le-ne)}}if(z==null||z<=0||(z=P(ne,z),z<=0))continue;let V=ne+z;Se=Math.max(Se,V);let j=k.tagName.toLowerCase(),Ce=ee&&ee!==m?"composition":j==="video"?"video":j==="audio"?"audio":j==="img"?"image":"element";J.push({id:k.id||ee||null,label:vs(k,Ce,J.length),start:ne,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(H),10)||0,kind:Ce,tagName:j,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:O.compositionAncestors,parentCompositionId:O.parentCompositionId,nodePath:null,compositionSrc:gt(k.getAttribute("data-composition-src")),assetUrl:Pi(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Ee(k.getAttribute("data-timeline-priority"))})}let $=new Set(J.map(H=>H.id)),U=c?.getAttribute("data-composition-id")??null,W=U?n[U]??null:null;if(W&&c){let H=W;if(typeof H.getChildren=="function")try{let k=H.getChildren(!0,!0,!1)??[],O=new Map;for(let z of c.children){let V=z;if(!V.id)continue;let j=V.tagName.toLowerCase();j==="script"||j==="style"||j==="link"||O.set(V,{id:V.id,start:1/0,end:-1/0})}let ne=z=>{let V=z;for(;V;){if(O.has(V))return V;if(V===c)return null;V=V.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let V=z.startTime(),j=z.parent;for(;j&&j!==W&&typeof j.startTime=="function";)V+=j.startTime(),j=j.parent;let Ce=V+z.duration();if(!(!Number.isFinite(V)||!Number.isFinite(Ce)))for(let we of z.targets()){if(!(we instanceof Element))continue;let $e=ne(we);if(!$e)continue;let Le=O.get($e);Le&&(Le.start=Math.min(Le.start,V),Le.end=Math.max(Le.end,Ce))}}let ee=J.length>0?Math.max(...J.map(z=>z.track))+1:0;for(let[z,V]of O){if(V.start===1/0||V.end===-1/0)continue;let j=z;if($.has(j.id))continue;let Ce=Math.max(0,V.end-V.start);if(Ce<=0)continue;let we=P(V.start,Ce);we<=0||(Se=Math.max(Se,V.start+we),J.push({id:j.id,label:j.getAttribute("data-timeline-label")??j.getAttribute("data-label")??j.getAttribute("aria-label")??j.id,start:V.start,duration:we,track:Number.parseInt(j.getAttribute("data-track-index")??j.getAttribute("data-track")??"",10)||ee,kind:"element",tagName:j.tagName.toLowerCase(),compositionId:j.getAttribute("data-composition-id"),compositionAncestors:U?[U]:[],parentCompositionId:U,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:j.getAttribute("data-timeline-role"),timelineLabel:j.getAttribute("data-timeline-label"),timelineGroup:j.getAttribute("data-timeline-group"),timelinePriority:Ee(j.getAttribute("data-timeline-priority"))}),$.add(j.id))}}catch(k){_("runtime.timeline.site1",k)}}if(c&&w!=null&&w>0){let H=J.length>0?Math.max(...J.map(k=>k.track))+1:0;for(let k of c.children){let O=k;if(!O.id||$.has(O.id))continue;let ne=O.getAttribute("data-timeline-role");if(ne!=="overlay"&&ne!=="persistent-overlay")continue;let ee=O.tagName.toLowerCase();if(ee==="script"||ee==="style"||ee==="link"||ee==="meta"||window.getComputedStyle(O).display==="none")continue;let V=P(0,w);V<=0||(Se=Math.max(Se,V),J.push({id:O.id,label:O.getAttribute("data-timeline-label")??O.getAttribute("data-label")??O.getAttribute("aria-label")??O.id,start:0,duration:V,track:Number.parseInt(O.getAttribute("data-track-index")??O.getAttribute("data-track")??"",10)||H,kind:"element",tagName:ee,compositionId:O.getAttribute("data-composition-id"),compositionAncestors:U?[U]:[],parentCompositionId:U,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ne,timelineLabel:O.getAttribute("data-timeline-label"),timelineGroup:O.getAttribute("data-timeline-group"),timelinePriority:Ee(O.getAttribute("data-timeline-priority"))}),$.add(O.id))}}Cs(J);for(let H of u){if(H===c)continue;let k=H.getAttribute("data-composition-id");if(!k||!l(k))continue;let O=i.resolveStartForElement(H,0),ne=An(H);if((ne==null||ne<=0)&&Ii(H)!=null){let j=Ii(H);ne=Math.max(0,j-O)}let ee=r(k),z=ne&&ne>0?ne:ee;if(z==null||z<=0)continue;let V=P(O,z);V<=0||R.push({id:k,label:H.getAttribute("data-label")??k,start:O,duration:V,thumbnailUrl:gt(H.getAttribute("data-thumbnail-url")),avatarName:null})}let Y=Math.max(1,Se||1,w??0);return{source:"hf-preview",type:"timeline",durationInFrames:A&&X==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(Y*Math.max(1,t.canonicalFps))),clips:J,scenes:R,compositionWidth:Ee(c?.getAttribute("data-width"))??1920,compositionHeight:Ee(c?.getAttribute("data-height"))??1080}}var ae=us(co(),1),fo=ae.default,Xc=ae.default.stringify,ed=ae.default.fromJSON,td=ae.default.plugin,nd=ae.default.parse,id=ae.default.list,rd=ae.default.document,od=ae.default.comment,sd=ae.default.atRule,ad=ae.default.rule,ld=ae.default.decl,ud=ae.default.root,cd=ae.default.CssSyntaxError,dd=ae.default.Declaration,fd=ae.default.Container,md=ae.default.Processor,pd=ae.default.Document,hd=ae.default.Comment,xd=ae.default.Warning,gd=ae.default.AtRule,yd=ae.default.Result,Sd=ae.default.Input,bd=ae.default.Rule,Ad=ae.default.Root,Ed=ae.default.Node;var Kn="data-hf-authored-id";function Jn(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Qn(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function Za(t){return t&&t.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function mo(t){let e=t.trim();return e?Array.from(new Set([e,Za(e)])).filter(Boolean):[]}function Xa(t){return!!t&&/[\\w-]/.test(t)}function el(t,e,n){let i=mo(e).sort((l,a)=>a.length-l.length);if(i.length===0)return t;let r="",o=0,s=null;for(let l=0;l<t.length;l+=1){let a=t[l],c=l>0?t[l-1]:"";if(s){r+=a,a===s&&c!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let u=i.find(m=>t.startsWith(m,l+1));if(u){let m=t[l+1+u.length];if(!Xa(m)){r+=n,l+=u.length;continue}}}r+=a}return r}function tl(t,e){let n=e?.trim();return n?el(t,n,`[${Kn}="${Qn(n)}"]`):t}function nl(t,e,n,i,r){let o=tl(t,i),s=il(o,e,n),l=s.trim();if(!l||/^(html|body|:root|\\*)$/i.test(l))return t;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Jn(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(l))return s.replace(a,e);let c=s.match(/^\\s*/)?.[0]??"",u=s.match(/\\s*$/)?.[0]??"";if(r){let m=i?`[${Kn}="${Qn(i)}"]`:null;if(m&&l.startsWith(m)){let f=l.slice(m.length);return`${c}${e}${m}${f}${u}`}}return`${c}${e} ${l}${u}`}function il(t,e,n){let i=Jn(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var rl=new Set(["keyframes","-webkit-keyframes","font-face"]);function ol(t){return t?.type==="atrule"}function sl(t){let e=t.parent;for(;e;){if(ol(e)&&rl.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function Yn(t,e,n,i,r){let o=e.trim();if(!t||!o)return t;let s=n||`[data-composition-id="${Qn(o)}"]`,l=fo.parse(t);return l.walkRules(a=>{sl(a)||(a.selectors=a.selectors.map(c=>nl(c,s,o,i,r?.compoundAuthoredRoot)))}),l.toResult({map:!1}).css}function po(t,e,n="[HyperFrames] composition script error:",i,r=e,o){let s=JSON.stringify(e),l=JSON.stringify(r),a=JSON.stringify(n),c=Jn(e),u=JSON.stringify(o?.trim()||null),m=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${c}"|\'${c}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),F=JSON.stringify(mo(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${l};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${u};\n var __hfAuthoredRootAttr = ${JSON.stringify(Kn)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${m} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${F};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function ho(){if(typeof document>"u")return{};let t=Zn(document.documentElement),e=al();return{...t,...e}}function Zn(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function al(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var ll=8e3,ul=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/;function cl(t,e){return`${t}__hf${e}`}var dl=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),ll)});function Xn(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}var fl=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function ml(t){let e=document.importNode(t,!0),n=e.getAttribute("id")?.trim();for(let o of fl)e.removeAttribute(o);n&&(e.removeAttribute("id"),e.setAttribute("data-hf-authored-id",n)),e.setAttribute("data-hf-inner-root","true");let i=e.getAttribute("data-width"),r=e.getAttribute("data-height");return e.style.width=i?`${i}px`:"100%",e.style.height=r?`${r}px`:"100%",e}function xo(t,e){let n=t.trim();if(!n)return t;try{return ul.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function pl(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function nn(t){let e=(t.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(t.getAttribute("data-hf-original-composition-id")||e||"").trim()||null,runtimeCompositionId:e}}function hl(t){let e=new Map;for(let n of t){let i=nn(n).authoredCompositionId||"";i&&e.set(i,(e.get(i)||0)+1)}return e}function go(t){let e=nn(t).authoredCompositionId;return e?!!document.querySelector(`template#${CSS.escape(e)}-template`):!1}function xl(t){return!!t.querySelector(\'[data-hf-inner-root="true"]\')}function gl(t){return t.hasAttribute("data-composition-src")?!0:go(t)?t.children.length===0||t.hasAttribute("data-hf-original-composition-id")?!0:xl(t):!1}function ti(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(e=>e.hasAttribute("data-composition-src")?!0:go(e))}function yo(){let t=window.__hfVariablesByComp;if(!t)return;let e=new Set(ti().map(n=>nn(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(t))e.has(n)||delete t[n]}function So(t,e=hl(t)){let n=new Map,i=new Map;for(let r of t){let{authoredCompositionId:o,runtimeCompositionId:s}=nn(r),l=gl(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(e.get(o)||0)>1,c=s||o;if(l){let u=a?(n.get(o)||0)+1:0;a&&n.set(o,u),c=a?cl(o,u):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",c),s&&s!==c&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:c})}return i}async function ei(t){let e=null;t.authoredCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===t.authoredCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.authoredCompositionId||null,r=t.runtimeCompositionId||i||null,o=e?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(t.headLinks)for(let f of t.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(t.headStyles)for(let f of t.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Yn(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let l=Array.from(n.querySelectorAll("style"));for(let f of l){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Yn(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let a=[];if(t.headScripts)for(let f of t.headScripts){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=xo(F,t.compositionUrl);a.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&a.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}}let c=Array.from(n.querySelectorAll("script")),u=[...a];for(let f of c){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=xo(F,t.compositionUrl);u.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&u.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let m=Array.from(n.querySelectorAll("style"));for(let f of m)f.parentNode?.removeChild(f);if(e){let f=e.getAttribute("data-width"),x=e.getAttribute("data-height"),F=t.parseDimensionPx(f),E=t.parseDimensionPx(x);f&&t.host.setAttribute("data-width",f),x&&t.host.setAttribute("data-height",x),F&&t.host instanceof HTMLElement&&(t.host.style.width=F),E&&t.host instanceof HTMLElement&&(t.host.style.height=E),e.hasAttribute("data-timeline-locked")&&t.host.setAttribute("data-timeline-locked",""),t.host.appendChild(ml(e))}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(r){let f={...t.declaredVariableDefaults??{},...pl(t.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of u){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=po(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),t.injectedScripts.push(x),f.kind==="external"){let F=await dl(x);F.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.authoredCompositionId,runtimeCompositionId:t.runtimeCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:F.status,elapsedMs:F.elapsedMs}})}}}async function bo(t){let e=ti();if(yo(),e.length===0)return;let n=So(e),i=e.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let l=document.querySelector(`template#${CSS.escape(s)}-template`);Xn(r),await ei({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:l.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function Ao(t){let e=ti();if(yo(),e.length===0)return;let n=So(e),i=e.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),l=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||l||null,c=null;try{c=new URL(o,document.baseURI)}catch{c=null}Xn(r);try{let u=l!=null?document.querySelector(`template#${CSS.escape(l)}-template`):null;if(u){await ei({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let m=await fetch(o);if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text(),F=new DOMParser().parseFromString(f,"text/html"),E=(l?F.querySelector(`template#${CSS.escape(l)}-template`):null)??F.querySelector("template"),S=E?E.content:F.body,B=E?void 0:Array.from(F.head.querySelectorAll("style")),D=E?void 0:Array.from(F.head.querySelectorAll("script")),v=E?void 0:Array.from(F.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await ei({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:S,hasTemplate:!!E,fallbackBodyInnerHtml:F.body.innerHTML,compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:B,headScripts:D,headLinks:v,declaredVariableDefaults:Zn(F.documentElement),onDiagnostic:t.onDiagnostic})}catch(u){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:u instanceof Error?u.message:"unknown_error"}}),Xn(r)}}))}function yl(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function Sl(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&t.push(r)}return t}function bl(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function ni(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=Sl();for(let i of e){let r=null;if(i.wordId&&(r=yl(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=t.getTweensOf(r).filter(u=>u.vars.color!==void 0).sort((u,m)=>u.startTime()-m.startTime()),c=a.length>0?String(a[0].vars.color):"";for(let u of a)String(u.vars.color)===c?i.dimColor&&(u.vars.color=i.dimColor):i.activeColor&&(u.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let l=bl(r);t.set(l,o)}}}).catch(()=>{})}var rn=class{constructor(e){ye(this,"_baseTime",0);ye(this,"_playStartMs",null);ye(this,"_rate",1);ye(this,"_duration",1/0);ye(this,"_nowMs");ye(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function Eo(t){return!Number.isFinite(t)||t<=0?1:t}var on=class{constructor(){ye(this,"_ctx",null);ye(this,"_bufferCache",new Map);ye(this,"_failedSrcs",new Set);ye(this,"_activeSources",[]);ye(this,"_masterGain",null);ye(this,"_rateAnchorCtx",0);ye(this,"_rateAnchorComp",0);ye(this,"_rate",1);ye(this,"_paused",!0);ye(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;try{let i=await fetch(n);if(!i.ok)return this._failedSrcs.add(n),_("webAudioTransport.fetch",new Error(`${i.status} ${n}`)),null;let r=await i.arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return this._failedSrcs.add(n),_("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,l,a=1){if(!this._ctx||!this._masterGain||l!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),l!==this._playGeneration)return null;let c=Eo(a),u=this._ctx.createBufferSource();u.buffer=n,u.playbackRate.value=c;let m=this._ctx.createGain();m.gain.value=s,u.connect(m),m.connect(this._masterGain);let f=o-i,x=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=x,this._rateAnchorComp=o,f>=0)u.start(0,f+r);else{let S=-f/c;u.start(x+S,r)}let F=e.muted;e.muted=!0;let E={el:e,sourceNode:u,gainNode:m,compositionStart:i,mediaStart:r,scheduledAt:x,priorMuted:F};return this._activeSources.push(E),this._paused=!1,E}catch(c){return _("webAudioTransport.schedule",c),null}}setRate(e){let n=Eo(e);if(n!==this._rate){this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){_("webAudioTransport.setRate",r)}}}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setElementVolume(e,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===e)try{r.gainNode.gain.value=i}catch(o){_("webAudioTransport.setElementVolume",o)}}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var Fo="data-hf-authored-duration",wo="data-hf-authored-end";function No(){let t=Bi(),e=null,n=null,i=[],r=new Set,o=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){_("runtime.init.site1",d)}document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let s=d=>{i.push(d)},l=(d,p,h)=>{let b=h??`${d}:${JSON.stringify(p)}`;r.has(b)||(r.add(b),Ae({source:"hf-preview",type:"diagnostic",code:d,details:p}))},a=d=>{let p={scale:1,focusX:960,focusY:540},h=[],b=[],y={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>p,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>b,getRenderState:()=>({...y,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},c=1/60,u=.75,m=2,f=.05,x=100,F=240,E=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},S=d=>{let p=d.toLowerCase();return p.includes("cannot read properties of null")||p.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:p.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:p.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},B=d=>{if(d==null||d.trim()==="")return null;let p=Number.parseFloat(d);return!Number.isFinite(p)||p<=0?null:`${p}px`},D=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let p=Array.from(document.querySelectorAll("[data-composition-id]"));return p.length===0?null:p.find(h=>!h.parentElement?.closest("[data-composition-id]"))??p[0]??null},v=()=>{let d=D();if(!d)return;let p=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));p&&(d.style.width=p),h&&(d.style.height=h),p&&d.style.setProperty("--comp-width",p),h&&d.style.setProperty("--comp-height",h)},X=()=>{let d=D(),p=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of p){if(d&&h===d)continue;let b=h.getAttribute("data-duration"),y=h.getAttribute("data-end");b!=null&&!h.hasAttribute(Fo)&&h.setAttribute(Fo,b),y!=null&&!h.hasAttribute(wo)&&h.setAttribute(wo,y),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},q=()=>{let d=D();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let p=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));p&&(d.style.width=p),h&&(d.style.height=h);let b=Array.from(d.children);for(let y of b){let T=y.tagName.toLowerCase();if(T==="script"||T==="style"||T==="link"||T==="meta"||!y.hasAttribute("data-start"))continue;let te=(y.style.top==="0px"||y.style.top==="0")&&(y.style.left==="0px"||y.style.left==="0")&&y.style.width==="100%"&&y.style.height==="100%",G=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(y.style.transform);if(te&&G&&!y.hasAttribute("data-width")&&!y.hasAttribute("data-height")){let Je=y.style.top,fe=y.style.left,ct=y.style.width,oe=y.style.height;y.style.top="",y.style.left="",y.style.width="",y.style.height="";let Q=window.getComputedStyle(y);Q.top!=="auto"||Q.bottom!=="auto"||Q.left!=="auto"||Q.right!=="auto"||Q.width!=="0px"||Q.height!=="0px"||(y.style.top=Je,y.style.left=fe,y.style.width=ct,y.style.height=oe)}let ie=window.getComputedStyle(y),xe=ie.position;if(xe!=="absolute"&&xe!=="fixed"&&(y.style.position="absolute"),!!y.style.top||!!y.style.bottom||ie.top!=="auto"||ie.bottom!=="auto"||(y.style.top="0"),!!y.style.left||!!y.style.right||ie.left!=="auto"||ie.right!=="auto"||(y.style.left="0"),T!=="audio"){let Je=B(y.getAttribute("data-width")),fe=B(y.getAttribute("data-height")),ct=ie.width!=="0px"&&ie.width!=="auto",oe=ie.height!=="0px"&&ie.height!=="auto";Je?!y.style.width&&!ct&&(y.style.width=Je):!y.style.width&&ie.width==="0px"&&(y.style.width="100%"),fe?!y.style.height&&!oe&&(y.style.height=fe):!y.style.height&&ie.height==="0px"&&(y.style.height="100%")}}},C=(d,p=0,h)=>Ye({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,p),g=(d,p)=>Ye({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:p?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),A=(d,p=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0):C(d,p),N=!!document.querySelector("[data-composition-src]"),w=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let p of d){let h=p.getAttribute("data-composition-id");if(h&&p.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){w=!0;break}}}let M=!N&&!w,L=d=>{if(!d||typeof d.duration!="function")return null;try{let p=Number(d.duration());return Number.isFinite(p)?Math.max(0,p):null}catch{return null}},P=d=>typeof d=="number"&&Number.isFinite(d)&&d>c,J=d=>{let p=Number(d.getAttribute("data-duration"));if(Number.isFinite(p)&&p>0)return p;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),b=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>b?Math.max(0,d.duration-b):null},R=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let p=0;for(let h of d){let b=A(h,0);if(!Number.isFinite(b))continue;let y=J(h);y==null||y<=c||(p=Math.max(p,Math.max(0,b)+y))}return p>c?p:null},le=()=>{let d=D();if(!d)return null;let p=window.__timelines??{},h=Ye({timelineRegistry:p,includeAuthoredTimingAttrs:!0}),b=0,y=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let T of y){if(!(T instanceof Element)||T.parentElement?.closest("[data-composition-id]")!==d)continue;let G=h.resolveStartForElement(T,0),ie=h.resolveDurationForElement(T);!Number.isFinite(G)||ie==null||ie<=0||(b=Math.max(b,Math.max(0,G)+ie))}return b>c?b:null},Se=()=>{let d=R();return typeof d!="number"||!Number.isFinite(d)||d<=c?null:d},$=d=>P(d)?Math.max(c,d*u):c,U=(d,p=0)=>{let h=L(d),b=Se(),y=le(),T=Math.max(b??0,y??0),te=Number.isFinite(p)&&p>c?p:0,G=0;return P(h)?G=Math.max(h,T,te):P(T)?G=Math.max(T,te):G=te,G>0?Math.max(0,G):0},W=()=>{let d=window.__timelines??{},p=Ye({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),h=Se(),b=le(),y=Math.max(h??0,b??0)||null,T=$(y),te=oe=>{let Q=document.querySelector(`[data-composition-id="${CSS.escape(oe)}"]`);return Q?p.resolveStartForElement(Q,0):0},G=oe=>{let Q=window.gsap;if(!Q||typeof Q.timeline!="function")return null;let ue=Q.timeline({paused:!0});for(let he of oe)ue.add(he.timeline,te(he.compositionId));return ue},ie=(oe,Q)=>{if(!P(oe))return null;let ue=window.gsap;if(!ue||typeof ue.timeline!="function")return null;let he=ue.timeline({paused:!0});if(Q)try{he.add(Q,0)}catch(se){_("runtime.init.site2",se)}let be=he;if(typeof be.to=="function")try{be.to({},{duration:oe})}catch(se){_("runtime.init.site3",se)}return he},xe=(oe,Q)=>{let ue=oe;if(typeof ue.getChildren!="function")return[];try{let he=ue.getChildren(!0,!0,!0)??[];if(!Array.isArray(he))return[];let be=[];for(let se of Q)if(!he.some(Te=>Te===se.timeline))try{let Te=te(se.compositionId);oe.add(se.timeline,Te),be.push(se.compositionId)}catch(Te){_("runtime.init.site4",Te)}return be}catch{return[]}},Ie=D(),de=Ie?.getAttribute("data-composition-id")??null;if(!de)return{timeline:null};let ge=d[de]??null,fe=(()=>{if(!Ie)return[];let oe=new Set,Q=Array.from(Ie.querySelectorAll("[data-composition-id]")),ue=[];for(let he of Q){let be=he.getAttribute("data-composition-id");if(!be||be===de||oe.has(be))continue;oe.add(be);let se=d[be]??null;if(!se||typeof se.play!="function"||typeof se.pause!="function")continue;let Ne=L(se);ue.push({compositionId:be,timeline:se,durationSeconds:Ne??0})}return ue})(),ct=oe=>{for(let Q of oe){let ue=Q.timeline;if(typeof ue.paused=="function")try{ue.paused(!1)}catch(he){_("runtime.init.site5",he)}}};if(fe.length>0&&ct(fe),ge){let oe=fe.length>0?xe(ge,fe):[];if((fe.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+de+"\'])"))&&(Y=!0),oe.length>0)try{let se=ge.time();ge.seek(se,!1)}catch{}let Q=L(ge);if(!P(Q)&&fe.length>0){let se=fe.map(ts=>ts.compositionId),Ne=G(fe),Te=L(Ne);if(Ne&&P(Te))return{timeline:Ne,selectedTimelineIds:se,selectedDurationSeconds:Te,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:T,selectedDurationSeconds:Te,mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedTimelineIds:se,autoNestedChildren:oe}}};let pn=ie(y??0,ge),hn=L(pn);if(pn&&P(hn))return{timeline:pn,selectedTimelineIds:[de],selectedDurationSeconds:hn,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedDurationSeconds:hn,selectedTimelineIds:[de],autoNestedChildren:oe}}}}if(!P(Q)&&fe.length===0){let se=ie(y??0,ge),Ne=L(se);if(se&&P(Ne))return{timeline:se,selectedTimelineIds:[de],selectedDurationSeconds:Ne,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedDurationSeconds:Ne,selectedTimelineIds:[de]}}}}let ue=Ie?.getAttribute("data-duration"),he=ue?parseFloat(ue):null,be=Math.max(P(he)?he:0,b??0);if(be>0&&P(be)&&P(Q)&&be>=Q+.5){let se=ge;if(typeof se.to=="function")try{se.to({},{duration:0},be)}catch(Te){_("runtime.init.site6",Te)}let Ne=L(ge);if(P(Ne))return{timeline:ge,selectedTimelineIds:[de],selectedDurationSeconds:Ne,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:de,rootDurationSeconds:Q,rootDeclaredDur:he,authoredCompositionDurationFloorSeconds:b,newDur:Ne}}}}return{timeline:ge,selectedTimelineIds:[de],selectedDurationSeconds:Q,mediaDurationFloorSeconds:h,diagnostics:oe.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:de,selectedDurationSeconds:Q,autoNestedChildren:oe}}:void 0}}if(fe.length>0){let oe=fe.map(he=>he.compositionId),Q=G(fe),ue=L(Q);if(Q)return{timeline:Q,selectedTimelineIds:oe,selectedDurationSeconds:ue,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:de,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:T,selectedDurationSeconds:ue,mediaDurationFloorSeconds:h,selectedTimelineIds:oe}}}}return{timeline:null}},Y=!1,me=()=>{if(!M)return!1;let d=t.capturedTimeline,p=L(d),h=P(p);if(d&&h&&Y)return!1;let b=W();if(!b.timeline)return!1;if(d&&d===b.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=b.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let y=U(t.capturedTimeline,0);if(y>0){try{I.setDuration(y)}catch{}t.capturedTimeline.pause()}b.diagnostics&&Ae({source:"hf-preview",type:"diagnostic",code:b.diagnostics.code,details:b.diagnostics.details}),Ae({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:b.selectedTimelineIds??[],selectedDurationSeconds:b.selectedDurationSeconds??null,mediaDurationFloorSeconds:b.mediaDurationFloorSeconds??null}});for(let T of V)j.delete(T),Le(T);return!0};window.__hfForceTimelineRebind=()=>{Y=!1,me()};let Fe=()=>{let d=D();if(!(d instanceof HTMLElement))return;let p=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),b=Number(d.getAttribute("data-height")),y=window.getComputedStyle(d),T=Number.isFinite(h)&&h>0&&Number.isFinite(b)&&b>0,te=p.width<=0||p.height<=0||d.clientWidth<=0||d.clientHeight<=0;!T||!te||l("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:b,rectWidth:Math.round(p.width),rectHeight:Math.round(p.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:y.display,visibility:y.visibility,overflow:y.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},H=()=>{t.tornDown||(o!=null&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{o=null,Fe()}))},k=()=>{e=d=>{let p=E(d.error??d.message).slice(0,F);if(!p)return;let h=S(p);Ae({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:p,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},n=d=>{let p=E(d.reason).slice(0,F);if(!p)return;let h=S(p);Ae({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:p}})},window.addEventListener("error",e),window.addEventListener("unhandledrejection",n)},O=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let b=()=>{if(!(h instanceof Element))return;let y=h.tagName.toLowerCase(),T=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,te=y==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";l(te,{tagName:y,assetUrl:T,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${te}:${y}:${T??"unknown"}`)};h.addEventListener("error",b),s(()=>{h.removeEventListener("error",b)})}let p=document.fonts;p&&p.ready.then(()=>{if(t.tornDown)return;let h=Array.from(p).filter(b=>b.status==="error").map(b=>b.family).filter(b=>!!b).slice(0,10);h.length!==0&&l("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(p).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},ne=(d,p)=>{if(!d.timeline)return!1;let h=t.capturedTimeline;if(h&&h===d.timeline)return!1;let b=Math.max(0,t.currentTime||0),y=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(b,!1),y&&t.capturedTimeline.play()}catch(T){_("runtime.init.site7",T)}return Ae({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:p,previousTime:b,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},ee=null,z=!1,V=new Set,j=new WeakMap,Ce=()=>{t.tornDown||(ee!=null&&window.clearTimeout(ee),ee=window.setTimeout(()=>{if(t.tornDown)return;ee=null;let d=W();if(!d.timeline||!P(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){me()&&(Ge(),Me(!0));return}if(z)return;let h=L(t.capturedTimeline),b=d.selectedDurationSeconds??L(d.timeline);P(b)&&(!P(h)||b>=h+f)&&ne(d,"manual")&&(z=!0,Ae({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:b??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),Ge(),Me(!0))},x))},we=()=>{for(let d of V)d.removeEventListener("loadedmetadata",Ce),d.removeEventListener("durationchange",Ce);V.clear()},$e=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let p of d){if(V.has(p))continue;V.add(p);let h=Number.parseFloat(p.dataset.volume??"");Number.isFinite(h)&&(p.volume=Math.max(0,Math.min(1,h))),p.addEventListener("loadedmetadata",Ce),p.addEventListener("durationchange",Ce),p.preload!=="auto"&&(p.preload="auto"),p.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&p.load(),Le(p)}},Le=d=>{j.has(d)||Ti(d,t.capturedTimeline,U(t.capturedTimeline,0),j)},We=()=>{let d=y=>{let T=y.closest("[data-composition-id]"),te=T?C(T,0):null,G=T?g(T,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:T,inheritedStart:te,inheritedDuration:G}},p=vi({shouldIncludeElement:y=>y.hasAttribute("data-start")||!!d(y).compositionRoot,resolveStartSeconds:y=>{let T=d(y);return A(y,T.inheritedStart??0)},resolveDurationSeconds:y=>{let T=d(y),te=A(y,T.inheritedStart??0),G=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0,ie=T.inheritedStart!=null&&T.inheritedDuration!=null&&T.inheritedDuration>0?Math.max(0,T.inheritedStart+T.inheritedDuration-te):null,xe=Number.isFinite(y.duration)&&y.duration>G?Math.max(0,y.duration-G):null;return xe!=null&&ie!=null?Math.min(xe,ie):xe??ie}});for(let y of p.mediaClips){let T=j.get(y.el);T&&(y.volumeKeyframes=T)}let h=t.mediaForceSyncNextTick;h&&(t.mediaForceSyncNextTick=!1),_i({clips:p.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||pe.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:h,onElementVolume:(y,T)=>pe.setElementVolume(y,T),onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ae({source:"hf-preview",type:"media-autoplay-blocked"}))}});let b=Array.from(document.querySelectorAll("[data-start]"));for(let y of b){if(!(y instanceof HTMLElement))continue;let T=y.tagName.toLowerCase();if(T==="script"||T==="style"||T==="link"||T==="meta")continue;let te=T==="video"||T==="audio"?A(y,0):C(y,0),G=g(y),ie=y.getAttribute("data-composition-id");if(ie){let de=(window.__timelines??{})[ie],ge=null;if(de&&typeof de.duration=="function"){let fe=Number(de.duration());Number.isFinite(fe)&&fe>0&&(ge=fe)}let Je=y.hasAttribute("data-composition-src")||y.hasAttribute("data-composition-file");G!=null&&G>0&&ge!=null&&!Je?G=Math.min(G,ge):(G==null||G<=0)&&ge!=null&&(G=ge)}let xe=G!=null&&G>0?te+G:Number.POSITIVE_INFINITY,Ie=t.currentTime>=te&&(Number.isFinite(xe)?t.currentTime<xe:!0);y.style.visibility=Ie?"visible":"hidden"}},Me=d=>{let p=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),h=Date.now();(d||p!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||h-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=p,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=h,Ae({source:"hf-preview",type:"state",frame:p,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Ge=()=>{X(),v(),q();let d=D();if(d){let h=B(d.getAttribute("data-width")),b=B(d.getAttribute("data-height")),y=h?parseInt(h,10):0,T=b?parseInt(b,10):0;y>0&&T>0&&Ae({source:"hf-preview",type:"stage-size",width:y,height:T})}me();let p=Wi({canonicalFps:t.canonicalFps});window.__clipManifest=p,Ae(p),H()},De=(d,p=0)=>{for(let h of t.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(b){_("runtime.init.site8",b)}if(d==="discover")try{h.seek({time:p})}catch(b){_("runtime.init.site9",b)}}};if(M)ni();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:B,onDiagnostic:({code:p,details:h})=>{Ae({source:"hf-preview",type:"diagnostic",code:p,details:h})}};Ao(d).then(()=>bo(d)).finally(()=>{M=!0,me(),window.__renderReady=!0,$e(),De("discover",t.currentTime),O(),ni(),Ge(),Me(!0)})}let Pt=Ri({postMessage:d=>Ae(d)});Pt.installPickerApi();let dn=d=>{let p=Number(d);!Number.isFinite(p)||p<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,p)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let h=document.querySelectorAll("video, audio");for(let b of h)if(b instanceof HTMLMediaElement)try{b.playbackRate=t.playbackRate}catch(y){_("runtime.init.site10",y)}},ce=Di({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:dn,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,p)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==p&&(t.mediaForceSyncNextTick=!0),t.isPlaying=p,We()},onStatePost:Me,onDeterministicSeek:d=>{for(let p of t.deterministicAdapters)try{p.seek({time:Number(d)||0})}catch(h){_("runtime.init.site11",h)}},onDeterministicPause:()=>De("pause"),onDeterministicPlay:()=>De("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>U(t.capturedTimeline,0)});window.__player=a(ce),window.__playerReady=!0,xi(Ae),dt("composition_loaded",{duration:ce.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=hi({onPlay:()=>{ce.play(),dt("composition_played",{time:ce.getTime()})},onPause:()=>{ce.pause(),dt("composition_paused",{time:ce.getTime()})},onSeek:(d,p)=>{let h=Math.max(0,d)/t.canonicalFps;ce.seek(h),dt("composition_seeked",{time:h})},onSetMuted:d=>{t.bridgeMuted=d;let p=d||t.mediaOutputMuted;pe.setMuted(p);let h=document.querySelectorAll("video, audio");for(let b of h)b instanceof HTMLMediaElement&&(b.muted=p)},onSetVolume:d=>{t.bridgeVolume=d,pe.setVolume(d);let p=document.querySelectorAll("video, audio");for(let h of p){if(!(h instanceof HTMLMediaElement))continue;let b=parseFloat(h.dataset.volume??""),y=Number.isFinite(b)?b:1;h.volume=y*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let p=d||t.bridgeMuted;pe.setMuted(p);let h=document.querySelectorAll("video, audio");for(let b of h)b instanceof HTMLMediaElement&&(b.muted=p)},onSetPlaybackRate:d=>{dn(d),t.transportClock&&t.transportClock.setRate(t.playbackRate),pe.setRate(t.playbackRate)},onTick:()=>{if(t.tornDown||!I.isPlaying())return;let d=I.now();if(t.currentTime=d,Ke(d),I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),De("pause"),We(),Me(!0)}},onEnablePickMode:()=>Pt.enablePickMode(),onDisablePickMode:()=>Pt.disablePickMode()}),me(),t.capturedTimeline&&(ce._timeline=t.capturedTimeline),window.__renderReady=!0,M&&setTimeout(()=>{let d=t.capturedTimeline;me()&&t.capturedTimeline!==d&&(ce._timeline=t.capturedTimeline),De("discover",t.currentTime),window.__renderReady=!0,Ge(),Me(!0)},0),t.deterministicAdapters=[Mi(),gi({resolveStartSeconds:d=>C(d,0)}),Si(),Ei(),wi(),Ni(),yi({getTimeline:()=>t.capturedTimeline})],Ci(),k(),$e(),De("discover");let I=new rn;t.transportClock=I;let pe=new on,di=!1;pe.init().then(d=>{di=d});let Wt=0,fn=!1,Zo=(d,p,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(p,!1):d.seek(p,!1)}catch(b){_(h,b)}},Xo=d=>{let p=window.__timelines??{},h=D()?.getAttribute("data-composition-id")??null;for(let[b,y]of Object.entries(p)){if(!y||b===h)continue;let T=document.querySelector(`[data-composition-id="${CSS.escape(b)}"]`);if(!T)continue;let te=C(T,0);if(!Number.isFinite(te))continue;let G=g(T,{includeAuthoredTimingAttrs:!0}),ie=L(y),xe=G!=null&&G>0?G:ie,Ie=Math.max(0,xe!=null&&xe>0?Math.min(xe,d-te):d-te);Zo(y,Ie,"runtime.init.transport.childTimeline")}},es=d=>{let p=window.__timelines??{};for(let h of Object.values(p))if(!(!h||h===d))try{h.play()}catch(b){_("runtime.init.activateSiblings",b)}},Ke=(d,p)=>{let h=t.capturedTimeline;if(h){p?.activateChildren&&es(h);try{typeof h.totalTime=="function"?h.totalTime(d,!1):h.seek(d,!1)}catch(b){_("runtime.init.transport.seek",b)}}else Xo(d);for(let b of t.deterministicAdapters)try{b.seek({time:d})}catch(y){_("runtime.init.transport.adapter",y)}},fi=()=>{if(!(t.tornDown||fn)){fn=!0;try{if(t.transportRafId=window.requestAnimationFrame(fi),Wt+=1,Wt%60===0&&!(I.isPlaying()&&t.capturedTimeline!=null&&I.now()<m)){let h=t.capturedTimeline;if(me()){t.capturedTimeline&&!ce._timeline&&(ce._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==h&&t.capturedTimeline.pause();let b=U(t.capturedTimeline,0);b>0&&I.setDuration(b),Ge()}}if(Wt%20===0&&Ge(),Wt%30===0&&$e(),t.capturedTimeline){let p=U(t.capturedTimeline,0);p>0&&I.setDuration(p)}if(I.isPlaying()&&!t.mediaOutputMuted)if(pe.isActive()&&pe.context){let p=pe.getTime();p>=0&&I.attachAudioSource({currentTimeSeconds:p})}else{let p=document.querySelectorAll("audio[data-start]"),h=!1;for(let b of p){if(!(b instanceof HTMLMediaElement)||!b.isConnected)continue;let y=Number.parseFloat(b.dataset.start??""),T=Number.parseFloat(b.dataset.duration??""),te=Number.isFinite(T)&&T>0?y+T:1/0,G=Number.parseFloat(b.dataset.playbackStart??b.dataset.mediaStart??"0")||0;if(Number.isFinite(y)&&t.currentTime>=y&&t.currentTime<te){b.paused?!b.error&&b.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:t.currentTime}),h=!0):(I.attachAudioSource({el:b,compositionStart:y,mediaStart:G}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(t.currentTime=d,Ke(d),I.isPlaying()&&I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),De("pause"),We(),Me(!0);return}I.isPlaying()&&We(),Me(!1)}finally{fn=!1}}},mi=d=>{let p=document.querySelectorAll("video, audio");for(let h of p){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let b=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(b))continue;let y=Number.parseFloat(h.dataset.duration??""),T=Number.isFinite(y)&&y>0?b+y:1/0;if(d<b||d>=T)continue;let te=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,G=d-b+te;if(G>=0)try{h.currentTime=G}catch{}}};if(ce.play=()=>{let d=t.capturedTimeline;if(I.isPlaying())return;let p=U(d,0);if(p>0)I.setDuration(p),I.reachedEnd()&&(I.seek(0),t.currentTime=0,Ke(0));else{let h=D(),b=Number(h?.getAttribute("data-duration")??0);b>0&&I.setDuration(b)}if(d&&d.pause(),!!I.play()){if(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,mi(I.now()),di){let h=pe.startGeneration(),b=document.querySelectorAll("audio[data-start]");for(let y of b){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let T=Number.parseFloat(y.dataset.start??"");if(!Number.isFinite(T))continue;let te=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0,G=Number.parseFloat(y.dataset.volume??""),ie=Number.isFinite(G)?G:1;pe.decodeAudioElement(y).then(xe=>{!xe||!I.isPlaying()||pe.schedulePlayback(y,xe,T,te,I.now(),ie*t.bridgeVolume,h,t.playbackRate)})}}De("play"),We(),Me(!0)}},ce.pause=()=>{if(!I.isPlaying())return;pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1,t.currentTime=I.now(),t.mediaForceSyncNextTick=!0,mi(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),De("pause"),We(),Me(!0)},ce.seek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);pe.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let b=t.capturedTimeline;b&&b.pause(),Ke(t.currentTime),De("pause"),We(),Me(!0)},ce.renderSeek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,Ke(t.currentTime,{activateChildren:!0}),We(),Me(!0)},ce.getTime=()=>I.now(),ce.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},ce.isPlaying=()=>I.isPlaying(),ce.setPlaybackRate=d=>{dn(d),I.setRate(t.playbackRate),pe.setRate(t.playbackRate)},t.capturedTimeline){let d=U(t.capturedTimeline,0);d>0&&I.setDuration(d),t.capturedTimeline.pause()}let pi=window.__player;if(pi){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let p of d)Object.defineProperty(pi,p,{get:()=>ce[p],set:h=>{ce[p]=h},configurable:!0})}t.transportRafId=window.requestAnimationFrame(fi),Ge(),Me(!0);let mn=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,pe.destroy(),ee!=null&&(window.clearTimeout(ee),ee=null),o!=null&&(window.cancelAnimationFrame(o),o=null),we(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),e&&(window.removeEventListener("error",e),e=null),n&&(window.removeEventListener("unhandledrejection",n),n=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),Pt.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(p){_("runtime.init.site12",p)}t.deterministicAdapters=[];for(let d of i.splice(0))try{d()}catch(p){_("runtime.init.site13",p)}for(let d of t.injectedCompStyles)try{d.remove()}catch(p){_("runtime.init.site14",p)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(p){_("runtime.init.site15",p)}t.injectedCompScripts=[],t.capturedTimeline=null,window.__hfRuntimeTeardown===mn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=mn,t.beforeUnloadHandler=mn,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var Co=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],ii=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Al(t){if(t<=255)return Co[t];let e=0,n=ii.length-1;for(;e<=n;){let i=e+n>>1,r=ii[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function El(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let c=0;c<e;){let u=t.charCodeAt(c),m=u,f=1;if(u>=55296&&u<=56319&&c+1<e){let F=t.charCodeAt(c+1);F>=56320&&F<=57343&&(m=(u-55296<<10)+(F-56320)+65536,f=2)}let x=Al(m);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let F=0;F<f;F++)n[c+F]=x;c+=f}if(!i)return null;let r=0;for(let c=0;c<e;c++){let u=n[c];if(u==="L"){r=0;break}if(u==="R"||u==="AL"){r=1;break}}let o=new Int8Array(e);for(let c=0;c<e;c++)o[c]=r;let s=r&1?"R":"L",l=s,a=l;for(let c=0;c<e;c++)n[c]==="NSM"?n[c]=a:a=n[c];a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="AL"?"AN":"EN":(u==="R"||u==="L"||u==="AL")&&(a=u)}for(let c=0;c<e;c++)n[c]==="AL"&&(n[c]="R");for(let c=1;c<e-1;c++)n[c]==="ES"&&n[c-1]==="EN"&&n[c+1]==="EN"&&(n[c]="EN"),n[c]==="CS"&&(n[c-1]==="EN"||n[c-1]==="AN")&&n[c+1]===n[c-1]&&(n[c]=n[c-1]);for(let c=0;c<e;c++){if(n[c]!=="EN")continue;let u;for(u=c-1;u>=0&&n[u]==="ET";u--)n[u]="EN";for(u=c+1;u<e&&n[u]==="ET";u++)n[u]="EN"}for(let c=0;c<e;c++){let u=n[c];(u==="WS"||u==="ES"||u==="ET"||u==="CS")&&(n[c]="ON")}a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="L"?"L":"EN":(u==="R"||u==="L")&&(a=u)}for(let c=0;c<e;c++){if(n[c]!=="ON")continue;let u=c+1;for(;u<e&&n[u]==="ON";)u++;let m=c>0?n[c-1]:l,f=u<e?n[u]:l,x=m!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let E=c;E<u;E++)n[E]=x;c=u-1}for(let c=0;c<e;c++)n[c]==="ON"&&(n[c]=s);for(let c=0;c<e;c++){let u=n[c];(o[c]&1)===0?u==="R"?o[c]++:(u==="AN"||u==="EN")&&(o[c]+=2):(u==="L"||u==="AN"||u==="EN")&&o[c]++}return o}function Mo(t,e){let n=El(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Fl=/[ \\t\\n\\r\\f]+/g,wl=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Nl(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Cl(t){if(!wl.test(t))return t;let e=t.replace(Fl," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function Ml(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var ri=null,kl;function Tl(){return ri===null&&(ri=new Intl.Segmenter(kl,{granularity:"word"})),ri}var vl=/\\p{Script=Arabic}/u,sn=/\\p{M}/u,Bo=/\\p{Nd}/u;function ko(t){return vl.test(t)}function To(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function Re(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(To(r))return!0;e++;continue}}if(To(n))return!0}}return!1}function _l(t){let e=un(t);return e!==null&&(ln.has(e)||ze.has(e))}var Rl=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function Ll(t){return Re(t)}function Dl(t){let e=un(t);return e!==null&&Rl.has(e)}function an(t){return!_l(t)&&!Dl(t)}var ln=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),Ot=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),si=new Set(["\'","\\u2019"]),ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),Bl=new Set([":",".","\\u060C","\\u061B"]),Il=new Set(["\\u104F"]),Ol=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function Pl(t){if(ai(t))return!0;let e=!1;for(let n of t){if(ze.has(n)){e=!0;continue}if(!(e&&sn.test(n)))return!1}return e}function Wl(t){for(let e of t)if(!ln.has(e)&&!ze.has(e))return!1;return t.length>0}function Hl(t){if(ai(t))return!0;for(let e of t)if(!Ot.has(e)&&!si.has(e)&&!sn.test(e))return!1;return t.length>0}function ai(t){let e=!1;for(let n of t)if(!(n==="\\\\"||sn.test(n))){if(Ot.has(n)||ze.has(n)||si.has(n)){e=!0;continue}return!1}return e}function Io(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function un(t){if(t.length===0)return null;let e=Io(t,t.length);return t.slice(e)}function ql(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(sn.test(i)){n--;continue}if(Ot.has(i)||si.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function Vl(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function vo(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let l=r.repeat(s);return t[i]=l,l}function _o(t,e){return t&&e!==null&&Bl.has(e)}function Ul(t){let e=un(t);return e!==null&&Il.has(e)}function zl(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function cn(t){let e=t.length;for(;e>0;){let n=Io(t,e),i=t.slice(n,e);if(Ol.has(i))return!0;if(!ze.has(i))return!1;e=n}return!1}function jl(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var $l=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function ke(t){return t.length===1?t[0]:t.join("")}function Gl(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),ke(n)}function Kl(t,e,n,i){if(!$l.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],l=n,a=!1,c=0;for(let u of t){let m=jl(u,i),f=m==="text"&&e;if(o!==null&&m===o&&f===a){s.push(u),c+=u.length;continue}o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),o=m,s=[u],l=n+c,a=f,c+=u.length}return o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),r}function oi(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var Jl=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Ql(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:Jl.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function Yl(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function Zl(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!Ql(t,s))continue;let l=[e[s]],a=s+1;for(;a<t.len&&!oi(i[a]);){l.push(e[a]),n[s]=!0;let c=e[a].includes("?");if(i[a]="text",e[a]="",a++,c)break}e[s]=ke(l)}let o=0;for(let s=0;s<e.length;s++){let l=e[s];l.length!==0&&(o!==s&&(e[o]=l,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function Xl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!Yl(s))continue;let l=o+1;if(l>=t.len||oi(t.kinds[l]))continue;let a=[],c=t.starts[l],u=l;for(;u<t.len&&!oi(t.kinds[u]);)a.push(t.texts[u]),u++;a.length>0&&(e.push(ke(a)),n.push(!0),i.push("text"),r.push(c),o=u-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var eu=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Ro=/^[A-Za-z0-9_]+[,:;]*$/,Lo=/[,:;]+$/;function Oo(t){for(let e of t)if(Bo.test(e))return!0;return!1}function It(t){if(t.length===0)return!1;for(let e of t)if(!(Bo.test(e)||eu.has(e)))return!1;return!0}function tu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o];if(l==="text"&&It(s)&&Oo(s)){let a=[s],c=o+1;for(;c<t.len&&t.kinds[c]==="text"&&It(t.texts[c]);)a.push(t.texts[c]),c++;e.push(ke(a)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=c-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function nu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o],a=t.isWordLike[o];if(l==="text"&&a&&Ro.test(s)){let c=[s],u=Lo.test(s),m=o+1;for(;u&&m<t.len&&t.kinds[m]==="text"&&t.isWordLike[m]&&Ro.test(t.texts[m]);){let f=t.texts[m];c.push(f),u=Lo.test(f),m++}e.push(ke(c)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=m-1;continue}e.push(s),n.push(a),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function iu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let l=s.split("-"),a=l.length>1;for(let c=0;c<l.length;c++){let u=l[c];if(!a)break;(u.length===0||!Oo(u)||!It(u))&&(a=!1)}if(a){let c=0;for(let u=0;u<l.length;u++){let m=l[u],f=u<l.length-1?`${m}-`:m;e.push(f),n.push(!0),i.push("text"),r.push(t.starts[o]+c),c+=f.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function ru(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],l=t.isWordLike[o],a=t.kinds[o],c=t.starts[o];if(a==="glue"){let u=[s[0]],m=c;for(o++;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let f=ke(u);if(o<t.len&&t.kinds[o]==="text")s[0]=f,s.push(t.texts[o]),l=t.isWordLike[o],a="text",c=m,o++;else{e.push(f),n.push(!1),i.push("glue"),r.push(m);continue}}else o++;if(a==="text")for(;o<t.len&&t.kinds[o]==="glue";){let u=[];for(;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let m=ke(u);if(o<t.len&&t.kinds[o]==="text"){s.push(m,t.texts[o]),l=l||t.isWordLike[o],o++;continue}s.push(m)}e.push(ke(s)),n.push(l),i.push(a),r.push(c)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function ou(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Re(e[o])||!Re(e[o+1]))continue;let s=ql(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Do(t,e,n){let i=Tl(),r=0,o=[],s=[],l=[],a=[],c=[],u=[],m=[],f=[],x=[],F=[],E=[],S=[];for(let C of i.segment(t))for(let g of Kl(C.segment,C.isWordLike??!1,C.index,n)){let le=function(){u[R]!==null&&(s[R]=[vo(o,u,m,R)],u[R]=null),s[R].push(g.text),l[R]=l[R]||g.isWordLike,f[R]=f[R]||w,x[R]=x[R]||M,F[R]=P,E[R]=J,S[R]=_o(x[R],L)},A=g.kind==="text",N=Vl(g.text,g.isWordLike,g.kind),w=Re(g.text),M=ko(g.text),L=un(g.text),P=cn(g.text),J=Ul(g.text),R=r-1;e.carryCJKAfterClosingQuote&&A&&r>0&&a[R]==="text"&&w&&f[R]&&F[R]||A&&r>0&&a[R]==="text"&&Wl(g.text)&&f[R]||A&&r>0&&a[R]==="text"&&E[R]?le():A&&r>0&&a[R]==="text"&&g.isWordLike&&M&&S[R]?(le(),l[R]=!0):N!==null&&r>0&&a[R]==="text"&&u[R]===N?m[R]=(m[R]??1)+1:A&&!g.isWordLike&&r>0&&a[R]==="text"&&(Pl(g.text)||g.text==="-"&&l[R])?le():(o[r]=g.text,s[r]=[g.text],l[r]=g.isWordLike,a[r]=g.kind,c[r]=g.start,u[r]=N,m[r]=N===null?0:1,f[r]=w,x[r]=M,F[r]=P,E[r]=J,S[r]=_o(M,L),r++)}for(let C=0;C<r;C++){if(u[C]!==null){o[C]=vo(o,u,m,C);continue}o[C]=ke(s[C])}for(let C=1;C<r;C++)a[C]==="text"&&!l[C]&&ai(o[C])&&a[C-1]==="text"&&(o[C-1]+=o[C],l[C-1]=l[C-1]||l[C],o[C]="");let B=Array.from({length:r},()=>null),D=-1;for(let C=r-1;C>=0;C--){let g=o[C];if(g.length!==0){if(a[C]==="text"&&!l[C]&&Hl(g)&&D>=0&&a[D]==="text"){let A=B[D]??[];A.push(g),B[D]=A,c[D]=c[C],o[C]="";continue}D=C}}for(let C=0;C<r;C++){let g=B[C];g!=null&&(o[C]=Gl(g,o[C]))}let v=0;for(let C=0;C<r;C++){let g=o[C];g.length!==0&&(v!==C&&(o[v]=g,l[v]=l[C],a[v]=a[C],c[v]=c[C]),v++)}o.length=v,l.length=v,a.length=v,c.length=v;let X=ru({len:v,texts:o,isWordLike:l,kinds:a,starts:c}),q=ou(nu(iu(tu(Xl(Zl(X))))));for(let C=0;C<q.len-1;C++){let g=zl(q.texts[C]);g!==null&&(q.kinds[C]!=="space"&&q.kinds[C]!=="preserved-space"||q.kinds[C+1]!=="text"||!ko(q.texts[C+1])||(q.texts[C]=g.space,q.isWordLike[C]=!1,q.kinds[C]=q.kinds[C]==="preserved-space"?"preserved-space":"space",q.texts[C+1]=g.marks+q.texts[C+1],q.starts[C+1]=q.starts[C]+g.space.length))}return q}function su(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function au(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,l=0,a=!1,c=!1;function u(){o!==null&&(e.push(ke(o)),n.push(s),i.push("text"),r.push(l),o=null)}for(let m=0;m<t.len;m++){let f=t.texts[m],x=t.kinds[m],F=t.isWordLike[m],E=t.starts[m];if(x==="text"){let S=Ll(f),B=an(f);if(o!==null&&a&&c){o.push(f),s=s||F,a=a||S,c=B;continue}u(),o=[f],s=F,l=E,a=S,c=B;continue}u(),e.push(f),n.push(F),i.push(x),r.push(E)}return u(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Po(t,e,n="normal",i="normal"){let r=Nl(n),o=r.mode==="pre-wrap"?Ml(t):Cl(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?au(Do(o,e,r)):Do(o,e,r);return{normalized:o,chunks:su(s,r),...s}}var at=null,Wo=new Map,lt=null,lu=96,uu=/\\p{Emoji_Presentation}/u,cu=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,li=null,Ho=new Map;function ui(){if(at!==null)return at;if(typeof OffscreenCanvas<"u")return at=new OffscreenCanvas(1,1).getContext("2d"),at;if(typeof document<"u")return at=document.createElement("canvas").getContext("2d"),at;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function du(t){let e=Wo.get(t);return e||(e=new Map,Wo.set(t,e)),e}function Pe(t,e){let n=e.get(t);return n===void 0&&(n={width:ui().measureText(t).width,containsCJK:Re(t)},e.set(t,n)),n}function ut(){if(lt!==null)return lt;if(typeof navigator>"u")return lt={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},lt;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return lt={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},lt}function fu(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function qo(){return li===null&&(li=new Intl.Segmenter(void 0,{granularity:"grapheme"})),li}function mu(t){return uu.test(t)||t.includes("\\uFE0F")}function Vo(t){return cu.test(t)}function pu(t,e){let n=Ho.get(t);if(n!==void 0)return n;let i=ui();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Ho.set(t,n),n}function hu(t){let e=0,n=qo();for(let i of n.segment(t))mu(i.segment)&&e++;return e}function xu(t,e){return e.emojiCount===void 0&&(e.emojiCount=hu(t)),e.emojiCount}function je(t,e,n){return n===0?e.width:e.width-xu(t,e)*n}function Uo(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=qo(),s=[];for(let u of o.segment(t))s.push(u.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let u=[];for(let m of s){let f=Pe(m,n);u.push(je(m,f,i))}return e.breakableFitAdvances=u,e.breakableFitAdvances}if(r==="pair-context"||s.length>lu){let u=[],m=null,f=0;for(let x of s){let F=Pe(x,n),E=je(x,F,i);if(m===null)u.push(E);else{let S=m+x,B=Pe(S,n);u.push(je(S,B,i)-f)}m=x,f=E}return e.breakableFitAdvances=u,e.breakableFitAdvances}let l=[],a="",c=0;for(let u of s){a+=u;let m=Pe(a,n),f=je(a,m,i);l.push(f-c),c=f}return e.breakableFitAdvances=l,e.breakableFitAdvances}function zo(t,e){let n=ui();n.font=t;let i=du(t),r=fu(t),o=e?pu(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function gu(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function yu(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function Su(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let l=s+t[o];if((o+1<t.length?l+r:l)>n+i)break;s=l,o++}return{fitCount:o,fittedWidth:s}}function jo(t,e){return t.simpleLineWalkFastPath?$o(t,e):Go(t,e)}function $o(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let l=ut().lineFitEpsilon,a=e+l,c=0,u=0,m=!1,f=0,x=0,F=0,E=0,S=-1,B=0;function D(){S=-1,B=0}function v(N=F,w=E,M=u){c++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:N,endGraphemeIndex:w,width:M}),u=0,m=!1,D()}function X(N,w){m=!0,f=N,x=0,F=N+1,E=0,u=w}function q(N,w,M){m=!0,f=N,x=w,F=N,E=w+1,u=M}function C(N,w){if(!m){X(N,w);return}u+=w,F=N+1,E=0}function g(N,w){let M=o[N];for(let L=w;L<M.length;L++){let P=M[L];m?u+P>a?(v(),q(N,L,P)):(u+=P,F=N,E=L+1):q(N,L,P)}m&&F===N&&E===M.length&&(F=N+1,E=0)}let A=0;for(;A<i.length&&!(!m&&(A=gu(t,A),A>=i.length));){let N=i[A],w=r[A],M=w==="space"||w==="preserved-space"||w==="tab"||w==="zero-width-break"||w==="soft-hyphen";if(!m){N>e&&o[A]!==null?g(A,0):X(A,N),M&&(S=A+1,B=u-N),A++;continue}if(u+N>a){if(M){C(A,N),v(A+1,0,u-N),A++;continue}if(S>=0){if(F>S||F===S&&E>0){v();continue}v(S,0,B);continue}if(N>e&&o[A]!==null){v(),g(A,0),A++;continue}v();continue}C(A,N),M&&(S=A+1,B=u-N),A++}return m&&v(),c}function Go(t,e,n){if(t.simpleLineWalkFastPath)return $o(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:l,discretionaryHyphenWidth:a,tabStopAdvance:c,chunks:u}=t;if(i.length===0||u.length===0)return 0;let m=ut(),f=m.lineFitEpsilon,x=e+f,F=0,E=0,S=!1,B=0,D=0,v=0,X=0,q=-1,C=0,g=0,A=null;function N(){q=-1,C=0,g=0,A=null}function w($=v,U=X,W=E){F++,n?.({startSegmentIndex:B,startGraphemeIndex:D,endSegmentIndex:$,endGraphemeIndex:U,width:W}),E=0,S=!1,N()}function M($,U){S=!0,B=$,D=0,v=$+1,X=0,E=U}function L($,U,W){S=!0,B=$,D=U,v=$,X=U+1,E=W}function P($,U){if(!S){M($,U);return}E+=U,v=$+1,X=0}function J($,U,W,Y){if(!U)return;let me=$==="tab"?0:r[W],Fe=$==="tab"?Y:o[W];q=W+1,C=E-Y+me,g=E-Y+Fe,A=$}function R($,U){let W=l[$];for(let Y=U;Y<W.length;Y++){let me=W[Y];S?E+me>x?(w(),L($,Y,me)):(E+=me,v=$,X=Y+1):L($,Y,me)}S&&v===$&&X===W.length&&(v=$+1,X=0)}function le($){if(A!=="soft-hyphen")return!1;let U=l[$];if(U==null)return!1;let{fitCount:W,fittedWidth:Y}=Su(U,E,e,f,a);return W===0?!1:(E=Y,v=$,X=W,N(),W===U.length?(v=$+1,X=0,!0):(w($,W,Y+a),R($,W),!0))}function Se($){F++,n?.({startSegmentIndex:$.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:$.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),N()}for(let $=0;$<u.length;$++){let U=u[$];if(U.startSegmentIndex===U.endSegmentIndex){Se(U);continue}S=!1,E=0,B=U.startSegmentIndex,D=0,v=U.startSegmentIndex,X=0,N();let W=U.startSegmentIndex;for(;W<U.endSegmentIndex;){let Y=s[W],me=Y==="space"||Y==="preserved-space"||Y==="tab"||Y==="zero-width-break"||Y==="soft-hyphen",Fe=Y==="tab"?yu(E,c):i[W];if(Y==="soft-hyphen"){S&&(v=W+1,X=0,q=W+1,C=E+a,g=E+a,A=Y),W++;continue}if(!S){Fe>e&&l[W]!==null?R(W,0):M(W,Fe),J(Y,me,W,Fe),W++;continue}if(E+Fe>x){let k=E+(Y==="tab"?0:r[W]),O=E+(Y==="tab"?Fe:o[W]);if(A==="soft-hyphen"&&m.preferEarlySoftHyphenBreak&&C<=x){w(q,0,g);continue}if(A==="soft-hyphen"&&le(W)){W++;continue}if(me&&k<=x){P(W,Fe),w(W+1,0,O),W++;continue}if(q>=0&&C<=x){if(v>q||v===q&&X>0){w();continue}let ne=q;w(ne,0,g),W=ne;continue}if(Fe>e&&l[W]!==null){w(),R(W,0),W++;continue}w();continue}P(W,Fe),J(Y,me,W,Fe),W++}if(S){let Y=q===U.consumedEndSegmentIndex?g:E;w(U.consumedEndSegmentIndex,0,Y)}}return F}var ci=null;function bu(){return ci===null&&(ci=new Intl.Segmenter(void 0,{granularity:"grapheme"})),ci}function Au(t){return t?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function Eu(t,e){let n=[],i=[],r=0,o=!1,s=!1,l=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,l=!1)}function c(m,f,x){i=[m],r=f,o=x,s=cn(m),l=Ot.has(m)}function u(m,f){i.push(m),o=o||f;let x=cn(m);m.length===1&&ze.has(m)?s=s||x:s=x,l=!1}for(let m of bu().segment(t)){let f=m.segment,x=Re(f);if(i.length===0){c(f,m.index,x);continue}if(l||ln.has(f)||ze.has(f)||e.carryCJKAfterClosingQuote&&x&&s){u(f,x);continue}if(!o&&!x){u(f,x);continue}a(),c(f,m.index,x)}return a(),n}function Fu(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=Re(t[0].text),o=an(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let l=1;l<t.length;l++){let a=t[l],c=Re(a.text),u=an(a.text);if(r&&o){n.push(a.text),r=r||c,o=u;continue}s(),n=[a.text],i=a.start,r=c,o=u}return s(),e}function wu(t,e,n,i){let r=ut(),{cache:o,emojiCorrection:s}=zo(e,Vo(t.normalized)),l=je("-",Pe("-",o),s),c=je(" ",Pe(" ",o),s)*8;if(t.len===0)return Au(n);let u=[],m=[],f=[],x=[],F=t.chunks.length<=1,E=n?[]:null,S=[],B=n?[]:null,D=Array.from({length:t.len});function v(g,A,N,w,M,L,P){M!=="text"&&M!=="space"&&M!=="zero-width-break"&&(F=!1),u.push(A),m.push(N),f.push(w),x.push(M),E?.push(L),S.push(P),B!==null&&B.push(g)}function X(g,A,N,w,M){let L=Pe(g,o),P=je(g,L,s),J=A==="space"||A==="preserved-space"||A==="zero-width-break"?0:P,R=A==="space"||A==="zero-width-break"?0:P;if(M&&w&&g.length>1){let le="sum-graphemes";It(g)?le="pair-context":r.preferPrefixWidthsForBreakableRuns&&(le="segment-prefixes");let Se=Uo(g,L,o,s,le);v(g,P,J,R,A,N,Se);return}v(g,P,J,R,A,N,null)}for(let g=0;g<t.len;g++){D[g]=u.length;let A=t.texts[g],N=t.isWordLike[g],w=t.kinds[g],M=t.starts[g];if(w==="soft-hyphen"){v(A,0,l,l,w,M,null);continue}if(w==="hard-break"){v(A,0,0,0,w,M,null);continue}if(w==="tab"){v(A,0,0,0,w,M,null);continue}let L=Pe(A,o);if(w==="text"&&L.containsCJK){let P=Eu(A,r),J=i==="keep-all"?Fu(P):P;for(let R=0;R<J.length;R++){let le=J[R];X(le.text,"text",M+le.start,N,i==="keep-all"||!Re(le.text))}continue}X(A,w,M,N,!0)}let q=Nu(t.chunks,D,u.length),C=E===null?null:Mo(t.normalized,E);return B!==null?{widths:u,lineEndFitAdvances:m,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q,segments:B}:{widths:u,lineEndFitAdvances:m,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q}}function Nu(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,l=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:l,consumedEndSegmentIndex:a})}return i}function Cu(t,e,n,i){let r=i?.wordBreak??"normal",o=Po(t,ut(),i?.whiteSpace,r);return wu(o,e,n,r)}function Ko(t,e,n){return Cu(t,e,!1,n)}function Jo(t,e,n){let i=jo(t,e);return{lineCount:i,height:i*n}}var Mu={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Qo(t,e){let n={...Mu,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Ko(t,o),{lineCount:l}=Jo(s,n.maxWidth,r*i);if(l<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Qo,getVariables:ho};function Yo(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,No())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Yo,{once:!0}):Yo();})();\n';
39236
+ RUNTIME_IIFE = '"use strict";(()=>{var ns=Object.create;var xn=Object.defineProperty;var is=Object.getOwnPropertyDescriptor;var rs=Object.getOwnPropertyNames;var os=Object.getPrototypeOf,ss=Object.prototype.hasOwnProperty;var as=(t,e,n)=>e in t?xn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Z=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var ls=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of rs(e))!ss.call(t,r)&&r!==n&&xn(t,r,{get:()=>e[r],enumerable:!(i=is(e,r))||i.enumerable});return t};var us=(t,e,n)=>(n=t!=null?ns(os(t)):{},ls(e||!t||!t.__esModule?xn(n,"default",{value:t,enumerable:!0}):n,t));var ye=(t,e,n)=>as(t,typeof e!="symbol"?e+"":e,n);var qi=Z((fc,Fn)=>{var K=String,Hi=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};Fn.exports=Hi();Fn.exports.createColors=Hi});var wn=Z(()=>{});var qt=Z((hc,zi)=>{"use strict";var Vi=qi(),Ui=wn(),yt=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,t)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let n=this.source;e==null&&(e=Vi.isColorSupported);let i=u=>u,r=u=>u,o=u=>u;if(e){let{bold:u,gray:m,red:f}=Vi.createColors(!0);r=x=>u(f(x)),i=x=>m(x),Ui&&(o=x=>Ui(x))}let s=n.split(/\\r?\\n/),l=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),c=String(a).length;return s.slice(l,a).map((u,m)=>{let f=l+1+m,x=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(u.length>160){let E=20,S=Math.max(0,this.column-E),B=Math.max(this.column+E,this.endColumn+E),D=u.slice(S,B),v=i(x.replace(/\\d/g," "))+u.slice(0,Math.min(this.column-1,E-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(D)+`\n `+v+r("^")}let F=i(x.replace(/\\d/g," "))+u.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(u)+`\n `+F+r("^")}return" "+i(x)+o(u)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};zi.exports=yt;yt.default=yt});var Nn=Z((xc,$i)=>{"use strict";var _s=/(<)(\\/?style\\b)/gi,Rs=/(<)(!--)/g;function He(t){return typeof t!="string"||!t.includes("<")?t:t.replace(_s,"\\\\3c $2").replace(Rs,"\\\\3c $2")}var ji={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Ls(t){return t[0].toUpperCase()+t.slice(1)}var St=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(He(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let l=0;l<o;l++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(He(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(He(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let l=n[s],a=this.raw(l,"before");a&&this.builder(o?a:He(a)),this.stringify(l,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(He("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(He(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return ji[i];let s=e.root(),l=s.rawCache||(s.rawCache={});if(typeof l[i]<"u")return l[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let a="raw"+Ls(i);this[a]?r=this[a](s,e):s.walk(c=>{if(r=c.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=ji[i]),l[i]=r,r}rawBeforeClose(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(e,n){let i;return e.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(e,n){let i;return e.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:He(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(He(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};$i.exports=St;St.default=St});var bt=Z((gc,Gi)=>{"use strict";var Ds=Nn();function Cn(t,e){new Ds(e).stringify(t)}Gi.exports=Cn;Cn.default=Cn});var Vt=Z((yc,Mn)=>{"use strict";Mn.exports.isClean=Symbol("isClean");Mn.exports.my=Symbol("my")});var Ft=Z((Sc,Ki)=>{"use strict";var Bs=qt(),Is=Nn(),Os=bt(),{isClean:At,my:Ps}=Vt();function Tn(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>Tn(s,n)):(o==="object"&&r!==null&&(r=Tn(r)),n[i]=r)}return n}function Oe(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var Et=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[At]=!1,this[Ps]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=Tn(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Bs(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[At]=!0}markDirty(){if(this[At]){this[At]=!1;let e=this;for(;e=e.parent;)e[At]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Oe(i,this.source.start),Oe(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=Oe(r,this.source.start),s=o+e;for(let l=o;l<s;l++)r[l]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:Oe(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:Oe(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Oe(n,this.source.start),Oe(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Oe(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Oe(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(e,n){return new Is().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let l=this[s];if(Array.isArray(l))i[s]=l.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof l=="object"&&l.toJSON)i[s]=l.toJSON(null,n);else if(s==="source"){if(l==null)continue;let a=n.get(l.input);a==null&&(a=o,n.set(l.input,o),o++),i[s]={end:l.end,inputId:a,start:l.start}}else i[s]=l}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Os){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};Ki.exports=Et;Et.default=Et});var Nt=Z((bc,Ji)=>{"use strict";var Ws=Ft(),wt=class extends Ws{constructor(e){super(e),this.type="comment"}};Ji.exports=wt;wt.default=wt});var Mt=Z((Ac,Qi)=>{"use strict";var Hs=Ft(),Ct=class extends Hs{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};Qi.exports=Ct;Ct.default=Ct});var qe=Z((Ec,or)=>{"use strict";var Yi=Nt(),Zi=Mt(),qs=Ft(),{isClean:Xi,my:er}=Vt(),kn,tr,nr,vn;function ir(t){return t.map(e=>(e.nodes&&(e.nodes=ir(e.nodes)),delete e.source,e))}function rr(t){if(t[Xi]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)rr(e)}var _e=class t extends qs{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let l of o)this.proxyOf.nodes.splice(i,0,l);let s;for(let l in this.indexes)s=this.indexes[l],i<=s&&(this.indexes[l]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=ir(tr(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Zi(e)]}else if(e.selector||e.selectors)e=[new vn(e)];else if(e.name)e=[new kn(e)];else if(e.text)e=[new Yi(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[er]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[Xi]&&rr(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...e){e=e.reverse();for(let n of e){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};_e.registerParse=t=>{tr=t};_e.registerRule=t=>{vn=t};_e.registerAtRule=t=>{kn=t};_e.registerRoot=t=>{nr=t};or.exports=_e;_e.default=_e;_e.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,kn.prototype):t.type==="rule"?Object.setPrototypeOf(t,vn.prototype):t.type==="decl"?Object.setPrototypeOf(t,Zi.prototype):t.type==="comment"?Object.setPrototypeOf(t,Yi.prototype):t.type==="root"&&Object.setPrototypeOf(t,nr.prototype),t[er]=!0,t.nodes&&t.nodes.forEach(e=>{_e.rebuild(e)})}});var Ut=Z((Fc,ar)=>{"use strict";var sr=qe(),nt=class extends sr{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};ar.exports=nt;nt.default=nt;sr.registerAtRule(nt)});var zt=Z((wc,cr)=>{"use strict";var Vs=qe(),lr,ur,Ze=class extends Vs{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new lr(new ur,this,e).stringify()}};Ze.registerLazyResult=t=>{lr=t};Ze.registerProcessor=t=>{ur=t};cr.exports=Ze;Ze.default=Ze});var fr=Z((Nc,dr)=>{var Us="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",zs=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},js=(t=21)=>{let e="",n=t|0;for(;n--;)e+=Us[Math.random()*64|0];return e};dr.exports={nanoid:js,customAlphabet:zs}});var jt=Z(()=>{});var $t=Z(()=>{});var _n=Z(()=>{});var mr=Z(()=>{});var Ln=Z((Dc,xr)=>{"use strict";var{existsSync:$s,readFileSync:Gs}=mr(),{dirname:Rn,join:Ks}=jt(),{SourceMapConsumer:pr,SourceMapGenerator:hr}=$t();function Js(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var Tt=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=Rn(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new pr(this.json||this.text)),this.consumerCache}decodeInline(e){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let l=e.match(n)||e.match(i);if(l)return Js(e.substr(l[0].length));let a=e.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=Rn(e),$s(e)))return this.mapFile=e,Gs(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof pr)return hr.fromSourceMap(n).toString();if(n instanceof hr)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;e&&(i=Ks(Rn(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};xr.exports=Tt;Tt.default=Tt});var kt=Z((Bc,Ar)=>{"use strict";var{nanoid:Qs}=fr(),{isAbsolute:In,resolve:On}=jt(),{SourceMapConsumer:Ys,SourceMapGenerator:Zs}=$t(),{fileURLToPath:gr,pathToFileURL:Gt}=_n(),yr=qt(),Xs=Ln(),Dn=wn(),Bn=Symbol("lineToIndexCache"),ea=!!(Ys&&Zs),Sr=!!(On&&In);function br(t){if(t[Bn])return t[Bn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Bn]=n,n}var it=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Sr||/^\\w+:\\/\\//.test(n.from)||In(n.from)?this.file=n.from:this.file=On(n.from)),Sr&&ea){let i=new Xs(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+Qs(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,l,a,c;if(n&&typeof n=="object"){let m=n,f=i;if(typeof m.offset=="number"){a=m.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=m.line,i=m.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){l=f.offset;let x=this.fromOffset(l);s=x.line,o=x.col}else s=f.line,o=f.column,l=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let m=this.fromOffset(a);n=m.line,i=m.col}let u=this.origin(n,i,s,o);return u?c=new yr(e,u.endLine===void 0?u.line:{column:u.column,line:u.line},u.endLine===void 0?u.column:{column:u.endColumn,line:u.endLine},u.source,u.file,r.plugin):c=new yr(e,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),c.input={column:i,endColumn:o,endLine:s,endOffset:l,line:n,offset:a,source:this.css},this.file&&(Gt&&(c.input.url=Gt(this.file).toString()),c.input.file=this.file),c}fromLineAndColumn(e,n){return br(this)[e-1]+n-1}fromOffset(e){let n=br(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:On(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let l;typeof i=="number"&&(l=o.originalPositionFor({column:r,line:i}));let a;In(s.source)?a=Gt(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||Gt(this.map.mapFile));let c={column:s.column,endColumn:l&&l.column,endLine:l&&l.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(gr)c.file=gr(a);else throw new Error("file: protocol is not available in this PostCSS build");let u=o.sourceContentFor(s.source);return u&&(c.source=u),c}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};Ar.exports=it;it.default=it;Dn&&Dn.registerInput&&Dn.registerInput(it)});var rt=Z((Ic,Nr)=>{"use strict";var Er=qe(),Fr,wr,Ve=class extends Er{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new Fr(new wr,this,e).stringify()}};Ve.registerLazyResult=t=>{Fr=t};Ve.registerProcessor=t=>{wr=t};Nr.exports=Ve;Ve.default=Ve;Er.registerRoot(Ve)});var Pn=Z((Oc,Cr)=>{"use strict";var vt={comma(t){return vt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return vt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,l=!1,a="",c=!1;for(let u of t)c?c=!1:u==="\\\\"?c=!0:l?u===a&&(l=!1):u===\'"\'||u==="\'"?(l=!0,a=u):u==="("?s+=1:u===")"?s>0&&(s-=1):s===0&&e.includes(u)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=u;return(n||r!=="")&&i.push(r.trim()),i}};Cr.exports=vt;vt.default=vt});var Kt=Z((Pc,Tr)=>{"use strict";var Mr=qe(),ta=Pn(),ot=class extends Mr{get selectors(){return ta.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};Tr.exports=ot;ot.default=ot;Mr.registerRule(ot)});var vr=Z((Wc,kr)=>{"use strict";var na=Ut(),ia=Nt(),ra=Mt(),oa=kt(),sa=Ln(),aa=rt(),la=Kt();function _t(t,e){if(Array.isArray(t))return t.map(r=>_t(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:oa.prototype};o.map&&(o.map={...o.map,__proto__:sa.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>_t(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new aa(i);if(i.type==="decl")return new ra(i);if(i.type==="rule")return new la(i);if(i.type==="comment")return new ia(i);if(i.type==="atrule")return new na(i);throw new Error("Unknown node type: "+t.type)}kr.exports=_t;_t.default=_t});var Hn=Z((Hc,Ir)=>{"use strict";var{dirname:Jt,relative:Rr,resolve:Lr,sep:Dr}=jt(),{SourceMapConsumer:Br,SourceMapGenerator:Qt}=$t(),{pathToFileURL:_r}=_n(),ua=kt(),ca=!!(Br&&Qt),da=!!(Jt&&Lr&&Rr&&Dr),Wn=class{constructor(e,n,i,r){this.stringify=e,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||Jt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new Br(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),da&&ca&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Qt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Qt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Qt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(l,a,c)=>{if(this.css+=l,a&&c!=="end"&&(r.generated.line=e,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=l.match(/\\n/g),s?(e+=s.length,o=l.lastIndexOf(`\n`),n=l.length-o):n+=l.length,a&&c!=="start"){let u=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==u.last||u.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?Jt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Jt(Lr(i,this.mapOpts.annotation)));let r=Rr(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new ua(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(_r){let i=_r(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;Dr==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};Ir.exports=Wn});var Wr=Z((qc,Pr)=>{"use strict";var Yt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,Zt=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,fa=/.[\\r\\n"\'(/\\\\]/,Or=/[\\da-f]/i;Pr.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,l,a,c,u,m,f,x,F,E=i.length,S=0,B=[],D=[],v=-1;function X(){return S}function q(N){throw e.error("Unclosed "+N,S)}function C(){return D.length===0&&S>=E}function g(N){if(D.length)return D.pop();if(S>=E)return;let w=N?N.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{a=S;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);u=["space",i.slice(S,a)],S=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let T=String.fromCharCode(o);u=[T,T,S];break}case 40:{if(F=B.length?B.pop()[1]:"",x=i.charCodeAt(S+1),F==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=S;do{if(m=!1,a=i.indexOf(")",a+1),a===-1)if(r||w){a=S;break}else q("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,m=!m}while(m);u=["brackets",i.slice(S,a+1),S,a],S=a}else S<=v?u=["(","(",S]:(a=i.indexOf(")",S+1),s=i.slice(S,a+1),a===-1||fa.test(s)?(v=a===-1?E:a,u=["(","(",S]):(u=["brackets",s,S,a],S=a));break}case 39:case 34:{c=o===39?"\'":\'"\',a=S;do{if(m=!1,a=i.indexOf(c,a+1),a===-1)if(r||w){a=S+1;break}else q("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,m=!m}while(m);u=["string",i.slice(S,a+1),S,a],S=a;break}case 64:{Yt.lastIndex=S+1,Yt.test(i),Yt.lastIndex===0?a=i.length-1:a=Yt.lastIndex-2,u=["at-word",i.slice(S,a+1),S,a],S=a;break}case 92:{for(a=S,l=!0;i.charCodeAt(a+1)===92;)a+=1,l=!l;if(o=i.charCodeAt(a+1),l&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Or.test(i.charAt(a)))){for(;Or.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}u=["word",i.slice(S,a+1),S,a],S=a;break}default:{o===47&&i.charCodeAt(S+1)===42?(a=i.indexOf("*/",S+2)+1,a===0&&(r||w?a=i.length:q("comment")),u=["comment",i.slice(S,a+1),S,a],S=a):(Zt.lastIndex=S+1,Zt.test(i),Zt.lastIndex===0?a=i.length-1:a=Zt.lastIndex-2,u=["word",i.slice(S,a+1),S,a],B.push(u),S=a);break}}return S++,u}function A(N){D.push(N)}return{back:A,endOfFile:C,nextToken:g,position:X}}});var Ur=Z((Vc,Vr)=>{"use strict";var ma=Ut(),pa=Nt(),ha=Mt(),xa=rt(),Hr=Kt(),ga=Wr(),qr={empty:!0,space:!0};function ya(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var qn=class{constructor(e){this.input=e,this.root=new xa,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new ma;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,l=!1,a=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[0],i==="("||i==="["?c.push(i==="("?")":"]"):i==="{"&&c.length>0?c.push("}"):i===c[c.length-1]&&c.pop(),c.length===0)if(i===";"){n.source.end=this.getPosition(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){l=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(e=a[a.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),l&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,l]of e.entries()){if(r=l,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(e){let n=new pa;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=ga(this.input)}decl(e,n){let i=new ha;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||ya(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],l;for(;e.length&&(l=e[0][0],!(l!=="space"&&l!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(o=e[c],o[1].toLowerCase()==="!important"){i.important=!0;let u=this.stringFrom(e,c);u=this.spacesFromEnd(e)+u,u!==" !important"&&(i.raws.important=u);break}else if(o[1].toLowerCase()==="important"){let u=e.slice(0),m="";for(let f=c;f>0;f--){let x=u[f][0];if(m.trim().startsWith("!")&&x!=="space")break;m=u.pop()[1]+m}m.trim().startsWith("!")&&(i.important=!0,i.raws.important=m,e=u)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(i.raws.between+=s.map(c=>c[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new Hr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],l=e[1].startsWith("--"),a=[],c=e;for(;c;){if(i=c[0],a.push(c),i==="("||i==="[")o||(o=c),s.push(i==="("?")":"]");else if(l&&r&&i==="{")o||(o=c),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,l);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!l)for(;a.length&&(c=a[a.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,l=i.length,a="",c=!0,u,m;for(let f=0;f<l;f+=1)o=i[f],s=o[0],s==="space"&&f===l-1&&!r?c=!1:s==="comment"?(m=i[f-1]?i[f-1][0]:"empty",u=i[f+1]?i[f+1][0]:"empty",!qr[m]&&!qr[u]?a.slice(-1)===","?c=!1:a+=o[1]:c=!1):a+=o[1];if(!c){let f=i.reduce((x,F)=>x+F[1],"");e.raws[n]={raw:f,value:a}}e[n]=a}rule(e){e.pop();let n=new Hr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};Vr.exports=qn});var en=Z((Uc,zr)=>{"use strict";var Sa=qe(),ba=kt(),Aa=Ur();function Xt(t,e){let n=new ba(t,e),i=new Aa(n);try{i.parse()}catch(r){throw r}return i.root}zr.exports=Xt;Xt.default=Xt;Sa.registerParse(Xt)});var Vn=Z((zc,jr)=>{"use strict";var Rt=class{constructor(e,n={}){if(this.type="warning",this.text=e,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};jr.exports=Rt;Rt.default=Rt});var tn=Z((jc,$r)=>{"use strict";var Ea=Vn(),Lt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Ea(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};$r.exports=Lt;Lt.default=Lt});var Un=Z(($c,Kr)=>{"use strict";var Gr={};Kr.exports=function(e){Gr[e]||(Gr[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var $n=Z((Kc,Zr)=>{"use strict";var Fa=qe(),wa=zt(),Na=Hn(),Ca=en(),Jr=tn(),Ma=rt(),Ta=bt(),{isClean:Be,my:ka}=Vt(),Gc=Un(),va={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},_a={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Ra={Once:!0,postcssPlugin:!0,prepare:!0},st=0;function Dt(t){return typeof t=="object"&&typeof t.then=="function"}function Yr(t){let e=!1,n=va[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,st,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,st,n+"Exit"]:[n,n+"Exit"]}function Qr(t){let e;return t.type==="document"?e=["Document",st,"DocumentExit"]:t.type==="root"?e=["Root",st,"RootExit"]:e=Yr(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function zn(t){return t[Be]=!1,t.nodes&&t.nodes.forEach(e=>zn(e)),t}var jn={},Ue=class t{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=zn(n);else if(n instanceof t||n instanceof Jr)r=zn(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Ca;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[ka]&&Fa.rebuild(r)}this.result=new Jr(e,r,i),this.helpers={...jn,postcss:jn,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!_a[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ra[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(Dt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];){e[Be]=!0;let n=[Qr(e)];for(;n.length>0;){let i=this.visitTick(n);if(Dt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return Dt(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,n=Ta;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,l=>{s+=l}),this.result.css=s,this.result}let o=new Na(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let n=this.runOnRoot(e);if(Dt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];)e[Be]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Dt(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,l]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return l(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,l;for(;l=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!l[Be]){l[Be]=!0,e.push(Qr(l));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===st){i.nodes&&i.nodes.length&&(i[Be]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[Be]=!0;let n=Yr(e);for(let i of n)if(i===st)e.nodes&&e.each(r=>{r[Be]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};Ue.registerPostcss=t=>{jn=t};Zr.exports=Ue;Ue.default=Ue;Ma.registerLazyResult(Ue);wa.registerLazyResult(Ue)});var eo=Z((Qc,Xr)=>{"use strict";var La=Hn(),Da=en(),Ba=tn(),Ia=bt(),Jc=Un(),Bt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,n=Da;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=Ia;this.result=new Ba(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new La(r,void 0,this._opts,n);if(s.isMap()){let[l,a]=s.generate();l&&(this.result.css=l),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};Xr.exports=Bt;Bt.default=Bt});var no=Z((Yc,to)=>{"use strict";var Oa=zt(),Pa=$n(),Wa=eo(),Ha=rt(),Xe=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Wa(this,e,n):new Pa(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};to.exports=Xe;Xe.default=Xe;Ha.registerProcessor(Xe);Oa.registerProcessor(Xe)});var co=Z((Zc,uo)=>{"use strict";var io=Ut(),ro=Nt(),qa=qe(),Va=qt(),oo=Mt(),so=zt(),Ua=vr(),za=kt(),ja=$n(),$a=Pn(),Ga=Ft(),Ka=en(),Gn=no(),Ja=tn(),ao=rt(),lo=Kt(),Qa=bt(),Ya=Vn();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Gn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let l=n(...s);return l.postcssPlugin=e,l.postcssVersion=new Gn().version,l}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,l,a){return re([r(a)]).process(s,l)},r};re.stringify=Qa;re.parse=Ka;re.fromJSON=Ua;re.list=$a;re.comment=t=>new ro(t);re.atRule=t=>new io(t);re.decl=t=>new oo(t);re.rule=t=>new lo(t);re.root=t=>new ao(t);re.document=t=>new so(t);re.CssSyntaxError=Va;re.Declaration=oo;re.Container=qa;re.Processor=Gn;re.Document=so;re.Comment=ro;re.Warning=Ya;re.AtRule=io;re.Result=Ja;re.Input=za;re.Rule=lo;re.Root=ao;re.Node=Ga;ja.registerPostcss(re);uo.exports=re;re.default=re});function _(t,e){if(typeof window>"u")return;let n=window,i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ae(t){try{window.parent.postMessage(t,"*")}catch(e){_("bridge.postMessage",e)}}function hi(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="tick"){t.onTick();return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&cs(o,s)}};return window.addEventListener("message",e),e}function cs(t,e){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${e}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){_("bridge.flashElements.querySelector",i)}}var gn=null;function xi(t){gn=t}function dt(t,e){if(gn)try{gn({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){_("runtime.analytics.site1",n)}}function gi(t){let e=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=(l,a)=>{for(let c of l){try{c.currentTime=a}catch(u){_("runtime.adapters.css.site1",u)}try{c.pause()}catch(u){_("runtime.adapters.css.site2",u)}}},r=l=>{for(let a of l)try{a.play()}catch(c){_("runtime.adapters.css.site3",c)}},o=l=>{for(let a of l)try{a.pause()}catch(c){_("runtime.adapters.css.site4",c)}},s=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let l=document.querySelectorAll("*");for(let a of l){if(!(a instanceof HTMLElement))continue;let c=window.getComputedStyle(a);!c.animationName||c.animationName==="none"||e.push({el:a,baseDelay:a.style.animationDelay||"",basePlayState:a.style.animationPlayState||""})}},seek:l=>{let a=Number(l.time)||0;for(let c of e){if(!c.el.isConnected)continue;let u=t?.resolveStartSeconds?t.resolveStartSeconds(c.el):Number.parseFloat(c.el.getAttribute("data-start")??"0")||0,m=Math.max(0,a-u)*1e3,f=n(c.el);if(f.length>0){i(f,m);continue}c.el.style.animationPlayState="paused",c.el.style.animationDelay=`-${(m/1e3).toFixed(3)}s`}},pause:()=>{for(let l of e){if(!l.el.isConnected)continue;let a=n(l.el);a.length>0&&o(a),s(l)}},play:()=>{for(let l of e)l.el.isConnected&&(s(l),r(n(l.el)))},revert:()=>{e=[]}}}function yi(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?n.totalTime(i,!1):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function Si(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){_("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){_("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){_("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){_("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Ei(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){_("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(bi(i))i.goToAndStop(e*1e3,!1);else if(Ai(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,e/r*100);i.seek(o)}}}catch(r){_("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(bi(e)||Ai(e))&&e.pause()}catch(n){_("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function bi(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function Ai(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}var Fi=-1;function Ht(t){if(t!==Fi){Fi=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){_("runtime.adapters.seek-dispatch.site1",e)}}}function wi(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t,Ht(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Ni(){let t=null,e=0;return{name:"typegpu",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfTypegpuTime=t,Ht(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Ci(){let t=globalThis.GPUQueue;if(!t?.prototype?.copyExternalImageToTexture)return;let e=t.prototype.copyExternalImageToTexture;t.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=n.source.nextElementSibling;if(o instanceof HTMLImageElement&&o.classList.contains("__render_frame__")&&o.complete&&o.naturalWidth>0)return e.call(this,{...n,source:o},i,r)}return e.call(this,n,i,r)}}function Mi(){let t=!1,e=0,n=new WeakMap,i=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},r=l=>{let a=Number(l.currentTime);return Number.isFinite(a)&&a>0?a:0},o=(l,a)=>a<=0?l:l>=a?Math.max(0,l-a):l,s=(l,a)=>{let c=n.get(l);if(c)return c;let u={compositionTimeMs:a,animationTimeMs:t?o(r(l),a):r(l)};return n.set(l,u),u};return{name:"waapi",discover:()=>{t=!0;for(let l of i())s(l,e)},seek:l=>{let a=Math.max(0,(Number(l.time)||0)*1e3);e=a;for(let c of i()){let u=t?s(c,a):s(c,0),m=u.animationTimeMs+Math.max(0,a-u.compositionTimeMs);try{c.currentTime=m}catch(f){_("runtime.adapters.waapi.site1",f)}try{c.pause()}catch(f){_("runtime.adapters.waapi.site2",f)}}},pause:()=>{if(document.getAnimations)for(let l of document.getAnimations())try{l.pause()}catch(a){_("runtime.adapters.waapi.site3",a)}}}}function Ti(t,e){if(t.length===0)return 1;let n=0;for(;n<t.length-2&&e>=t[n+1].time;)n+=1;let i=t[n],r=t[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(e-i.time)/o));return i.volume+(r.volume-i.volume)*s}function ds(t,e,n,i){let r=Number.parseFloat(t.dataset.start??"0")||0,o=Number.parseFloat(t.dataset.end??""),s=Number.parseFloat(t.dataset.duration??""),l=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(t.dataset.volume??""),c=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;t.volume=c;let u=1/Math.min(60,Math.max(1,i)),m=Math.max(0,r),f=Math.min(n,l),x=[];for(let E=m;E<=f+1e-6;E+=u){let S=Math.min(f,E);e(S);let B=Number(t.volume);if(!Number.isFinite(B))continue;let D=Math.max(0,Math.min(1,B)),v=x.at(-1);if((!v||Math.abs(v.volume-D)>1e-4||S===f)&&x.push({time:Number(S.toFixed(6)),volume:Number(D.toFixed(6))}),S===f)break}return x.some(E=>Math.abs(E.volume-c)>1e-4)?x:null}function ki(t,e,n,i){if(!e||!(t instanceof HTMLAudioElement)&&!(t instanceof HTMLVideoElement)||n<=0)return;let o=ds(t,s=>{try{typeof e.totalTime=="function"?e.totalTime(s,!0):typeof e.seek=="function"&&e.seek(s,!0)}catch{}},n,60);o&&i.set(t,o)}function vi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let l=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(l))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,c=s.defaultPlaybackRate,u=Number.isFinite(c)&&c>0?Math.max(.1,Math.min(5,c)):1,m=s.loop,f=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,x=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(x)||x<=0)&&f!=null&&(x=Math.max(0,(f-a)/u));let F=Number.isFinite(x)&&x>0?l+x:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),S={el:s,start:l,mediaStart:a,duration:Number.isFinite(x)&&x>0?x:Number.POSITIVE_INFINITY,end:F,volume:Number.isFinite(E)?E:null,playbackRate:u,loop:m,sourceDuration:f};i.push(S),s.tagName==="VIDEO"&&r.push(S),Number.isFinite(F)&&(o=Math.max(o,F))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var yn=new WeakMap,ft=new WeakMap,Sn=new WeakSet,et=new WeakSet;function fs(t){if(et.has(t))return;et.add(t);let e=()=>et.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}var bn=new WeakMap;function mt(t){return Number.isFinite(t)?Math.max(0,Math.min(1,t)):1}function _i(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<n.end&&r>=0){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let w=n.sourceDuration-n.mediaStart;w>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%w)}let s=mt(t.userVolume??1),l=mt(n.volume??1),a=bn.get(i),c=mt(i.volume),u;n.volumeKeyframes&&n.volumeKeyframes.length>0?u=mt(Ti(n.volumeKeyframes,r)):a===void 0||Math.abs(c-a)>1e-4?u=c:u=l;let m=mt(u*s);i.volume=m,bn.set(i,m),t.onElementVolume?.(i,m),e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(w){_("runtime.media.site1",w)}let f=.04,x=2,F=i.currentTime||0,E=Math.abs(F-r),S=r-F,B=yn.get(i);yn.set(i,S);let D=B===void 0,v=!D&&Math.abs(S-B)>.5,X=E>3,q=E>.5&&(D||v||X),C=i.tagName==="VIDEO"&&!i.paused,g=B!==void 0&&Math.abs(S-B)<.004,A=!1;if(!C&&!q&&!D&&g&&E>f){let w=(ft.get(i)??0)+1;ft.set(i,w),w>=x&&(A=!0,ft.set(i,0))}else E<=f&&ft.set(i,0);let N=!C&&t.forceSync&&E>.02;if(q||A||N){try{i.currentTime=r}catch(w){_("runtime.media.site2",w)}if(Math.abs(i.currentTime-r)>.5&&!Sn.has(i)){Sn.add(i),i.load();try{i.currentTime=r}catch(w){_("runtime.media.site3",w)}}et.delete(i)}t.playing&&i.paused&&!et.has(i)?(fs(i),i.play().catch(w=>{et.delete(i),(w&&typeof w=="object"&&"name"in w?String(w.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}yn.delete(i),ft.delete(i),Sn.delete(i),bn.delete(i),i.paused||i.pause()}}var ms=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),ps=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function Ri(t){let e=!1,n=null,i=null,r=null,o=null;function s(g,A){try{window.dispatchEvent(new CustomEvent(g,{detail:A}))}catch(N){_("runtime.picker.site1",N)}}function l(g){r=g,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function a(g){o=g,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function c(g){let A=g.ownerDocument.defaultView;if(!A)return!1;let N=g;for(;N&&N!==document.body&&N!==document.documentElement;){let w=A.getComputedStyle(N);if(w.display==="none"||w.visibility==="hidden"||w.pointerEvents==="none")return!0;let T=Number.parseFloat(w.opacity);if(Number.isFinite(T)&&T<=.01)return!0;N=N.parentElement}return!1}function u(g){if(!g||g===document.body||g===document.documentElement)return!1;let A=g.tagName.toLowerCase();return!(A==="script"||A==="style"||A==="link"||A==="meta"||g.classList.contains("__hf-pick-highlight")||g.closest(ms)||c(g))}function m(g){return!!g?.closest(ps)}function f(g){let A=g;if(A.id)return`#${A.id}`;let N=g.getAttribute("data-composition-id");if(N)return`[data-composition-id="${N}"]`;let w=g.getAttribute("data-composition-src");if(w)return`[data-composition-src="${w}"]`;let T=g.getAttribute("data-track-index");if(T)return`[data-track-index="${T}"]`;let L=g.tagName.toLowerCase(),P=g.parentElement;if(!P)return L;let J=P.querySelectorAll(`:scope > ${L}`);if(J.length===1)return L;for(let R=0;R<J.length;R+=1)if(J[R]===g)return`${L}:nth-of-type(${R+1})`;return L}function x(g){let A=g.tagName.toLowerCase(),N=(g.textContent??"").trim().replace(/\\s+/g," "),w=(T,L)=>T.length>L?`${T.slice(0,L-1)}\\u2026`:T;return A==="h1"||A==="h2"||A==="h3"?"Heading":A==="p"||A==="span"||A==="div"?N.length>0?w(N,56):"Text":A==="img"?"Image":A==="video"?"Video":A==="audio"?"Audio":A==="svg"?"Shape":g.getAttribute("data-composition-src")?"Composition":A==="section"?"Section":`${A.charAt(0).toUpperCase()}${A.slice(1)}`}function F(g,A,N){let w=typeof N=="number"&&N>0?N:8,T=[];if(document.elementsFromPoint)T=document.elementsFromPoint(g,A);else if(document.elementFromPoint){let J=document.elementFromPoint(g,A);T=J?[J]:[]}if(m(T[0]??null))return[];let L={},P=[];for(let J=0;J<T.length;J+=1){let R=T[J];if(!u(R))continue;let le=`${R.tagName}::${R.id||""}::${J}`;if(!L[le]&&(L[le]=!0,P.push(R),P.length>=w))break}return P}function E(g){let A=g.getBoundingClientRect(),N={};for(let T=0;T<g.attributes.length;T+=1){let L=g.attributes[T];L.name.startsWith("data-")&&(N[L.name]=L.value)}return{id:g.id||null,tagName:g.tagName.toLowerCase(),selector:f(g),label:x(g),boundingBox:{x:A.left,y:A.top,width:A.width,height:A.height},textContent:g.textContent?g.textContent.trim().slice(0,200):null,src:g.getAttribute("src")||g.getAttribute("data-composition-src")||null,dataAttributes:N}}function S(g,A,N){return F(g,A,N).map(E)}function B(g){if(!e)return;let N=F(g.clientX,g.clientY,1)[0]??(g.target instanceof Element?g.target:null);if(!u(N)||n===N)return;n&&n.classList.remove("__hf-pick-highlight"),n=N,N.classList.add("__hf-pick-highlight");let w=E(N);l(w),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:w})}function D(g){if(!e)return;g.preventDefault(),g.stopPropagation(),g.stopImmediatePropagation();let A=S(g.clientX,g.clientY,8);A.length!==0&&(l(A[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:A,selectedIndex:0,point:{x:g.clientX,y:g.clientY}}))}function v(g){g.key==="Escape"&&(q(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function X(){e||(e=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",B,!0),document.addEventListener("click",D,!0),document.addEventListener("keydown",v,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function q(){e&&(e=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",B,!0),document.removeEventListener("click",D,!0),document.removeEventListener("keydown",v,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function C(){window.__HF_PICKER_API={enable:X,disable:q,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(g,A,N)=>Number.isFinite(g)&&Number.isFinite(A)?S(g,A,N):[],pickAtPoint:(g,A,N)=>{if(!Number.isFinite(g)||!Number.isFinite(A))return null;let w=S(g,A,8);if(!w.length)return null;let T=Math.max(0,Math.min(w.length-1,Number(N??0))),L=w[T]??null;return L?(a(L),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:L}),q(),L):null},pickManyAtPoint:(g,A,N)=>{if(!Number.isFinite(g)||!Number.isFinite(A))return[];let w=S(g,A,8);if(!w.length)return[];let T=[],L=Array.isArray(N)?N:[0];for(let P of L){let J=Math.max(0,Math.min(w.length-1,Math.floor(Number(P)))),R=w[J];if(!R)continue;T.some(Se=>Se.selector===R.selector&&Se.tagName===R.tagName)||T.push(R)}return T.length?(a(T[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:T}),q(),T):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:X,disablePickMode:q,installPickerApi:C}}function tt(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function pt(t,e,n){let i=t?.[e];return typeof i=="function"?Number(i.call(t))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&_("runtime.player.nonConformantNum",{prop:e,actual:typeof i}),n)}function ve(t,e){let n=t?.[e];if(typeof n=="function"){n.call(t);return}n!==void 0&&_("runtime.player.nonConformantVoid",{method:e,actual:typeof n})}function ht(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){_("runtime.player.site1",r)}}}function Li(t,e,n){let i=tt(e,n);return ve(t,"pause"),typeof t.totalTime=="function"?t.totalTime(i,!1):typeof t.seek=="function"&&t.seek(i,!1),i}function hs(t,e,n,i){let r=[];ht(t,e,o=>{ve(o,"play"),r.push(o)});try{return Li(e,n,i)}finally{for(let o of r)try{ve(o,"pause")}catch(s){_("runtime.player.site2",s)}}}function xs(t,e){ht(t,e,n=>{ve(n,"play")})}function Di(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??pt(e,"duration",0))||0);n>0&&Math.max(0,pt(e,"time",0))>=n&&(ve(e,"pause"),typeof e.seek=="function"&&e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),ve(e,"play"),ht(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play")}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;ve(e,"pause"),ht(t.getTimelineRegistry?.(),e,i=>{ve(i,"pause")});let n=Math.max(0,pt(e,"time",0));t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:(e,n)=>{let i=t.getTimeline();if(!i)return;let r=Math.max(0,Number(e)||0),o=t.getIsPlaying(),s=hs(t.getTimelineRegistry?.(),i,r,t.getCanonicalFps());t.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play"),ht(t.getTimelineRegistry?.(),i,l=>{typeof l.timeScale=="function"&&l.timeScale(t.getPlaybackRate()),ve(l,"play")}),t.onDeterministicPlay(),t.onShowNativeVideos(),t.onSyncMedia(s,!0)):(t.setIsPlaying(!1),t.onSyncMedia(s,!1)),t.onRenderFrameSeek(s),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(xs(t.getTimelineRegistry?.(),n),Li(n,e,i)):tt(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>pt(t.getTimeline(),"time",0),getDuration:()=>pt(t.getTimeline(),"duration",0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function Bi(){return{capturedTimeline:null,isPlaying:!1,rafId:null,currentTime:0,deterministicAdapters:[],parityModeEnabled:!0,canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,clampDurationLoggedRaw:null,beforeUnloadHandler:null,domReadyHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,nativeVisualWatchdogTick:0,transportClock:null,transportRafId:null}}var gs="data-hf-authored-duration",ys="data-hf-authored-end";function Qe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Ss(t){return Qe(t.getAttribute("data-duration"))}function bs(t){return Qe(t.getAttribute("data-end"))}function As(t){return Qe(t.getAttribute(gs))}function Es(t){return Qe(t.getAttribute(ys))}function Fs(t){let e=(t??"").trim();if(!e)return null;let n=Qe(e);if(n!=null)return{kind:"absolute",value:n};let i=e.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",l=Number.parseFloat(s),a=Number.isFinite(l)?Math.max(0,l):0,c=o==="-"?-a:a;return{kind:"reference",refId:r,offset:c}}function Ye(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=u=>{let m=document.getElementById(u);return m||(document.querySelector(`[data-composition-id="${CSS.escape(u)}"]`)??null)},l=u=>{let m=r.get(u);if(m!==void 0)return m;let f=null,x=Ss(u)??(n?As(u):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let F=bs(u)??(n?Es(u):null);if(F!=null){let E=c(u,0),S=F-E;Number.isFinite(S)&&S>0&&(f=S)}}if((f==null||f<=0)&&u instanceof HTMLMediaElement){let F=Qe(u.getAttribute("data-playback-start"))??Qe(u.getAttribute("data-media-start"))??0;Number.isFinite(u.duration)&&u.duration>F&&(f=u.duration-F)}if(f==null||f<=0){let F=u.getAttribute("data-composition-id");if(F){let E=e[F]??null;if(E&&typeof E.duration=="function")try{let S=Number(E.duration());Number.isFinite(S)&&S>0&&(f=S)}catch(S){_("runtime.startResolver.site1",S)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(u,f),f):(r.set(u,null),null)},a=(u,m)=>{if(u.hasAttribute("data-composition-id")){let x=u.parentElement?.closest("[data-composition-id]");return x?c(x,m):0}let f=u.closest("[data-composition-id]");return f?c(f,m):0},c=(u,m)=>{let f=i.get(u);if(f!==void 0)return f??m;if(o.has(u))return m;o.add(u);try{let x=Fs(u.getAttribute("data-start"));if(!x){if(u.hasAttribute("data-composition-id")){let D=u.parentElement;if(D&&(D.hasAttribute("data-composition-src")||D.hasAttribute("data-composition-id"))){let v=c(D,m);return i.set(u,v),v}}return i.set(u,m),m}if(x.kind==="absolute"){let D=Math.max(0,x.value),v=Math.max(0,a(u,m)+D);return i.set(u,v),v}let F=s(x.refId);if(!F)return i.set(u,m),m;let E=c(F,0),S=l(F);if(S==null||S<=0){let D=Math.max(0,E+x.offset);return i.set(u,D),D}let B=Math.max(0,E+S+x.offset);return i.set(u,B),B}finally{o.delete(u)}};return{resolveStartForElement:(u,m=0)=>c(u,Math.max(0,m)),resolveDurationForElement:u=>l(u)}}var ws="data-hf-authored-duration",Ns="data-hf-authored-end";function Ee(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function An(t){return Ee(t.getAttribute("data-duration"))??Ee(t.getAttribute(ws))}function Ii(t){return Ee(t.getAttribute("data-end"))??Ee(t.getAttribute(Ns))}function En(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var Oi={composition:0,video:1,image:2,element:3,audio:4};function Cs(t){if(t.length===0)return;let e=new Map;for(let s of t){let l=e.get(s.track)??new Set;l.add(s.kind),e.set(s.track,l)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,l)=>s-l);for(let s of o){let l=e.get(s);if(l.size===1)r.set(`${s}:${[...l][0]}`,i++);else{let a=[...l].sort((c,u)=>(Oi[c]??99)-(Oi[u]??99));for(let c of a)r.set(`${s}:${c}`,i++)}}for(let s of t){let l=`${s.track}:${s.kind}`,a=r.get(l);a!=null&&(s.track=a)}}function gt(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Pi(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return gt(e);let n=t.getAttribute("data-composition-src");if(n)return gt(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?gt(i.getAttribute("src")):null}function Ms(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Ts(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function ks(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function xt(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function vs(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return xt(r);let o=t.id;if(o)return xt(o);let s=Ms(t);if(s)return xt(s);let l=Ts(Pi(t));if(l)return xt(l);let a=ks(t);return a||`${xt(e)} ${n+1}`}function Wi(t){let n=window.__timelines??{},i=Ye({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=H=>{if(!H)return null;let k=n[H]??null;if(!k||typeof k.duration!="function")return null;try{let O=Number(k.duration());return Number.isFinite(O)&&O>0?O:null}catch{return null}},o=H=>{let k=Ee(H.getAttribute("data-duration"));if(k!=null&&k>0)return k;let O=Ee(H.getAttribute("data-playback-start"))??Ee(H.getAttribute("data-media-start"))??0;return Number.isFinite(H.duration)&&H.duration>O?Math.max(0,H.duration-O):null},s=()=>{let H=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(H.length===0)return null;let k=0;for(let O of H){let ne=O.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(O,0):Math.max(0,Number(O.getAttribute("data-start")??0)||0);if(!Number.isFinite(ne))continue;let ee=o(O);ee==null||ee<=0||(k=Math.max(k,Math.max(0,ne)+ee))}return k>0?k:null},l=H=>{let k=H.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},a=(H,k)=>{let O=[],ne=null,ee=null,z=null,V=H.parentElement;for(;V;){let j=V.getAttribute("data-composition-id");j&&(O.push(j),!z&&V!==k&&(z=j),ne==null&&(ne=i.resolveStartForElement(V,0)),ee==null&&(ee=Ee(V.getAttribute("data-duration"))??r(j)??null)),V=V.parentElement}return{parentCompositionId:z,compositionAncestors:O.reverse(),inheritedStart:ne,inheritedDuration:ee}},c=document.querySelector("[data-composition-id]"),u=Array.from(document.querySelectorAll("[data-composition-id]")),m=c?.getAttribute("data-composition-id")??null,f=c?i.resolveStartForElement(c,0):0,x=s(),F=x!=null?Math.max(0,x-Math.max(0,f)):null,E=r(m),S=An(c??document.body),B=En(...u.filter(H=>H!==c).map(H=>{let k=i.resolveStartForElement(H,0),O=i.resolveDurationForElement(H)??r(H.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||O==null||O<=0?null:Math.max(0,k)+O})),D=B!=null?Math.max(0,B-Math.max(0,f)):null,v=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,X=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,q=typeof F=="number"&&Number.isFinite(F)&&F>0?F:null,C=typeof D=="number"&&Number.isFinite(D)&&D>0?D:null,g=En(q,C),A=v!=null&&g!=null&&v>g+1,w=X??(A?g:En(v,q,C))??null,L=(w!=null?f+w:null)??(typeof x=="number"&&Number.isFinite(x)&&x>0?x:null),P=(H,k)=>!Number.isFinite(k)||k<=0?0:L==null||!Number.isFinite(L)?k:!Number.isFinite(H)||H>=L?0:Math.max(0,Math.min(k,L-H)),J=[],R=[],le=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),Se=0;for(let H=0;H<le.length;H+=1){let k=le[H];if(k===c||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let O=a(k,c),ne=i.resolveStartForElement(k,O.inheritedStart??0),ee=k.getAttribute("data-composition-id"),z=An(k);if((z==null||z<=0)&&ee&&ee!==m&&(z=r(ee)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let we=Ee(k.getAttribute("data-playback-start"))??Ee(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-we))}if(z==null||z<=0){let we=O.inheritedDuration;if(we!=null&&we>0){let Le=(O.inheritedStart??0)+we;z=Math.max(0,Le-ne)}}if(z==null||z<=0||(z=P(ne,z),z<=0))continue;let V=ne+z;Se=Math.max(Se,V);let j=k.tagName.toLowerCase(),Ce=ee&&ee!==m?"composition":j==="video"?"video":j==="audio"?"audio":j==="img"?"image":"element";J.push({id:k.id||ee||null,label:vs(k,Ce,J.length),start:ne,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(H),10)||0,kind:Ce,tagName:j,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:O.compositionAncestors,parentCompositionId:O.parentCompositionId,nodePath:null,compositionSrc:gt(k.getAttribute("data-composition-src")),assetUrl:Pi(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Ee(k.getAttribute("data-timeline-priority"))})}let $=new Set(J.map(H=>H.id)),U=c?.getAttribute("data-composition-id")??null,W=U?n[U]??null:null;if(W&&c){let H=W;if(typeof H.getChildren=="function")try{let k=H.getChildren(!0,!0,!1)??[],O=new Map;for(let z of c.children){let V=z;if(!V.id)continue;let j=V.tagName.toLowerCase();j==="script"||j==="style"||j==="link"||O.set(V,{id:V.id,start:1/0,end:-1/0})}let ne=z=>{let V=z;for(;V;){if(O.has(V))return V;if(V===c)return null;V=V.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let V=z.startTime(),j=z.parent;for(;j&&j!==W&&typeof j.startTime=="function";)V+=j.startTime(),j=j.parent;let Ce=V+z.duration();if(!(!Number.isFinite(V)||!Number.isFinite(Ce)))for(let we of z.targets()){if(!(we instanceof Element))continue;let $e=ne(we);if(!$e)continue;let Le=O.get($e);Le&&(Le.start=Math.min(Le.start,V),Le.end=Math.max(Le.end,Ce))}}let ee=J.length>0?Math.max(...J.map(z=>z.track))+1:0;for(let[z,V]of O){if(V.start===1/0||V.end===-1/0)continue;let j=z;if($.has(j.id))continue;let Ce=Math.max(0,V.end-V.start);if(Ce<=0)continue;let we=P(V.start,Ce);we<=0||(Se=Math.max(Se,V.start+we),J.push({id:j.id,label:j.getAttribute("data-timeline-label")??j.getAttribute("data-label")??j.getAttribute("aria-label")??j.id,start:V.start,duration:we,track:Number.parseInt(j.getAttribute("data-track-index")??j.getAttribute("data-track")??"",10)||ee,kind:"element",tagName:j.tagName.toLowerCase(),compositionId:j.getAttribute("data-composition-id"),compositionAncestors:U?[U]:[],parentCompositionId:U,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:j.getAttribute("data-timeline-role"),timelineLabel:j.getAttribute("data-timeline-label"),timelineGroup:j.getAttribute("data-timeline-group"),timelinePriority:Ee(j.getAttribute("data-timeline-priority"))}),$.add(j.id))}}catch(k){_("runtime.timeline.site1",k)}}if(c&&w!=null&&w>0){let H=J.length>0?Math.max(...J.map(k=>k.track))+1:0;for(let k of c.children){let O=k;if(!O.id||$.has(O.id))continue;let ne=O.getAttribute("data-timeline-role");if(ne!=="overlay"&&ne!=="persistent-overlay")continue;let ee=O.tagName.toLowerCase();if(ee==="script"||ee==="style"||ee==="link"||ee==="meta"||window.getComputedStyle(O).display==="none")continue;let V=P(0,w);V<=0||(Se=Math.max(Se,V),J.push({id:O.id,label:O.getAttribute("data-timeline-label")??O.getAttribute("data-label")??O.getAttribute("aria-label")??O.id,start:0,duration:V,track:Number.parseInt(O.getAttribute("data-track-index")??O.getAttribute("data-track")??"",10)||H,kind:"element",tagName:ee,compositionId:O.getAttribute("data-composition-id"),compositionAncestors:U?[U]:[],parentCompositionId:U,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ne,timelineLabel:O.getAttribute("data-timeline-label"),timelineGroup:O.getAttribute("data-timeline-group"),timelinePriority:Ee(O.getAttribute("data-timeline-priority"))}),$.add(O.id))}}Cs(J);for(let H of u){if(H===c)continue;let k=H.getAttribute("data-composition-id");if(!k||!l(k))continue;let O=i.resolveStartForElement(H,0),ne=An(H);if((ne==null||ne<=0)&&Ii(H)!=null){let j=Ii(H);ne=Math.max(0,j-O)}let ee=r(k),z=ne&&ne>0?ne:ee;if(z==null||z<=0)continue;let V=P(O,z);V<=0||R.push({id:k,label:H.getAttribute("data-label")??k,start:O,duration:V,thumbnailUrl:gt(H.getAttribute("data-thumbnail-url")),avatarName:null})}let Y=Math.max(1,Se||1,w??0);return{source:"hf-preview",type:"timeline",durationInFrames:A&&X==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(Y*Math.max(1,t.canonicalFps))),clips:J,scenes:R,compositionWidth:Ee(c?.getAttribute("data-width"))??1920,compositionHeight:Ee(c?.getAttribute("data-height"))??1080}}var ae=us(co(),1),fo=ae.default,Xc=ae.default.stringify,ed=ae.default.fromJSON,td=ae.default.plugin,nd=ae.default.parse,id=ae.default.list,rd=ae.default.document,od=ae.default.comment,sd=ae.default.atRule,ad=ae.default.rule,ld=ae.default.decl,ud=ae.default.root,cd=ae.default.CssSyntaxError,dd=ae.default.Declaration,fd=ae.default.Container,md=ae.default.Processor,pd=ae.default.Document,hd=ae.default.Comment,xd=ae.default.Warning,gd=ae.default.AtRule,yd=ae.default.Result,Sd=ae.default.Input,bd=ae.default.Rule,Ad=ae.default.Root,Ed=ae.default.Node;var Kn="data-hf-authored-id";function Jn(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Qn(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function Za(t){return t&&t.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function mo(t){let e=t.trim();return e?Array.from(new Set([e,Za(e)])).filter(Boolean):[]}function Xa(t){return!!t&&/[\\w-]/.test(t)}function el(t,e,n){let i=mo(e).sort((l,a)=>a.length-l.length);if(i.length===0)return t;let r="",o=0,s=null;for(let l=0;l<t.length;l+=1){let a=t[l],c=l>0?t[l-1]:"";if(s){r+=a,a===s&&c!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let u=i.find(m=>t.startsWith(m,l+1));if(u){let m=t[l+1+u.length];if(!Xa(m)){r+=n,l+=u.length;continue}}}r+=a}return r}function tl(t,e){let n=e?.trim();return n?el(t,n,`[${Kn}="${Qn(n)}"]`):t}function nl(t,e,n,i,r){let o=tl(t,i),s=il(o,e,n),l=s.trim();if(!l||/^(html|body|:root|\\*)$/i.test(l))return t;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Jn(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(l))return s.replace(a,e);let c=s.match(/^\\s*/)?.[0]??"",u=s.match(/\\s*$/)?.[0]??"";if(r){let m=i?`[${Kn}="${Qn(i)}"]`:null;if(m&&l.startsWith(m)){let f=l.slice(m.length);return`${c}${e}${m}${f}${u}`}}return`${c}${e} ${l}${u}`}function il(t,e,n){let i=Jn(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var rl=new Set(["keyframes","-webkit-keyframes","font-face"]);function ol(t){return t?.type==="atrule"}function sl(t){let e=t.parent;for(;e;){if(ol(e)&&rl.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function Yn(t,e,n,i,r){let o=e.trim();if(!t||!o)return t;let s=n||`[data-composition-id="${Qn(o)}"]`,l=fo.parse(t);return l.walkRules(a=>{sl(a)||(a.selectors=a.selectors.map(c=>nl(c,s,o,i,r?.compoundAuthoredRoot)))}),l.toResult({map:!1}).css}function po(t,e,n="[HyperFrames] composition script error:",i,r=e,o){let s=JSON.stringify(e),l=JSON.stringify(r),a=JSON.stringify(n),c=Jn(e),u=JSON.stringify(o?.trim()||null),m=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${c}"|\'${c}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),F=JSON.stringify(mo(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${l};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${u};\n var __hfAuthoredRootAttr = ${JSON.stringify(Kn)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${m} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${F};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function ho(){if(typeof document>"u")return{};let t=Zn(document.documentElement),e=al();return{...t,...e}}function Zn(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function al(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var ll=8e3,ul=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/;function cl(t,e){return`${t}__hf${e}`}var dl=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),ll)});function Xn(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}var fl=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function ml(t){let e=document.importNode(t,!0),n=e.getAttribute("id")?.trim();for(let o of fl)e.removeAttribute(o);n&&(e.removeAttribute("id"),e.setAttribute("data-hf-authored-id",n)),e.setAttribute("data-hf-inner-root","true");let i=e.getAttribute("data-width"),r=e.getAttribute("data-height");return e.style.width=i?`${i}px`:"100%",e.style.height=r?`${r}px`:"100%",e}function xo(t,e){let n=t.trim();if(!n)return t;try{return ul.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function pl(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function nn(t){let e=(t.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(t.getAttribute("data-hf-original-composition-id")||e||"").trim()||null,runtimeCompositionId:e}}function hl(t){let e=new Map;for(let n of t){let i=nn(n).authoredCompositionId||"";i&&e.set(i,(e.get(i)||0)+1)}return e}function go(t){let e=nn(t).authoredCompositionId;return e?!!document.querySelector(`template#${CSS.escape(e)}-template`):!1}function xl(t){return!!t.querySelector(\'[data-hf-inner-root="true"]\')}function gl(t){return t.hasAttribute("data-composition-src")?!0:go(t)?t.children.length===0||t.hasAttribute("data-hf-original-composition-id")?!0:xl(t):!1}function ti(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(e=>e.hasAttribute("data-composition-src")?!0:go(e))}function yo(){let t=window.__hfVariablesByComp;if(!t)return;let e=new Set(ti().map(n=>nn(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(t))e.has(n)||delete t[n]}function So(t,e=hl(t)){let n=new Map,i=new Map;for(let r of t){let{authoredCompositionId:o,runtimeCompositionId:s}=nn(r),l=gl(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(e.get(o)||0)>1,c=s||o;if(l){let u=a?(n.get(o)||0)+1:0;a&&n.set(o,u),c=a?cl(o,u):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",c),s&&s!==c&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:c})}return i}async function ei(t){let e=null;t.authoredCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===t.authoredCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.authoredCompositionId||null,r=t.runtimeCompositionId||i||null,o=e?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(t.headLinks)for(let f of t.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(t.headStyles)for(let f of t.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Yn(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let l=Array.from(n.querySelectorAll("style"));for(let f of l){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Yn(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let a=[];if(t.headScripts)for(let f of t.headScripts){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=xo(F,t.compositionUrl);a.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&a.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}}let c=Array.from(n.querySelectorAll("script")),u=[...a];for(let f of c){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=xo(F,t.compositionUrl);u.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&u.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let m=Array.from(n.querySelectorAll("style"));for(let f of m)f.parentNode?.removeChild(f);if(e){let f=e.getAttribute("data-width"),x=e.getAttribute("data-height"),F=t.parseDimensionPx(f),E=t.parseDimensionPx(x);f&&t.host.setAttribute("data-width",f),x&&t.host.setAttribute("data-height",x),F&&t.host instanceof HTMLElement&&(t.host.style.width=F),E&&t.host instanceof HTMLElement&&(t.host.style.height=E),e.hasAttribute("data-timeline-locked")&&t.host.setAttribute("data-timeline-locked",""),t.host.appendChild(ml(e))}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(r){let f={...t.declaredVariableDefaults??{},...pl(t.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of u){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=po(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),t.injectedScripts.push(x),f.kind==="external"){let F=await dl(x);F.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.authoredCompositionId,runtimeCompositionId:t.runtimeCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:F.status,elapsedMs:F.elapsedMs}})}}}async function bo(t){let e=ti();if(yo(),e.length===0)return;let n=So(e),i=e.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let l=document.querySelector(`template#${CSS.escape(s)}-template`);Xn(r),await ei({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:l.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function Ao(t){let e=ti();if(yo(),e.length===0)return;let n=So(e),i=e.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),l=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||l||null,c=null;try{c=new URL(o,document.baseURI)}catch{c=null}Xn(r);try{let u=l!=null?document.querySelector(`template#${CSS.escape(l)}-template`):null;if(u){await ei({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let m=await fetch(o);if(!m.ok)throw new Error(`HTTP ${m.status}`);let f=await m.text(),F=new DOMParser().parseFromString(f,"text/html"),E=(l?F.querySelector(`template#${CSS.escape(l)}-template`):null)??F.querySelector("template"),S=E?E.content:F.body,B=E?void 0:Array.from(F.head.querySelectorAll("style")),D=E?void 0:Array.from(F.head.querySelectorAll("script")),v=E?void 0:Array.from(F.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await ei({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:S,hasTemplate:!!E,fallbackBodyInnerHtml:F.body.innerHTML,compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:B,headScripts:D,headLinks:v,declaredVariableDefaults:Zn(F.documentElement),onDiagnostic:t.onDiagnostic})}catch(u){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:u instanceof Error?u.message:"unknown_error"}}),Xn(r)}}))}function yl(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function Sl(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&t.push(r)}return t}function bl(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function ni(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=Sl();for(let i of e){let r=null;if(i.wordId&&(r=yl(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=t.getTweensOf(r).filter(u=>u.vars.color!==void 0).sort((u,m)=>u.startTime()-m.startTime()),c=a.length>0?String(a[0].vars.color):"";for(let u of a)String(u.vars.color)===c?i.dimColor&&(u.vars.color=i.dimColor):i.activeColor&&(u.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let l=bl(r);t.set(l,o)}}}).catch(()=>{})}var rn=class{constructor(e){ye(this,"_baseTime",0);ye(this,"_playStartMs",null);ye(this,"_rate",1);ye(this,"_duration",1/0);ye(this,"_nowMs");ye(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function Eo(t){return!Number.isFinite(t)||t<=0?1:t}var on=class{constructor(){ye(this,"_ctx",null);ye(this,"_bufferCache",new Map);ye(this,"_failedSrcs",new Set);ye(this,"_activeSources",[]);ye(this,"_masterGain",null);ye(this,"_rateAnchorCtx",0);ye(this,"_rateAnchorComp",0);ye(this,"_rate",1);ye(this,"_paused",!0);ye(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;try{let i=await fetch(n);if(!i.ok)return this._failedSrcs.add(n),_("webAudioTransport.fetch",new Error(`${i.status} ${n}`)),null;let r=await i.arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return this._failedSrcs.add(n),_("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,l,a=1){if(!this._ctx||!this._masterGain||l!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),l!==this._playGeneration)return null;let c=Eo(a),u=this._ctx.createBufferSource();u.buffer=n,u.playbackRate.value=c;let m=this._ctx.createGain();m.gain.value=s,u.connect(m),m.connect(this._masterGain);let f=o-i,x=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=x,this._rateAnchorComp=o,f>=0)u.start(0,f+r);else{let S=-f/c;u.start(x+S,r)}let F=e.muted;e.muted=!0;let E={el:e,sourceNode:u,gainNode:m,compositionStart:i,mediaStart:r,scheduledAt:x,priorMuted:F};return this._activeSources.push(E),this._paused=!1,E}catch(c){return _("webAudioTransport.schedule",c),null}}setRate(e){let n=Eo(e);if(n!==this._rate){this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){_("webAudioTransport.setRate",r)}}}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setElementVolume(e,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===e)try{r.gainNode.gain.value=i}catch(o){_("webAudioTransport.setElementVolume",o)}}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var Fo="data-hf-authored-duration",wo="data-hf-authored-end";function No(){let t=Bi(),e=null,n=null,i=[],r=new Set,o=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){_("runtime.init.site1",d)}document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let s=d=>{i.push(d)},l=(d,p,h)=>{let b=h??`${d}:${JSON.stringify(p)}`;r.has(b)||(r.add(b),Ae({source:"hf-preview",type:"diagnostic",code:d,details:p}))},a=d=>{let p={scale:1,focusX:960,focusY:540},h=[],b=[],y={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>p,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>b,getRenderState:()=>({...y,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},c=1/60,u=.75,m=2,f=.05,x=100,F=240,E=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},S=d=>{let p=d.toLowerCase();return p.includes("cannot read properties of null")||p.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:p.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:p.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},B=d=>{if(d==null||d.trim()==="")return null;let p=Number.parseFloat(d);return!Number.isFinite(p)||p<=0?null:`${p}px`},D=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let p=Array.from(document.querySelectorAll("[data-composition-id]"));return p.length===0?null:p.find(h=>!h.parentElement?.closest("[data-composition-id]"))??p[0]??null},v=()=>{let d=D();if(!d)return;let p=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));p&&(d.style.width=p),h&&(d.style.height=h),p&&d.style.setProperty("--comp-width",p),h&&d.style.setProperty("--comp-height",h)},X=()=>{let d=D(),p=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of p){if(d&&h===d)continue;let b=h.getAttribute("data-duration"),y=h.getAttribute("data-end");b!=null&&!h.hasAttribute(Fo)&&h.setAttribute(Fo,b),y!=null&&!h.hasAttribute(wo)&&h.setAttribute(wo,y),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},q=()=>{let d=D();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let p=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));p&&(d.style.width=p),h&&(d.style.height=h);let b=Array.from(d.children);for(let y of b){let M=y.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta"||!y.hasAttribute("data-start"))continue;let te=(y.style.top==="0px"||y.style.top==="0")&&(y.style.left==="0px"||y.style.left==="0")&&y.style.width==="100%"&&y.style.height==="100%",G=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(y.style.transform);if(te&&G&&!y.hasAttribute("data-width")&&!y.hasAttribute("data-height")){let Je=y.style.top,fe=y.style.left,ct=y.style.width,oe=y.style.height;y.style.top="",y.style.left="",y.style.width="",y.style.height="";let Q=window.getComputedStyle(y);Q.top!=="auto"||Q.bottom!=="auto"||Q.left!=="auto"||Q.right!=="auto"||Q.width!=="0px"||Q.height!=="0px"||(y.style.top=Je,y.style.left=fe,y.style.width=ct,y.style.height=oe)}let ie=window.getComputedStyle(y),xe=ie.position;if(xe!=="absolute"&&xe!=="fixed"&&(y.style.position="absolute"),!!y.style.top||!!y.style.bottom||ie.top!=="auto"||ie.bottom!=="auto"||(y.style.top="0"),!!y.style.left||!!y.style.right||ie.left!=="auto"||ie.right!=="auto"||(y.style.left="0"),M!=="audio"){let Je=B(y.getAttribute("data-width")),fe=B(y.getAttribute("data-height")),ct=ie.width!=="0px"&&ie.width!=="auto",oe=ie.height!=="0px"&&ie.height!=="auto";Je?!y.style.width&&!ct&&(y.style.width=Je):!y.style.width&&ie.width==="0px"&&(y.style.width="100%"),fe?!y.style.height&&!oe&&(y.style.height=fe):!y.style.height&&ie.height==="0px"&&(y.style.height="100%")}}},C=(d,p=0,h)=>Ye({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,p),g=(d,p)=>Ye({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:p?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),A=(d,p=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0):C(d,p),N=!!document.querySelector("[data-composition-src]"),w=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let p of d){let h=p.getAttribute("data-composition-id");if(h&&p.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){w=!0;break}}}let T=!N&&!w,L=d=>{if(!d||typeof d.duration!="function")return null;try{let p=Number(d.duration());return Number.isFinite(p)?Math.max(0,p):null}catch{return null}},P=d=>typeof d=="number"&&Number.isFinite(d)&&d>c,J=d=>{let p=Number(d.getAttribute("data-duration"));if(Number.isFinite(p)&&p>0)return p;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),b=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>b?Math.max(0,d.duration-b):null},R=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let p=0;for(let h of d){let b=A(h,0);if(!Number.isFinite(b))continue;let y=J(h);y==null||y<=c||(p=Math.max(p,Math.max(0,b)+y))}return p>c?p:null},le=()=>{let d=D();if(!d)return null;let p=window.__timelines??{},h=Ye({timelineRegistry:p,includeAuthoredTimingAttrs:!0}),b=0,y=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let M of y){if(!(M instanceof Element)||M.parentElement?.closest("[data-composition-id]")!==d)continue;let G=h.resolveStartForElement(M,0),ie=h.resolveDurationForElement(M);!Number.isFinite(G)||ie==null||ie<=0||(b=Math.max(b,Math.max(0,G)+ie))}return b>c?b:null},Se=()=>{let d=R();return typeof d!="number"||!Number.isFinite(d)||d<=c?null:d},$=d=>P(d)?Math.max(c,d*u):c,U=(d,p=0)=>{let h=L(d),b=Se(),y=le(),M=Math.max(b??0,y??0),te=Number.isFinite(p)&&p>c?p:0,G=0;return P(h)?G=Math.max(h,M,te):P(M)?G=Math.max(M,te):G=te,G>0?Math.max(0,G):0},W=()=>{let d=window.__timelines??{},p=Ye({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),h=Se(),b=le(),y=Math.max(h??0,b??0)||null,M=$(y),te=oe=>{let Q=document.querySelector(`[data-composition-id="${CSS.escape(oe)}"]`);return Q?p.resolveStartForElement(Q,0):0},G=oe=>{let Q=window.gsap;if(!Q||typeof Q.timeline!="function")return null;let ue=Q.timeline({paused:!0});for(let he of oe)ue.add(he.timeline,te(he.compositionId));return ue},ie=(oe,Q)=>{if(!P(oe))return null;let ue=window.gsap;if(!ue||typeof ue.timeline!="function")return null;let he=ue.timeline({paused:!0});if(Q)try{he.add(Q,0)}catch(se){_("runtime.init.site2",se)}let be=he;if(typeof be.to=="function")try{be.to({},{duration:oe})}catch(se){_("runtime.init.site3",se)}return he},xe=(oe,Q)=>{let ue=oe;if(typeof ue.getChildren!="function")return[];try{let he=ue.getChildren(!0,!0,!0)??[];if(!Array.isArray(he))return[];let be=[];for(let se of Q)if(!he.some(ke=>ke===se.timeline))try{let ke=te(se.compositionId);oe.add(se.timeline,ke),be.push(se.compositionId)}catch(ke){_("runtime.init.site4",ke)}return be}catch{return[]}},Ie=D(),de=Ie?.getAttribute("data-composition-id")??null;if(!de)return{timeline:null};let ge=d[de]??null,fe=(()=>{if(!Ie)return[];let oe=new Set,Q=Array.from(Ie.querySelectorAll("[data-composition-id]")),ue=[];for(let he of Q){let be=he.getAttribute("data-composition-id");if(!be||be===de||oe.has(be))continue;oe.add(be);let se=d[be]??null;if(!se||typeof se.play!="function"||typeof se.pause!="function")continue;let Ne=L(se);ue.push({compositionId:be,timeline:se,durationSeconds:Ne??0})}return ue})(),ct=oe=>{for(let Q of oe){let ue=Q.timeline;if(typeof ue.paused=="function")try{ue.paused(!1)}catch(he){_("runtime.init.site5",he)}}};if(fe.length>0&&ct(fe),ge){let oe=fe.length>0?xe(ge,fe):[];if((fe.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+de+"\'])"))&&(Y=!0),oe.length>0)try{let se=ge.time();ge.seek(se,!1)}catch{}let Q=L(ge);if(!P(Q)&&fe.length>0){let se=fe.map(ts=>ts.compositionId),Ne=G(fe),ke=L(Ne);if(Ne&&P(ke))return{timeline:Ne,selectedTimelineIds:se,selectedDurationSeconds:ke,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:ke,mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedTimelineIds:se,autoNestedChildren:oe}}};let pn=ie(y??0,ge),hn=L(pn);if(pn&&P(hn))return{timeline:pn,selectedTimelineIds:[de],selectedDurationSeconds:hn,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedDurationSeconds:hn,selectedTimelineIds:[de],autoNestedChildren:oe}}}}if(!P(Q)&&fe.length===0){let se=ie(y??0,ge),Ne=L(se);if(se&&P(Ne))return{timeline:se,selectedTimelineIds:[de],selectedDurationSeconds:Ne,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:de,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:b,selectedDurationSeconds:Ne,selectedTimelineIds:[de]}}}}let ue=Ie?.getAttribute("data-duration"),he=ue?parseFloat(ue):null,be=Math.max(P(he)?he:0,b??0);if(be>0&&P(be)&&P(Q)&&be>=Q+.5){let se=ge;if(typeof se.to=="function")try{se.to({},{duration:0},be)}catch(ke){_("runtime.init.site6",ke)}let Ne=L(ge);if(P(Ne))return{timeline:ge,selectedTimelineIds:[de],selectedDurationSeconds:Ne,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:de,rootDurationSeconds:Q,rootDeclaredDur:he,authoredCompositionDurationFloorSeconds:b,newDur:Ne}}}}return{timeline:ge,selectedTimelineIds:[de],selectedDurationSeconds:Q,mediaDurationFloorSeconds:h,diagnostics:oe.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:de,selectedDurationSeconds:Q,autoNestedChildren:oe}}:void 0}}if(fe.length>0){let oe=fe.map(he=>he.compositionId),Q=G(fe),ue=L(Q);if(Q)return{timeline:Q,selectedTimelineIds:oe,selectedDurationSeconds:ue,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:de,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:ue,mediaDurationFloorSeconds:h,selectedTimelineIds:oe}}}}return{timeline:null}},Y=!1,me=()=>{if(!T)return!1;let d=t.capturedTimeline,p=L(d),h=P(p);if(d&&h&&Y)return!1;let b=W();if(!b.timeline)return!1;if(d&&d===b.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=b.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let y=U(t.capturedTimeline,0);if(y>0){try{I.setDuration(y)}catch{}t.capturedTimeline.pause();let M=Math.max(0,t.currentTime||0);typeof t.capturedTimeline.totalTime=="function"&&t.capturedTimeline.totalTime(M,!1)}b.diagnostics&&Ae({source:"hf-preview",type:"diagnostic",code:b.diagnostics.code,details:b.diagnostics.details}),Ae({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:b.selectedTimelineIds??[],selectedDurationSeconds:b.selectedDurationSeconds??null,mediaDurationFloorSeconds:b.mediaDurationFloorSeconds??null}});for(let M of V)j.delete(M),Le(M);return!0};window.__hfForceTimelineRebind=()=>{Y=!1,me()};let Fe=()=>{let d=D();if(!(d instanceof HTMLElement))return;let p=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),b=Number(d.getAttribute("data-height")),y=window.getComputedStyle(d),M=Number.isFinite(h)&&h>0&&Number.isFinite(b)&&b>0,te=p.width<=0||p.height<=0||d.clientWidth<=0||d.clientHeight<=0;!M||!te||l("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:b,rectWidth:Math.round(p.width),rectHeight:Math.round(p.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:y.display,visibility:y.visibility,overflow:y.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},H=()=>{t.tornDown||(o!=null&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{o=null,Fe()}))},k=()=>{e=d=>{let p=E(d.error??d.message).slice(0,F);if(!p)return;let h=S(p);Ae({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:p,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},n=d=>{let p=E(d.reason).slice(0,F);if(!p)return;let h=S(p);Ae({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:p}})},window.addEventListener("error",e),window.addEventListener("unhandledrejection",n)},O=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let b=()=>{if(!(h instanceof Element))return;let y=h.tagName.toLowerCase(),M=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,te=y==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";l(te,{tagName:y,assetUrl:M,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${te}:${y}:${M??"unknown"}`)};h.addEventListener("error",b),s(()=>{h.removeEventListener("error",b)})}let p=document.fonts;p&&p.ready.then(()=>{if(t.tornDown)return;let h=Array.from(p).filter(b=>b.status==="error").map(b=>b.family).filter(b=>!!b).slice(0,10);h.length!==0&&l("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(p).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},ne=(d,p)=>{if(!d.timeline)return!1;let h=t.capturedTimeline;if(h&&h===d.timeline)return!1;let b=Math.max(0,t.currentTime||0),y=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(b,!1),y&&t.capturedTimeline.play()}catch(M){_("runtime.init.site7",M)}return Ae({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:p,previousTime:b,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},ee=null,z=!1,V=new Set,j=new WeakMap,Ce=()=>{t.tornDown||(ee!=null&&window.clearTimeout(ee),ee=window.setTimeout(()=>{if(t.tornDown)return;ee=null;let d=W();if(!d.timeline||!P(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){me()&&(Ge(),Me(!0));return}if(z)return;let h=L(t.capturedTimeline),b=d.selectedDurationSeconds??L(d.timeline);P(b)&&(!P(h)||b>=h+f)&&ne(d,"manual")&&(z=!0,Ae({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:b??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),Ge(),Me(!0))},x))},we=()=>{for(let d of V)d.removeEventListener("loadedmetadata",Ce),d.removeEventListener("durationchange",Ce);V.clear()},$e=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let p of d){if(V.has(p))continue;V.add(p);let h=Number.parseFloat(p.dataset.volume??"");Number.isFinite(h)&&(p.volume=Math.max(0,Math.min(1,h))),p.addEventListener("loadedmetadata",Ce),p.addEventListener("durationchange",Ce),p.preload!=="auto"&&(p.preload="auto"),p.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&p.load(),Le(p)}},Le=d=>{j.has(d)||ki(d,t.capturedTimeline,U(t.capturedTimeline,0),j)},We=()=>{let d=y=>{let M=y.closest("[data-composition-id]"),te=M?C(M,0):null,G=M?g(M,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:M,inheritedStart:te,inheritedDuration:G}},p=vi({shouldIncludeElement:y=>y.hasAttribute("data-start")||!!d(y).compositionRoot,resolveStartSeconds:y=>{let M=d(y);return A(y,M.inheritedStart??0)},resolveDurationSeconds:y=>{let M=d(y),te=A(y,M.inheritedStart??0),G=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0,ie=M.inheritedStart!=null&&M.inheritedDuration!=null&&M.inheritedDuration>0?Math.max(0,M.inheritedStart+M.inheritedDuration-te):null,xe=Number.isFinite(y.duration)&&y.duration>G?Math.max(0,y.duration-G):null;return xe!=null&&ie!=null?Math.min(xe,ie):xe??ie}});for(let y of p.mediaClips){let M=j.get(y.el);M&&(y.volumeKeyframes=M)}let h=t.mediaForceSyncNextTick;h&&(t.mediaForceSyncNextTick=!1),_i({clips:p.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||pe.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:h,onElementVolume:(y,M)=>pe.setElementVolume(y,M),onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ae({source:"hf-preview",type:"media-autoplay-blocked"}))}});let b=Array.from(document.querySelectorAll("[data-start]"));for(let y of b){if(!(y instanceof HTMLElement))continue;let M=y.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta")continue;let te=M==="video"||M==="audio"?A(y,0):C(y,0),G=g(y),ie=y.getAttribute("data-composition-id");if(ie){let de=(window.__timelines??{})[ie],ge=null;if(de&&typeof de.duration=="function"){let fe=Number(de.duration());Number.isFinite(fe)&&fe>0&&(ge=fe)}let Je=y.hasAttribute("data-composition-src")||y.hasAttribute("data-composition-file");G!=null&&G>0&&ge!=null&&!Je?G=Math.min(G,ge):(G==null||G<=0)&&ge!=null&&(G=ge)}let xe=G!=null&&G>0?te+G:Number.POSITIVE_INFINITY,Ie=t.currentTime>=te&&(Number.isFinite(xe)?t.currentTime<xe:!0);y.style.visibility=Ie?"visible":"hidden"}},Me=d=>{let p=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),h=Date.now();(d||p!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||h-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=p,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=h,Ae({source:"hf-preview",type:"state",frame:p,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Ge=()=>{X(),v(),q();let d=D();if(d){let h=B(d.getAttribute("data-width")),b=B(d.getAttribute("data-height")),y=h?parseInt(h,10):0,M=b?parseInt(b,10):0;y>0&&M>0&&Ae({source:"hf-preview",type:"stage-size",width:y,height:M})}me();let p=Wi({canonicalFps:t.canonicalFps});window.__clipManifest=p,Ae(p),H()},De=(d,p=0)=>{for(let h of t.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(b){_("runtime.init.site8",b)}if(d==="discover")try{h.seek({time:p})}catch(b){_("runtime.init.site9",b)}}};if(T)ni();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:B,onDiagnostic:({code:p,details:h})=>{Ae({source:"hf-preview",type:"diagnostic",code:p,details:h})}};Ao(d).then(()=>bo(d)).finally(()=>{T=!0,me(),window.__renderReady=!0,$e(),De("discover",t.currentTime),O(),ni(),Ge(),Me(!0)})}let Pt=Ri({postMessage:d=>Ae(d)});Pt.installPickerApi();let dn=d=>{let p=Number(d);!Number.isFinite(p)||p<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,p)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let h=document.querySelectorAll("video, audio");for(let b of h)if(b instanceof HTMLMediaElement)try{b.playbackRate=t.playbackRate}catch(y){_("runtime.init.site10",y)}},ce=Di({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:dn,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,p)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==p&&(t.mediaForceSyncNextTick=!0),t.isPlaying=p,We()},onStatePost:Me,onDeterministicSeek:d=>{for(let p of t.deterministicAdapters)try{p.seek({time:Number(d)||0})}catch(h){_("runtime.init.site11",h)}},onDeterministicPause:()=>De("pause"),onDeterministicPlay:()=>De("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>U(t.capturedTimeline,0)});window.__player=a(ce),window.__playerReady=!0,xi(Ae),dt("composition_loaded",{duration:ce.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=hi({onPlay:()=>{ce.play(),dt("composition_played",{time:ce.getTime()})},onPause:()=>{ce.pause(),dt("composition_paused",{time:ce.getTime()})},onSeek:(d,p)=>{let h=Math.max(0,d)/t.canonicalFps;ce.seek(h),dt("composition_seeked",{time:h})},onSetMuted:d=>{t.bridgeMuted=d;let p=d||t.mediaOutputMuted;pe.setMuted(p);let h=document.querySelectorAll("video, audio");for(let b of h)b instanceof HTMLMediaElement&&(b.muted=p)},onSetVolume:d=>{t.bridgeVolume=d,pe.setVolume(d);let p=document.querySelectorAll("video, audio");for(let h of p){if(!(h instanceof HTMLMediaElement))continue;let b=parseFloat(h.dataset.volume??""),y=Number.isFinite(b)?b:1;h.volume=y*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let p=d||t.bridgeMuted;pe.setMuted(p);let h=document.querySelectorAll("video, audio");for(let b of h)b instanceof HTMLMediaElement&&(b.muted=p)},onSetPlaybackRate:d=>{dn(d),t.transportClock&&t.transportClock.setRate(t.playbackRate),pe.setRate(t.playbackRate)},onTick:()=>{if(t.tornDown||!I.isPlaying())return;let d=I.now();if(t.currentTime=d,Ke(d),I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),De("pause"),We(),Me(!0)}},onEnablePickMode:()=>Pt.enablePickMode(),onDisablePickMode:()=>Pt.disablePickMode()}),me(),t.capturedTimeline&&(ce._timeline=t.capturedTimeline),window.__renderReady=!0,T&&setTimeout(()=>{let d=t.capturedTimeline;me()&&t.capturedTimeline!==d&&(ce._timeline=t.capturedTimeline),De("discover",t.currentTime),window.__renderReady=!0,Ge(),Me(!0)},0),t.deterministicAdapters=[Mi(),gi({resolveStartSeconds:d=>C(d,0)}),Si(),Ei(),wi(),Ni(),yi({getTimeline:()=>t.capturedTimeline})],Ci(),k(),$e(),De("discover");let I=new rn;t.transportClock=I;let pe=new on,di=!1;pe.init().then(d=>{di=d});let Wt=0,fn=!1,Zo=(d,p,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(p,!1):d.seek(p,!1)}catch(b){_(h,b)}},Xo=d=>{let p=window.__timelines??{},h=D()?.getAttribute("data-composition-id")??null;for(let[b,y]of Object.entries(p)){if(!y||b===h)continue;let M=document.querySelector(`[data-composition-id="${CSS.escape(b)}"]`);if(!M)continue;let te=C(M,0);if(!Number.isFinite(te))continue;let G=g(M,{includeAuthoredTimingAttrs:!0}),ie=L(y),xe=G!=null&&G>0?G:ie,Ie=Math.max(0,xe!=null&&xe>0?Math.min(xe,d-te):d-te);Zo(y,Ie,"runtime.init.transport.childTimeline")}},es=d=>{let p=window.__timelines??{};for(let h of Object.values(p))if(!(!h||h===d))try{h.play()}catch(b){_("runtime.init.activateSiblings",b)}},Ke=(d,p)=>{let h=t.capturedTimeline;if(h){p?.activateChildren&&es(h);try{typeof h.totalTime=="function"?h.totalTime(d,!1):h.seek(d,!1)}catch(b){_("runtime.init.transport.seek",b)}}else Xo(d);for(let b of t.deterministicAdapters)try{b.seek({time:d})}catch(y){_("runtime.init.transport.adapter",y)}},fi=()=>{if(!(t.tornDown||fn)){fn=!0;try{if(t.transportRafId=window.requestAnimationFrame(fi),Wt+=1,Wt%60===0&&!(I.isPlaying()&&t.capturedTimeline!=null&&I.now()<m)){let h=t.capturedTimeline;if(me()){t.capturedTimeline&&!ce._timeline&&(ce._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==h&&t.capturedTimeline.pause();let b=U(t.capturedTimeline,0);b>0&&I.setDuration(b),Ge()}}if(Wt%20===0&&Ge(),Wt%30===0&&$e(),t.capturedTimeline){let p=U(t.capturedTimeline,0);p>0&&I.setDuration(p)}if(I.isPlaying()&&!t.mediaOutputMuted)if(pe.isActive()&&pe.context){let p=pe.getTime();p>=0&&I.attachAudioSource({currentTimeSeconds:p})}else{let p=document.querySelectorAll("audio[data-start]"),h=!1;for(let b of p){if(!(b instanceof HTMLMediaElement)||!b.isConnected)continue;let y=Number.parseFloat(b.dataset.start??""),M=Number.parseFloat(b.dataset.duration??""),te=Number.isFinite(M)&&M>0?y+M:1/0,G=Number.parseFloat(b.dataset.playbackStart??b.dataset.mediaStart??"0")||0;if(Number.isFinite(y)&&t.currentTime>=y&&t.currentTime<te){b.paused?!b.error&&b.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:t.currentTime}),h=!0):(I.attachAudioSource({el:b,compositionStart:y,mediaStart:G}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(t.currentTime=d,Ke(d),I.isPlaying()&&I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),De("pause"),We(),Me(!0);return}I.isPlaying()&&We(),Me(!1)}finally{fn=!1}}},mi=d=>{let p=document.querySelectorAll("video, audio");for(let h of p){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let b=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(b))continue;let y=Number.parseFloat(h.dataset.duration??""),M=Number.isFinite(y)&&y>0?b+y:1/0;if(d<b||d>=M)continue;let te=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,G=d-b+te;if(G>=0)try{h.currentTime=G}catch{}}};if(ce.play=()=>{let d=t.capturedTimeline;if(I.isPlaying())return;let p=U(d,0);if(p>0)I.setDuration(p),I.reachedEnd()&&(I.seek(0),t.currentTime=0,Ke(0));else{let h=D(),b=Number(h?.getAttribute("data-duration")??0);b>0&&I.setDuration(b)}if(d&&d.pause(),!!I.play()){if(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,mi(I.now()),di){let h=pe.startGeneration(),b=document.querySelectorAll("audio[data-start]");for(let y of b){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let M=Number.parseFloat(y.dataset.start??"");if(!Number.isFinite(M))continue;let te=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0,G=Number.parseFloat(y.dataset.volume??""),ie=Number.isFinite(G)?G:1;pe.decodeAudioElement(y).then(xe=>{!xe||!I.isPlaying()||pe.schedulePlayback(y,xe,M,te,I.now(),ie*t.bridgeVolume,h,t.playbackRate)})}}De("play"),We(),Me(!0)}},ce.pause=()=>{if(!I.isPlaying())return;pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1,t.currentTime=I.now(),t.mediaForceSyncNextTick=!0,mi(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),De("pause"),We(),Me(!0)},ce.seek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);pe.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let b=t.capturedTimeline;b&&b.pause(),Ke(t.currentTime),De("pause"),We(),Me(!0)},ce.renderSeek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,Ke(t.currentTime,{activateChildren:!0}),We(),Me(!0)},ce.getTime=()=>I.now(),ce.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},ce.isPlaying=()=>I.isPlaying(),ce.setPlaybackRate=d=>{dn(d),I.setRate(t.playbackRate),pe.setRate(t.playbackRate)},t.capturedTimeline){let d=U(t.capturedTimeline,0);d>0&&I.setDuration(d),t.capturedTimeline.pause()}let pi=window.__player;if(pi){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let p of d)Object.defineProperty(pi,p,{get:()=>ce[p],set:h=>{ce[p]=h},configurable:!0})}t.transportRafId=window.requestAnimationFrame(fi),Ge(),Me(!0);let mn=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,pe.destroy(),ee!=null&&(window.clearTimeout(ee),ee=null),o!=null&&(window.cancelAnimationFrame(o),o=null),we(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),e&&(window.removeEventListener("error",e),e=null),n&&(window.removeEventListener("unhandledrejection",n),n=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),Pt.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(p){_("runtime.init.site12",p)}t.deterministicAdapters=[];for(let d of i.splice(0))try{d()}catch(p){_("runtime.init.site13",p)}for(let d of t.injectedCompStyles)try{d.remove()}catch(p){_("runtime.init.site14",p)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(p){_("runtime.init.site15",p)}t.injectedCompScripts=[],t.capturedTimeline=null,window.__hfRuntimeTeardown===mn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=mn,t.beforeUnloadHandler=mn,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var Co=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],ii=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Al(t){if(t<=255)return Co[t];let e=0,n=ii.length-1;for(;e<=n;){let i=e+n>>1,r=ii[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function El(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let c=0;c<e;){let u=t.charCodeAt(c),m=u,f=1;if(u>=55296&&u<=56319&&c+1<e){let F=t.charCodeAt(c+1);F>=56320&&F<=57343&&(m=(u-55296<<10)+(F-56320)+65536,f=2)}let x=Al(m);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let F=0;F<f;F++)n[c+F]=x;c+=f}if(!i)return null;let r=0;for(let c=0;c<e;c++){let u=n[c];if(u==="L"){r=0;break}if(u==="R"||u==="AL"){r=1;break}}let o=new Int8Array(e);for(let c=0;c<e;c++)o[c]=r;let s=r&1?"R":"L",l=s,a=l;for(let c=0;c<e;c++)n[c]==="NSM"?n[c]=a:a=n[c];a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="AL"?"AN":"EN":(u==="R"||u==="L"||u==="AL")&&(a=u)}for(let c=0;c<e;c++)n[c]==="AL"&&(n[c]="R");for(let c=1;c<e-1;c++)n[c]==="ES"&&n[c-1]==="EN"&&n[c+1]==="EN"&&(n[c]="EN"),n[c]==="CS"&&(n[c-1]==="EN"||n[c-1]==="AN")&&n[c+1]===n[c-1]&&(n[c]=n[c-1]);for(let c=0;c<e;c++){if(n[c]!=="EN")continue;let u;for(u=c-1;u>=0&&n[u]==="ET";u--)n[u]="EN";for(u=c+1;u<e&&n[u]==="ET";u++)n[u]="EN"}for(let c=0;c<e;c++){let u=n[c];(u==="WS"||u==="ES"||u==="ET"||u==="CS")&&(n[c]="ON")}a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="L"?"L":"EN":(u==="R"||u==="L")&&(a=u)}for(let c=0;c<e;c++){if(n[c]!=="ON")continue;let u=c+1;for(;u<e&&n[u]==="ON";)u++;let m=c>0?n[c-1]:l,f=u<e?n[u]:l,x=m!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let E=c;E<u;E++)n[E]=x;c=u-1}for(let c=0;c<e;c++)n[c]==="ON"&&(n[c]=s);for(let c=0;c<e;c++){let u=n[c];(o[c]&1)===0?u==="R"?o[c]++:(u==="AN"||u==="EN")&&(o[c]+=2):(u==="L"||u==="AN"||u==="EN")&&o[c]++}return o}function Mo(t,e){let n=El(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Fl=/[ \\t\\n\\r\\f]+/g,wl=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Nl(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Cl(t){if(!wl.test(t))return t;let e=t.replace(Fl," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function Ml(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var ri=null,Tl;function kl(){return ri===null&&(ri=new Intl.Segmenter(Tl,{granularity:"word"})),ri}var vl=/\\p{Script=Arabic}/u,sn=/\\p{M}/u,Bo=/\\p{Nd}/u;function To(t){return vl.test(t)}function ko(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function Re(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(ko(r))return!0;e++;continue}}if(ko(n))return!0}}return!1}function _l(t){let e=un(t);return e!==null&&(ln.has(e)||ze.has(e))}var Rl=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function Ll(t){return Re(t)}function Dl(t){let e=un(t);return e!==null&&Rl.has(e)}function an(t){return!_l(t)&&!Dl(t)}var ln=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),Ot=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),si=new Set(["\'","\\u2019"]),ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),Bl=new Set([":",".","\\u060C","\\u061B"]),Il=new Set(["\\u104F"]),Ol=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function Pl(t){if(ai(t))return!0;let e=!1;for(let n of t){if(ze.has(n)){e=!0;continue}if(!(e&&sn.test(n)))return!1}return e}function Wl(t){for(let e of t)if(!ln.has(e)&&!ze.has(e))return!1;return t.length>0}function Hl(t){if(ai(t))return!0;for(let e of t)if(!Ot.has(e)&&!si.has(e)&&!sn.test(e))return!1;return t.length>0}function ai(t){let e=!1;for(let n of t)if(!(n==="\\\\"||sn.test(n))){if(Ot.has(n)||ze.has(n)||si.has(n)){e=!0;continue}return!1}return e}function Io(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function un(t){if(t.length===0)return null;let e=Io(t,t.length);return t.slice(e)}function ql(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(sn.test(i)){n--;continue}if(Ot.has(i)||si.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function Vl(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function vo(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let l=r.repeat(s);return t[i]=l,l}function _o(t,e){return t&&e!==null&&Bl.has(e)}function Ul(t){let e=un(t);return e!==null&&Il.has(e)}function zl(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function cn(t){let e=t.length;for(;e>0;){let n=Io(t,e),i=t.slice(n,e);if(Ol.has(i))return!0;if(!ze.has(i))return!1;e=n}return!1}function jl(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var $l=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Te(t){return t.length===1?t[0]:t.join("")}function Gl(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),Te(n)}function Kl(t,e,n,i){if(!$l.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],l=n,a=!1,c=0;for(let u of t){let m=jl(u,i),f=m==="text"&&e;if(o!==null&&m===o&&f===a){s.push(u),c+=u.length;continue}o!==null&&r.push({text:Te(s),isWordLike:a,kind:o,start:l}),o=m,s=[u],l=n+c,a=f,c+=u.length}return o!==null&&r.push({text:Te(s),isWordLike:a,kind:o,start:l}),r}function oi(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var Jl=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Ql(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:Jl.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function Yl(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function Zl(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!Ql(t,s))continue;let l=[e[s]],a=s+1;for(;a<t.len&&!oi(i[a]);){l.push(e[a]),n[s]=!0;let c=e[a].includes("?");if(i[a]="text",e[a]="",a++,c)break}e[s]=Te(l)}let o=0;for(let s=0;s<e.length;s++){let l=e[s];l.length!==0&&(o!==s&&(e[o]=l,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function Xl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!Yl(s))continue;let l=o+1;if(l>=t.len||oi(t.kinds[l]))continue;let a=[],c=t.starts[l],u=l;for(;u<t.len&&!oi(t.kinds[u]);)a.push(t.texts[u]),u++;a.length>0&&(e.push(Te(a)),n.push(!0),i.push("text"),r.push(c),o=u-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var eu=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Ro=/^[A-Za-z0-9_]+[,:;]*$/,Lo=/[,:;]+$/;function Oo(t){for(let e of t)if(Bo.test(e))return!0;return!1}function It(t){if(t.length===0)return!1;for(let e of t)if(!(Bo.test(e)||eu.has(e)))return!1;return!0}function tu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o];if(l==="text"&&It(s)&&Oo(s)){let a=[s],c=o+1;for(;c<t.len&&t.kinds[c]==="text"&&It(t.texts[c]);)a.push(t.texts[c]),c++;e.push(Te(a)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=c-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function nu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o],a=t.isWordLike[o];if(l==="text"&&a&&Ro.test(s)){let c=[s],u=Lo.test(s),m=o+1;for(;u&&m<t.len&&t.kinds[m]==="text"&&t.isWordLike[m]&&Ro.test(t.texts[m]);){let f=t.texts[m];c.push(f),u=Lo.test(f),m++}e.push(Te(c)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=m-1;continue}e.push(s),n.push(a),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function iu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let l=s.split("-"),a=l.length>1;for(let c=0;c<l.length;c++){let u=l[c];if(!a)break;(u.length===0||!Oo(u)||!It(u))&&(a=!1)}if(a){let c=0;for(let u=0;u<l.length;u++){let m=l[u],f=u<l.length-1?`${m}-`:m;e.push(f),n.push(!0),i.push("text"),r.push(t.starts[o]+c),c+=f.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function ru(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],l=t.isWordLike[o],a=t.kinds[o],c=t.starts[o];if(a==="glue"){let u=[s[0]],m=c;for(o++;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let f=Te(u);if(o<t.len&&t.kinds[o]==="text")s[0]=f,s.push(t.texts[o]),l=t.isWordLike[o],a="text",c=m,o++;else{e.push(f),n.push(!1),i.push("glue"),r.push(m);continue}}else o++;if(a==="text")for(;o<t.len&&t.kinds[o]==="glue";){let u=[];for(;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let m=Te(u);if(o<t.len&&t.kinds[o]==="text"){s.push(m,t.texts[o]),l=l||t.isWordLike[o],o++;continue}s.push(m)}e.push(Te(s)),n.push(l),i.push(a),r.push(c)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function ou(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Re(e[o])||!Re(e[o+1]))continue;let s=ql(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Do(t,e,n){let i=kl(),r=0,o=[],s=[],l=[],a=[],c=[],u=[],m=[],f=[],x=[],F=[],E=[],S=[];for(let C of i.segment(t))for(let g of Kl(C.segment,C.isWordLike??!1,C.index,n)){let le=function(){u[R]!==null&&(s[R]=[vo(o,u,m,R)],u[R]=null),s[R].push(g.text),l[R]=l[R]||g.isWordLike,f[R]=f[R]||w,x[R]=x[R]||T,F[R]=P,E[R]=J,S[R]=_o(x[R],L)},A=g.kind==="text",N=Vl(g.text,g.isWordLike,g.kind),w=Re(g.text),T=To(g.text),L=un(g.text),P=cn(g.text),J=Ul(g.text),R=r-1;e.carryCJKAfterClosingQuote&&A&&r>0&&a[R]==="text"&&w&&f[R]&&F[R]||A&&r>0&&a[R]==="text"&&Wl(g.text)&&f[R]||A&&r>0&&a[R]==="text"&&E[R]?le():A&&r>0&&a[R]==="text"&&g.isWordLike&&T&&S[R]?(le(),l[R]=!0):N!==null&&r>0&&a[R]==="text"&&u[R]===N?m[R]=(m[R]??1)+1:A&&!g.isWordLike&&r>0&&a[R]==="text"&&(Pl(g.text)||g.text==="-"&&l[R])?le():(o[r]=g.text,s[r]=[g.text],l[r]=g.isWordLike,a[r]=g.kind,c[r]=g.start,u[r]=N,m[r]=N===null?0:1,f[r]=w,x[r]=T,F[r]=P,E[r]=J,S[r]=_o(T,L),r++)}for(let C=0;C<r;C++){if(u[C]!==null){o[C]=vo(o,u,m,C);continue}o[C]=Te(s[C])}for(let C=1;C<r;C++)a[C]==="text"&&!l[C]&&ai(o[C])&&a[C-1]==="text"&&(o[C-1]+=o[C],l[C-1]=l[C-1]||l[C],o[C]="");let B=Array.from({length:r},()=>null),D=-1;for(let C=r-1;C>=0;C--){let g=o[C];if(g.length!==0){if(a[C]==="text"&&!l[C]&&Hl(g)&&D>=0&&a[D]==="text"){let A=B[D]??[];A.push(g),B[D]=A,c[D]=c[C],o[C]="";continue}D=C}}for(let C=0;C<r;C++){let g=B[C];g!=null&&(o[C]=Gl(g,o[C]))}let v=0;for(let C=0;C<r;C++){let g=o[C];g.length!==0&&(v!==C&&(o[v]=g,l[v]=l[C],a[v]=a[C],c[v]=c[C]),v++)}o.length=v,l.length=v,a.length=v,c.length=v;let X=ru({len:v,texts:o,isWordLike:l,kinds:a,starts:c}),q=ou(nu(iu(tu(Xl(Zl(X))))));for(let C=0;C<q.len-1;C++){let g=zl(q.texts[C]);g!==null&&(q.kinds[C]!=="space"&&q.kinds[C]!=="preserved-space"||q.kinds[C+1]!=="text"||!To(q.texts[C+1])||(q.texts[C]=g.space,q.isWordLike[C]=!1,q.kinds[C]=q.kinds[C]==="preserved-space"?"preserved-space":"space",q.texts[C+1]=g.marks+q.texts[C+1],q.starts[C+1]=q.starts[C]+g.space.length))}return q}function su(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function au(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,l=0,a=!1,c=!1;function u(){o!==null&&(e.push(Te(o)),n.push(s),i.push("text"),r.push(l),o=null)}for(let m=0;m<t.len;m++){let f=t.texts[m],x=t.kinds[m],F=t.isWordLike[m],E=t.starts[m];if(x==="text"){let S=Ll(f),B=an(f);if(o!==null&&a&&c){o.push(f),s=s||F,a=a||S,c=B;continue}u(),o=[f],s=F,l=E,a=S,c=B;continue}u(),e.push(f),n.push(F),i.push(x),r.push(E)}return u(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Po(t,e,n="normal",i="normal"){let r=Nl(n),o=r.mode==="pre-wrap"?Ml(t):Cl(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?au(Do(o,e,r)):Do(o,e,r);return{normalized:o,chunks:su(s,r),...s}}var at=null,Wo=new Map,lt=null,lu=96,uu=/\\p{Emoji_Presentation}/u,cu=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,li=null,Ho=new Map;function ui(){if(at!==null)return at;if(typeof OffscreenCanvas<"u")return at=new OffscreenCanvas(1,1).getContext("2d"),at;if(typeof document<"u")return at=document.createElement("canvas").getContext("2d"),at;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function du(t){let e=Wo.get(t);return e||(e=new Map,Wo.set(t,e)),e}function Pe(t,e){let n=e.get(t);return n===void 0&&(n={width:ui().measureText(t).width,containsCJK:Re(t)},e.set(t,n)),n}function ut(){if(lt!==null)return lt;if(typeof navigator>"u")return lt={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},lt;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return lt={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},lt}function fu(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function qo(){return li===null&&(li=new Intl.Segmenter(void 0,{granularity:"grapheme"})),li}function mu(t){return uu.test(t)||t.includes("\\uFE0F")}function Vo(t){return cu.test(t)}function pu(t,e){let n=Ho.get(t);if(n!==void 0)return n;let i=ui();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Ho.set(t,n),n}function hu(t){let e=0,n=qo();for(let i of n.segment(t))mu(i.segment)&&e++;return e}function xu(t,e){return e.emojiCount===void 0&&(e.emojiCount=hu(t)),e.emojiCount}function je(t,e,n){return n===0?e.width:e.width-xu(t,e)*n}function Uo(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=qo(),s=[];for(let u of o.segment(t))s.push(u.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let u=[];for(let m of s){let f=Pe(m,n);u.push(je(m,f,i))}return e.breakableFitAdvances=u,e.breakableFitAdvances}if(r==="pair-context"||s.length>lu){let u=[],m=null,f=0;for(let x of s){let F=Pe(x,n),E=je(x,F,i);if(m===null)u.push(E);else{let S=m+x,B=Pe(S,n);u.push(je(S,B,i)-f)}m=x,f=E}return e.breakableFitAdvances=u,e.breakableFitAdvances}let l=[],a="",c=0;for(let u of s){a+=u;let m=Pe(a,n),f=je(a,m,i);l.push(f-c),c=f}return e.breakableFitAdvances=l,e.breakableFitAdvances}function zo(t,e){let n=ui();n.font=t;let i=du(t),r=fu(t),o=e?pu(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function gu(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function yu(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function Su(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let l=s+t[o];if((o+1<t.length?l+r:l)>n+i)break;s=l,o++}return{fitCount:o,fittedWidth:s}}function jo(t,e){return t.simpleLineWalkFastPath?$o(t,e):Go(t,e)}function $o(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let l=ut().lineFitEpsilon,a=e+l,c=0,u=0,m=!1,f=0,x=0,F=0,E=0,S=-1,B=0;function D(){S=-1,B=0}function v(N=F,w=E,T=u){c++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:N,endGraphemeIndex:w,width:T}),u=0,m=!1,D()}function X(N,w){m=!0,f=N,x=0,F=N+1,E=0,u=w}function q(N,w,T){m=!0,f=N,x=w,F=N,E=w+1,u=T}function C(N,w){if(!m){X(N,w);return}u+=w,F=N+1,E=0}function g(N,w){let T=o[N];for(let L=w;L<T.length;L++){let P=T[L];m?u+P>a?(v(),q(N,L,P)):(u+=P,F=N,E=L+1):q(N,L,P)}m&&F===N&&E===T.length&&(F=N+1,E=0)}let A=0;for(;A<i.length&&!(!m&&(A=gu(t,A),A>=i.length));){let N=i[A],w=r[A],T=w==="space"||w==="preserved-space"||w==="tab"||w==="zero-width-break"||w==="soft-hyphen";if(!m){N>e&&o[A]!==null?g(A,0):X(A,N),T&&(S=A+1,B=u-N),A++;continue}if(u+N>a){if(T){C(A,N),v(A+1,0,u-N),A++;continue}if(S>=0){if(F>S||F===S&&E>0){v();continue}v(S,0,B);continue}if(N>e&&o[A]!==null){v(),g(A,0),A++;continue}v();continue}C(A,N),T&&(S=A+1,B=u-N),A++}return m&&v(),c}function Go(t,e,n){if(t.simpleLineWalkFastPath)return $o(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:l,discretionaryHyphenWidth:a,tabStopAdvance:c,chunks:u}=t;if(i.length===0||u.length===0)return 0;let m=ut(),f=m.lineFitEpsilon,x=e+f,F=0,E=0,S=!1,B=0,D=0,v=0,X=0,q=-1,C=0,g=0,A=null;function N(){q=-1,C=0,g=0,A=null}function w($=v,U=X,W=E){F++,n?.({startSegmentIndex:B,startGraphemeIndex:D,endSegmentIndex:$,endGraphemeIndex:U,width:W}),E=0,S=!1,N()}function T($,U){S=!0,B=$,D=0,v=$+1,X=0,E=U}function L($,U,W){S=!0,B=$,D=U,v=$,X=U+1,E=W}function P($,U){if(!S){T($,U);return}E+=U,v=$+1,X=0}function J($,U,W,Y){if(!U)return;let me=$==="tab"?0:r[W],Fe=$==="tab"?Y:o[W];q=W+1,C=E-Y+me,g=E-Y+Fe,A=$}function R($,U){let W=l[$];for(let Y=U;Y<W.length;Y++){let me=W[Y];S?E+me>x?(w(),L($,Y,me)):(E+=me,v=$,X=Y+1):L($,Y,me)}S&&v===$&&X===W.length&&(v=$+1,X=0)}function le($){if(A!=="soft-hyphen")return!1;let U=l[$];if(U==null)return!1;let{fitCount:W,fittedWidth:Y}=Su(U,E,e,f,a);return W===0?!1:(E=Y,v=$,X=W,N(),W===U.length?(v=$+1,X=0,!0):(w($,W,Y+a),R($,W),!0))}function Se($){F++,n?.({startSegmentIndex:$.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:$.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),N()}for(let $=0;$<u.length;$++){let U=u[$];if(U.startSegmentIndex===U.endSegmentIndex){Se(U);continue}S=!1,E=0,B=U.startSegmentIndex,D=0,v=U.startSegmentIndex,X=0,N();let W=U.startSegmentIndex;for(;W<U.endSegmentIndex;){let Y=s[W],me=Y==="space"||Y==="preserved-space"||Y==="tab"||Y==="zero-width-break"||Y==="soft-hyphen",Fe=Y==="tab"?yu(E,c):i[W];if(Y==="soft-hyphen"){S&&(v=W+1,X=0,q=W+1,C=E+a,g=E+a,A=Y),W++;continue}if(!S){Fe>e&&l[W]!==null?R(W,0):T(W,Fe),J(Y,me,W,Fe),W++;continue}if(E+Fe>x){let k=E+(Y==="tab"?0:r[W]),O=E+(Y==="tab"?Fe:o[W]);if(A==="soft-hyphen"&&m.preferEarlySoftHyphenBreak&&C<=x){w(q,0,g);continue}if(A==="soft-hyphen"&&le(W)){W++;continue}if(me&&k<=x){P(W,Fe),w(W+1,0,O),W++;continue}if(q>=0&&C<=x){if(v>q||v===q&&X>0){w();continue}let ne=q;w(ne,0,g),W=ne;continue}if(Fe>e&&l[W]!==null){w(),R(W,0),W++;continue}w();continue}P(W,Fe),J(Y,me,W,Fe),W++}if(S){let Y=q===U.consumedEndSegmentIndex?g:E;w(U.consumedEndSegmentIndex,0,Y)}}return F}var ci=null;function bu(){return ci===null&&(ci=new Intl.Segmenter(void 0,{granularity:"grapheme"})),ci}function Au(t){return t?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function Eu(t,e){let n=[],i=[],r=0,o=!1,s=!1,l=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,l=!1)}function c(m,f,x){i=[m],r=f,o=x,s=cn(m),l=Ot.has(m)}function u(m,f){i.push(m),o=o||f;let x=cn(m);m.length===1&&ze.has(m)?s=s||x:s=x,l=!1}for(let m of bu().segment(t)){let f=m.segment,x=Re(f);if(i.length===0){c(f,m.index,x);continue}if(l||ln.has(f)||ze.has(f)||e.carryCJKAfterClosingQuote&&x&&s){u(f,x);continue}if(!o&&!x){u(f,x);continue}a(),c(f,m.index,x)}return a(),n}function Fu(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=Re(t[0].text),o=an(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let l=1;l<t.length;l++){let a=t[l],c=Re(a.text),u=an(a.text);if(r&&o){n.push(a.text),r=r||c,o=u;continue}s(),n=[a.text],i=a.start,r=c,o=u}return s(),e}function wu(t,e,n,i){let r=ut(),{cache:o,emojiCorrection:s}=zo(e,Vo(t.normalized)),l=je("-",Pe("-",o),s),c=je(" ",Pe(" ",o),s)*8;if(t.len===0)return Au(n);let u=[],m=[],f=[],x=[],F=t.chunks.length<=1,E=n?[]:null,S=[],B=n?[]:null,D=Array.from({length:t.len});function v(g,A,N,w,T,L,P){T!=="text"&&T!=="space"&&T!=="zero-width-break"&&(F=!1),u.push(A),m.push(N),f.push(w),x.push(T),E?.push(L),S.push(P),B!==null&&B.push(g)}function X(g,A,N,w,T){let L=Pe(g,o),P=je(g,L,s),J=A==="space"||A==="preserved-space"||A==="zero-width-break"?0:P,R=A==="space"||A==="zero-width-break"?0:P;if(T&&w&&g.length>1){let le="sum-graphemes";It(g)?le="pair-context":r.preferPrefixWidthsForBreakableRuns&&(le="segment-prefixes");let Se=Uo(g,L,o,s,le);v(g,P,J,R,A,N,Se);return}v(g,P,J,R,A,N,null)}for(let g=0;g<t.len;g++){D[g]=u.length;let A=t.texts[g],N=t.isWordLike[g],w=t.kinds[g],T=t.starts[g];if(w==="soft-hyphen"){v(A,0,l,l,w,T,null);continue}if(w==="hard-break"){v(A,0,0,0,w,T,null);continue}if(w==="tab"){v(A,0,0,0,w,T,null);continue}let L=Pe(A,o);if(w==="text"&&L.containsCJK){let P=Eu(A,r),J=i==="keep-all"?Fu(P):P;for(let R=0;R<J.length;R++){let le=J[R];X(le.text,"text",T+le.start,N,i==="keep-all"||!Re(le.text))}continue}X(A,w,T,N,!0)}let q=Nu(t.chunks,D,u.length),C=E===null?null:Mo(t.normalized,E);return B!==null?{widths:u,lineEndFitAdvances:m,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q,segments:B}:{widths:u,lineEndFitAdvances:m,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q}}function Nu(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,l=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:l,consumedEndSegmentIndex:a})}return i}function Cu(t,e,n,i){let r=i?.wordBreak??"normal",o=Po(t,ut(),i?.whiteSpace,r);return wu(o,e,n,r)}function Ko(t,e,n){return Cu(t,e,!1,n)}function Jo(t,e,n){let i=jo(t,e);return{lineCount:i,height:i*n}}var Mu={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Qo(t,e){let n={...Mu,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Ko(t,o),{lineCount:l}=Jo(s,n.maxWidth,r*i);if(l<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Qo,getVariables:ho};function Yo(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,No())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Yo,{once:!0}):Yo();})();\n';
39219
39237
  }
39220
39238
  });
39221
39239
 
@@ -45281,6 +45299,22 @@ var init_safePath = __esm({
45281
45299
  });
45282
45300
 
45283
45301
  // ../core/src/studio-api/routes/projects.ts
45302
+ import { readFile } from "fs/promises";
45303
+ import { join as join11 } from "path";
45304
+ async function filterCompositionFiles(projectDir, files) {
45305
+ const htmlFiles = files.filter((f3) => f3.endsWith(".html"));
45306
+ const checks = await Promise.all(
45307
+ htmlFiles.map(async (f3) => {
45308
+ try {
45309
+ const content = await readFile(join11(projectDir, f3), "utf-8");
45310
+ return COMPOSITION_ID_RE.test(content);
45311
+ } catch {
45312
+ return false;
45313
+ }
45314
+ })
45315
+ );
45316
+ return htmlFiles.filter((_, i2) => checks[i2]);
45317
+ }
45284
45318
  function registerProjectRoutes(api, adapter2) {
45285
45319
  api.get("/projects", async (c3) => {
45286
45320
  const projects = await adapter2.listProjects();
@@ -45299,13 +45333,16 @@ function registerProjectRoutes(api, adapter2) {
45299
45333
  const project = await adapter2.resolveProject(c3.req.param("id"));
45300
45334
  if (!project) return c3.json({ error: "not found" }, 404);
45301
45335
  const files = walkDir(project.dir);
45302
- return c3.json({ id: project.id, dir: project.dir, title: project.title, files });
45336
+ const compositions = await filterCompositionFiles(project.dir, files);
45337
+ return c3.json({ id: project.id, dir: project.dir, title: project.title, files, compositions });
45303
45338
  });
45304
45339
  }
45340
+ var COMPOSITION_ID_RE;
45305
45341
  var init_projects = __esm({
45306
45342
  "../core/src/studio-api/routes/projects.ts"() {
45307
45343
  "use strict";
45308
45344
  init_safePath();
45345
+ COMPOSITION_ID_RE = /data-composition-id\s*=/;
45309
45346
  }
45310
45347
  });
45311
45348
 
@@ -45357,7 +45394,7 @@ var init_mime = __esm({
45357
45394
  // ../core/src/studio-api/helpers/waveform.ts
45358
45395
  import { spawn as spawn3 } from "child_process";
45359
45396
  import { existsSync as existsSync10, writeFileSync as writeFileSync6, mkdirSync as mkdirSync5 } from "fs";
45360
- import { join as join11 } from "path";
45397
+ import { join as join12 } from "path";
45361
45398
  function buildWaveformCacheKey(assetPath) {
45362
45399
  return `${WAVEFORM_CACHE_VERSION}_${assetPath.replace(/[/\\]/g, "_")}.json`;
45363
45400
  }
@@ -45417,10 +45454,10 @@ function decodeAudioPeaks(audioPath) {
45417
45454
  });
45418
45455
  }
45419
45456
  async function generateWaveformCache(projectDir, assetPath) {
45420
- const audioPath = join11(projectDir, assetPath);
45457
+ const audioPath = join12(projectDir, assetPath);
45421
45458
  if (!existsSync10(audioPath)) return;
45422
- const cacheDir = join11(projectDir, ".waveform-cache");
45423
- const cachePath2 = join11(cacheDir, buildWaveformCacheKey(assetPath));
45459
+ const cacheDir = join12(projectDir, ".waveform-cache");
45460
+ const cachePath2 = join12(cacheDir, buildWaveformCacheKey(assetPath));
45424
45461
  if (existsSync10(cachePath2)) return;
45425
45462
  const peaks = await decodeAudioPeaks(audioPath);
45426
45463
  mkdirSync5(cacheDir, { recursive: true });
@@ -45440,7 +45477,7 @@ var init_waveform = __esm({
45440
45477
  import { spawnSync } from "child_process";
45441
45478
  import { mkdtempSync, rmSync as rmSync2, writeFileSync as writeFileSync7 } from "fs";
45442
45479
  import { tmpdir as tmpdir2 } from "os";
45443
- import { basename, join as join12 } from "path";
45480
+ import { basename, join as join13 } from "path";
45444
45481
  function validateUploadedMedia(filePath, runner = spawnSync) {
45445
45482
  const isVideo2 = VIDEO_EXT.test(filePath);
45446
45483
  const isAudio = AUDIO_EXT.test(filePath);
@@ -45479,8 +45516,8 @@ function validateUploadedMedia(filePath, runner = spawnSync) {
45479
45516
  }
45480
45517
  }
45481
45518
  function validateUploadedMediaBuffer(fileName, buffer, runner = spawnSync) {
45482
- const tempDir = mkdtempSync(join12(tmpdir2(), "hyperframes-upload-"));
45483
- const tempPath = join12(tempDir, basename(fileName));
45519
+ const tempDir = mkdtempSync(join13(tmpdir2(), "hyperframes-upload-"));
45520
+ const tempPath = join13(tempDir, basename(fileName));
45484
45521
  try {
45485
45522
  writeFileSync7(tempPath, buffer);
45486
45523
  return validateUploadedMedia(tempPath, runner);
@@ -58295,7 +58332,7 @@ import {
58295
58332
  renameSync as renameSync2,
58296
58333
  readdirSync as readdirSync4
58297
58334
  } from "fs";
58298
- import { resolve as resolve9, dirname as dirname6, join as join13 } from "path";
58335
+ import { resolve as resolve9, dirname as dirname6, join as join14 } from "path";
58299
58336
  async function resolveProjectPath(c3, adapter2, pathPrefix, opts) {
58300
58337
  const id = c3.req.param("id");
58301
58338
  const project = await adapter2.resolveProject(id);
@@ -58355,7 +58392,7 @@ function generateCopyPath(projectDir, originalPath) {
58355
58392
  function walkFiles(dir, filter2) {
58356
58393
  const results = [];
58357
58394
  for (const entry of readdirSync4(dir, { withFileTypes: true })) {
58358
- const full = join13(dir, entry.name);
58395
+ const full = join14(dir, entry.name);
58359
58396
  if (entry.isDirectory()) {
58360
58397
  if (entry.name === "node_modules" || entry.name === ".thumbnails" || entry.name === "renders")
58361
58398
  continue;
@@ -58592,7 +58629,7 @@ function registerFileRoutes(api, adapter2) {
58592
58629
  continue;
58593
58630
  }
58594
58631
  writeFileSync8(finalPath, buffer);
58595
- const relativePath = subDir ? join13(subDir, finalName) : finalName;
58632
+ const relativePath = subDir ? join14(subDir, finalName) : finalName;
58596
58633
  uploaded.push(relativePath);
58597
58634
  if (isAudioFile2(finalName)) {
58598
58635
  generateWaveformCache(project.dir, relativePath).catch(() => {
@@ -58641,24 +58678,34 @@ function registerFileRoutes(api, adapter2) {
58641
58678
  addAnimationToScript: addAnimationToScript2,
58642
58679
  removeAnimationFromScript: removeAnimationFromScript2
58643
58680
  } = await loadGsapParser();
58681
+ function requireAnimation(scriptText, animationId) {
58682
+ const parsed = parseGsapScript2(scriptText);
58683
+ const anim = parsed.animations.find((a) => a.id === animationId);
58684
+ if (!anim) return { err: c3.json({ error: "animation not found" }, 404) };
58685
+ return { anim };
58686
+ }
58687
+ function requireFromToAnimation(scriptText, animationId) {
58688
+ const result = requireAnimation(scriptText, animationId);
58689
+ if ("err" in result) return result;
58690
+ if (result.anim.method !== "fromTo")
58691
+ return { err: c3.json({ error: "animation is not a fromTo" }, 400) };
58692
+ return result;
58693
+ }
58644
58694
  let newScript;
58645
58695
  switch (body.type) {
58646
58696
  case "update-property": {
58647
- const parsed = parseGsapScript2(block.scriptText);
58648
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58649
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58697
+ const r2 = requireAnimation(block.scriptText, body.animationId);
58698
+ if ("err" in r2) return r2.err;
58650
58699
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58651
- properties: { ...anim.properties, [body.property]: body.value }
58700
+ properties: { ...r2.anim.properties, [body.property]: body.value }
58652
58701
  });
58653
58702
  break;
58654
58703
  }
58655
58704
  case "update-from-property": {
58656
- const parsed = parseGsapScript2(block.scriptText);
58657
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58658
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58659
- if (anim.method !== "fromTo") return c3.json({ error: "animation is not a fromTo" }, 400);
58705
+ const r2 = requireFromToAnimation(block.scriptText, body.animationId);
58706
+ if ("err" in r2) return r2.err;
58660
58707
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58661
- fromProperties: { ...anim.fromProperties ?? {}, [body.property]: body.value }
58708
+ fromProperties: { ...r2.anim.fromProperties ?? {}, [body.property]: body.value }
58662
58709
  });
58663
58710
  break;
58664
58711
  }
@@ -58667,6 +58714,9 @@ function registerFileRoutes(api, adapter2) {
58667
58714
  break;
58668
58715
  }
58669
58716
  case "add": {
58717
+ if (body.fromProperties && body.method !== "fromTo") {
58718
+ return c3.json({ error: "fromProperties is only valid for method=fromTo" }, 400);
58719
+ }
58670
58720
  const result = addAnimationToScript2(block.scriptText, {
58671
58721
  targetSelector: body.targetSelector,
58672
58722
  method: body.method,
@@ -58684,29 +58734,25 @@ function registerFileRoutes(api, adapter2) {
58684
58734
  break;
58685
58735
  }
58686
58736
  case "add-property": {
58687
- const parsed = parseGsapScript2(block.scriptText);
58688
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58689
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58737
+ const r2 = requireAnimation(block.scriptText, body.animationId);
58738
+ if ("err" in r2) return r2.err;
58690
58739
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58691
- properties: { ...anim.properties, [body.property]: body.defaultValue }
58740
+ properties: { ...r2.anim.properties, [body.property]: body.defaultValue }
58692
58741
  });
58693
58742
  break;
58694
58743
  }
58695
58744
  case "add-from-property": {
58696
- const parsed = parseGsapScript2(block.scriptText);
58697
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58698
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58699
- if (anim.method !== "fromTo") return c3.json({ error: "animation is not a fromTo" }, 400);
58745
+ const r2 = requireFromToAnimation(block.scriptText, body.animationId);
58746
+ if ("err" in r2) return r2.err;
58700
58747
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58701
- fromProperties: { ...anim.fromProperties ?? {}, [body.property]: body.defaultValue }
58748
+ fromProperties: { ...r2.anim.fromProperties ?? {}, [body.property]: body.defaultValue }
58702
58749
  });
58703
58750
  break;
58704
58751
  }
58705
58752
  case "remove-property": {
58706
- const parsed = parseGsapScript2(block.scriptText);
58707
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58708
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58709
- const filtered = { ...anim.properties };
58753
+ const r2 = requireAnimation(block.scriptText, body.animationId);
58754
+ if ("err" in r2) return r2.err;
58755
+ const filtered = { ...r2.anim.properties };
58710
58756
  delete filtered[body.property];
58711
58757
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58712
58758
  properties: filtered
@@ -58714,11 +58760,9 @@ function registerFileRoutes(api, adapter2) {
58714
58760
  break;
58715
58761
  }
58716
58762
  case "remove-from-property": {
58717
- const parsed = parseGsapScript2(block.scriptText);
58718
- const anim = parsed.animations.find((a) => a.id === body.animationId);
58719
- if (!anim) return c3.json({ error: "animation not found" }, 404);
58720
- if (anim.method !== "fromTo") return c3.json({ error: "animation is not a fromTo" }, 400);
58721
- const filtered = { ...anim.fromProperties ?? {} };
58763
+ const r2 = requireFromToAnimation(block.scriptText, body.animationId);
58764
+ if ("err" in r2) return r2.err;
58765
+ const filtered = { ...r2.anim.fromProperties ?? {} };
58722
58766
  delete filtered[body.property];
58723
58767
  newScript = updateAnimationInScript2(block.scriptText, body.animationId, {
58724
58768
  fromProperties: filtered
@@ -58934,7 +58978,7 @@ var init_htmlDocument = __esm({
58934
58978
 
58935
58979
  // ../core/src/studio-api/helpers/subComposition.ts
58936
58980
  import { existsSync as existsSync12, readFileSync as readFileSync13 } from "fs";
58937
- import { join as join14 } from "path";
58981
+ import { join as join15 } from "path";
58938
58982
  function isFullHtmlDocument(html) {
58939
58983
  return /^\s*(?:<!doctype\s|<html[\s>])/i.test(html);
58940
58984
  }
@@ -58981,7 +59025,7 @@ function extractElementAttrs(el) {
58981
59025
  return parts.join(" ");
58982
59026
  }
58983
59027
  function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref) {
58984
- const compFile = join14(projectDir, compPath);
59028
+ const compFile = join15(projectDir, compPath);
58985
59029
  if (!existsSync12(compFile)) return null;
58986
59030
  const rawComp = readFileSync13(compFile, "utf-8");
58987
59031
  let compHeadContent = "";
@@ -59009,7 +59053,7 @@ function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref) {
59009
59053
  rewriteRelativePaths(contentDoc, compPath);
59010
59054
  rewrittenContent = contentDoc.body.innerHTML || rawComp;
59011
59055
  }
59012
- const indexPath = join14(projectDir, "index.html");
59056
+ const indexPath = join15(projectDir, "index.html");
59013
59057
  let headContent = "";
59014
59058
  if (existsSync12(indexPath)) {
59015
59059
  const indexHtml = readFileSync13(indexPath, "utf-8");
@@ -59391,7 +59435,7 @@ var init_studioMotionRenderScript = __esm({
59391
59435
 
59392
59436
  // ../core/src/studio-api/routes/preview.ts
59393
59437
  import { existsSync as existsSync13, readFileSync as readFileSync15, statSync as statSync2 } from "fs";
59394
- import { join as join15, resolve as resolve11 } from "path";
59438
+ import { join as join16, resolve as resolve11 } from "path";
59395
59439
  function resolveProjectSignature(adapter2, projectDir) {
59396
59440
  return adapter2.getProjectSignature?.(projectDir) ?? createProjectSignature(projectDir);
59397
59441
  }
@@ -59409,7 +59453,7 @@ function injectProjectSignature(html, signature) {
59409
59453
  ${html}`;
59410
59454
  }
59411
59455
  function readStudioMotionManifestContent(projectDir) {
59412
- const manifestPath = join15(projectDir, STUDIO_MOTION_PATH);
59456
+ const manifestPath = join16(projectDir, STUDIO_MOTION_PATH);
59413
59457
  if (!existsSync13(manifestPath)) return "";
59414
59458
  try {
59415
59459
  return readFileSync15(manifestPath, "utf-8");
@@ -59492,11 +59536,11 @@ async function transformPreviewHtml(html, adapter2, project, activeCompositionPa
59492
59536
  }
59493
59537
  }
59494
59538
  function resolveProjectMainHtml(projectDir, projectId) {
59495
- const indexPath = join15(projectDir, "index.html");
59539
+ const indexPath = join16(projectDir, "index.html");
59496
59540
  if (existsSync13(indexPath)) {
59497
59541
  return { html: readFileSync15(indexPath, "utf-8"), compositionPath: "index.html" };
59498
59542
  }
59499
- const blockHtmlPath = join15(projectDir, `${projectId}.html`);
59543
+ const blockHtmlPath = join16(projectDir, `${projectId}.html`);
59500
59544
  if (existsSync13(blockHtmlPath)) {
59501
59545
  return { html: readFileSync15(blockHtmlPath, "utf-8"), compositionPath: `${projectId}.html` };
59502
59546
  }
@@ -59677,7 +59721,7 @@ var init_preview = __esm({
59677
59721
 
59678
59722
  // ../core/src/studio-api/routes/lint.ts
59679
59723
  import { readFileSync as readFileSync16 } from "fs";
59680
- import { join as join16 } from "path";
59724
+ import { join as join17 } from "path";
59681
59725
  function registerLintRoutes(api, adapter2) {
59682
59726
  api.get("/projects/:id/lint", async (c3) => {
59683
59727
  const project = await adapter2.resolveProject(c3.req.param("id"));
@@ -59686,7 +59730,7 @@ function registerLintRoutes(api, adapter2) {
59686
59730
  const htmlFiles = walkDir(project.dir).filter((f3) => f3.endsWith(".html"));
59687
59731
  const allFindings = [];
59688
59732
  for (const file of htmlFiles) {
59689
- const content = readFileSync16(join16(project.dir, file), "utf-8");
59733
+ const content = readFileSync16(join17(project.dir, file), "utf-8");
59690
59734
  const result = await adapter2.lint(content, { filePath: file });
59691
59735
  if (result?.findings) {
59692
59736
  for (const f3 of result.findings) {
@@ -59711,7 +59755,7 @@ var init_lint2 = __esm({
59711
59755
  // ../core/src/studio-api/routes/render.ts
59712
59756
  import { streamSSE } from "hono/streaming";
59713
59757
  import { existsSync as existsSync14, readFileSync as readFileSync17, mkdirSync as mkdirSync7, unlinkSync as unlinkSync4, readdirSync as readdirSync6, statSync as statSync3 } from "fs";
59714
- import { join as join17, resolve as resolve12, sep as sep2 } from "path";
59758
+ import { join as join18, resolve as resolve12, sep as sep2 } from "path";
59715
59759
  function registerRenderRoutes(api, adapter2) {
59716
59760
  const renderJobs = /* @__PURE__ */ new Map();
59717
59761
  const TTL_MS = 3e5;
@@ -59764,7 +59808,7 @@ function registerRenderRoutes(api, adapter2) {
59764
59808
  const rendersDir = adapter2.rendersDir(project);
59765
59809
  if (!existsSync14(rendersDir)) mkdirSync7(rendersDir, { recursive: true });
59766
59810
  const ext = FORMAT_EXT3[format] ?? ".mp4";
59767
- const outputPath = join17(rendersDir, `${jobId}${ext}`);
59811
+ const outputPath = join18(rendersDir, `${jobId}${ext}`);
59768
59812
  const jobState = adapter2.startRender({
59769
59813
  project,
59770
59814
  outputPath,
@@ -59852,7 +59896,7 @@ function registerRenderRoutes(api, adapter2) {
59852
59896
  if (state.id === jobId && state.outputPath) {
59853
59897
  const dir = state.outputPath.replace(/\/[^/]+$/, "");
59854
59898
  for (const ext of [".mp4", ".webm", ".mov", ".meta.json"]) {
59855
- const fp = join17(dir, `${jobId}${ext}`);
59899
+ const fp = join18(dir, `${jobId}${ext}`);
59856
59900
  if (existsSync14(fp)) unlinkSync4(fp);
59857
59901
  }
59858
59902
  break;
@@ -59867,7 +59911,7 @@ function registerRenderRoutes(api, adapter2) {
59867
59911
  const filename = c3.req.path.split("/renders/file/")[1];
59868
59912
  if (!filename) return c3.json({ error: "missing filename" }, 400);
59869
59913
  const rendersDir = adapter2.rendersDir(project);
59870
- const fp = join17(rendersDir, filename);
59914
+ const fp = join18(rendersDir, filename);
59871
59915
  if (!existsSync14(fp)) return c3.json({ error: "not found" }, 404);
59872
59916
  const contentType = renderContentType(fp);
59873
59917
  const content = readFileSync17(fp);
@@ -59886,10 +59930,10 @@ function registerRenderRoutes(api, adapter2) {
59886
59930
  const rendersDir = adapter2.rendersDir(project);
59887
59931
  if (!existsSync14(rendersDir)) return c3.json({ renders: [] });
59888
59932
  const files = readdirSync6(rendersDir).filter((f3) => f3.endsWith(".mp4") || f3.endsWith(".webm") || f3.endsWith(".mov")).map((f3) => {
59889
- const fp = join17(rendersDir, f3);
59933
+ const fp = join18(rendersDir, f3);
59890
59934
  const stat3 = statSync3(fp);
59891
59935
  const rid = f3.replace(/\.(mp4|webm|mov)$/, "");
59892
- const metaPath = join17(rendersDir, `${rid}.meta.json`);
59936
+ const metaPath = join18(rendersDir, `${rid}.meta.json`);
59893
59937
  let status = "complete";
59894
59938
  let durationMs;
59895
59939
  if (existsSync14(metaPath)) {
@@ -59915,7 +59959,7 @@ function registerRenderRoutes(api, adapter2) {
59915
59959
  id: file.id,
59916
59960
  status: file.status,
59917
59961
  progress: 100,
59918
- outputPath: join17(rendersDir, file.filename),
59962
+ outputPath: join18(rendersDir, file.filename),
59919
59963
  createdAt: file.createdAt
59920
59964
  });
59921
59965
  }
@@ -60518,7 +60562,7 @@ var init_manualEditsRenderScript = __esm({
60518
60562
 
60519
60563
  // ../core/src/studio-api/routes/thumbnail.ts
60520
60564
  import { existsSync as existsSync15, readFileSync as readFileSync18, writeFileSync as writeFileSync9, mkdirSync as mkdirSync8, statSync as statSync4 } from "fs";
60521
- import { join as join18 } from "path";
60565
+ import { join as join19 } from "path";
60522
60566
  import { createHash as createHash3 } from "crypto";
60523
60567
  function registerThumbnailRoutes(api, adapter2) {
60524
60568
  api.get("/projects/:id/thumbnail/*", async (c3) => {
@@ -60547,7 +60591,7 @@ function registerThumbnailRoutes(api, adapter2) {
60547
60591
  let compH = vpHeight || 1080;
60548
60592
  let sourceMtime = 0;
60549
60593
  if (!vpWidth) {
60550
- const htmlFile = join18(project.dir, compPath);
60594
+ const htmlFile = join19(project.dir, compPath);
60551
60595
  if (existsSync15(htmlFile)) {
60552
60596
  sourceMtime = Math.round(statSync4(htmlFile).mtimeMs);
60553
60597
  const html = readFileSync18(htmlFile, "utf-8");
@@ -60557,14 +60601,14 @@ function registerThumbnailRoutes(api, adapter2) {
60557
60601
  if (hMatch?.[1]) compH = parseInt(hMatch[1]);
60558
60602
  }
60559
60603
  }
60560
- const manualEditsFile = join18(project.dir, STUDIO_MANUAL_EDITS_PATH);
60604
+ const manualEditsFile = join19(project.dir, STUDIO_MANUAL_EDITS_PATH);
60561
60605
  let manualEditsKey = "";
60562
60606
  if (existsSync15(manualEditsFile)) {
60563
60607
  const manualEditsContent = readFileSync18(manualEditsFile, "utf-8");
60564
60608
  manualEditsKey = `_${createHash3("sha1").update(manualEditsContent).digest("hex").slice(0, 16)}`;
60565
60609
  sourceMtime = Math.max(sourceMtime, Math.round(statSync4(manualEditsFile).mtimeMs));
60566
60610
  }
60567
- const motionFile = join18(project.dir, STUDIO_MOTION_PATH);
60611
+ const motionFile = join19(project.dir, STUDIO_MOTION_PATH);
60568
60612
  let motionKey = "";
60569
60613
  if (existsSync15(motionFile)) {
60570
60614
  const motionContent = readFileSync18(motionFile, "utf-8");
@@ -60572,11 +60616,11 @@ function registerThumbnailRoutes(api, adapter2) {
60572
60616
  sourceMtime = Math.max(sourceMtime, Math.round(statSync4(motionFile).mtimeMs));
60573
60617
  }
60574
60618
  const previewUrl = compPath === "index.html" ? `http://${c3.req.header("host")}/api/projects/${project.id}/preview` : `http://${c3.req.header("host")}/api/projects/${project.id}/preview/comp/${compPath}`;
60575
- const cacheDir = join18(project.dir, ".thumbnails");
60619
+ const cacheDir = join19(project.dir, ".thumbnails");
60576
60620
  const selectorKey = selector ? `_${selector.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 80)}_${selectorIndex ?? 0}` : "";
60577
60621
  const urlVersionKey = urlVersion ? `_${urlVersion.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 32)}` : "";
60578
60622
  const cacheKey = `${THUMBNAIL_CACHE_VERSION}${urlVersionKey}${manualEditsKey}${motionKey}_${format}_${compPath.replace(/\//g, "_")}_${compW}x${compH}_${sourceMtime}_${seekTime.toFixed(2)}${selectorKey}.${format === "png" ? "png" : "jpg"}`;
60579
- const cachePath2 = join18(cacheDir, cacheKey);
60623
+ const cachePath2 = join19(cacheDir, cacheKey);
60580
60624
  if (existsSync15(cachePath2)) {
60581
60625
  return new Response(new Uint8Array(readFileSync18(cachePath2)), {
60582
60626
  headers: { "Content-Type": contentType, "Cache-Control": "public, max-age=60" }
@@ -60623,7 +60667,7 @@ var init_thumbnail = __esm({
60623
60667
 
60624
60668
  // ../core/src/studio-api/routes/waveform.ts
60625
60669
  import { existsSync as existsSync16, readFileSync as readFileSync19, writeFileSync as writeFileSync10, mkdirSync as mkdirSync9 } from "fs";
60626
- import { join as join19 } from "path";
60670
+ import { join as join20 } from "path";
60627
60671
  function registerWaveformRoutes(api, adapter2) {
60628
60672
  api.get("/projects/:id/waveform/*", async (c3) => {
60629
60673
  const project = await adapter2.resolveProject(c3.req.param("id"));
@@ -60631,10 +60675,10 @@ function registerWaveformRoutes(api, adapter2) {
60631
60675
  const assetPath = decodeURIComponent(
60632
60676
  c3.req.path.replace(`/projects/${project.id}/waveform/`, "").split("?")[0] ?? ""
60633
60677
  );
60634
- const audioPath = join19(project.dir, assetPath);
60678
+ const audioPath = join20(project.dir, assetPath);
60635
60679
  if (!existsSync16(audioPath)) return c3.json({ error: "file not found" }, 404);
60636
- const cacheDir = join19(project.dir, ".waveform-cache");
60637
- const cachePath2 = join19(cacheDir, buildWaveformCacheKey(assetPath));
60680
+ const cacheDir = join20(project.dir, ".waveform-cache");
60681
+ const cachePath2 = join20(cacheDir, buildWaveformCacheKey(assetPath));
60638
60682
  if (existsSync16(cachePath2)) {
60639
60683
  try {
60640
60684
  const peaks2 = JSON.parse(readFileSync19(cachePath2, "utf-8"));
@@ -60667,7 +60711,7 @@ var init_waveform2 = __esm({
60667
60711
  import { execFileSync as execFileSync4 } from "child_process";
60668
60712
  import { existsSync as existsSync17, readdirSync as readdirSync7, statSync as statSync5 } from "fs";
60669
60713
  import { homedir as homedir4, platform as platform5 } from "os";
60670
- import { join as join20 } from "path";
60714
+ import { join as join21 } from "path";
60671
60715
  function isRecord(value) {
60672
60716
  return typeof value === "object" && value !== null;
60673
60717
  }
@@ -60675,18 +60719,18 @@ function fontDirectories() {
60675
60719
  const home = homedir4();
60676
60720
  if (platform5() === "darwin") {
60677
60721
  return [
60678
- join20(home, "Library", "Fonts"),
60722
+ join21(home, "Library", "Fonts"),
60679
60723
  "/Library/Fonts",
60680
60724
  "/System/Library/Fonts",
60681
60725
  "/System/Library/Fonts/Supplemental"
60682
60726
  ];
60683
60727
  }
60684
60728
  if (platform5() === "win32") {
60685
- return [join20(process.env.WINDIR || "C:\\Windows", "Fonts")];
60729
+ return [join21(process.env.WINDIR || "C:\\Windows", "Fonts")];
60686
60730
  }
60687
60731
  return [
60688
- join20(home, ".fonts"),
60689
- join20(home, ".local", "share", "fonts"),
60732
+ join21(home, ".fonts"),
60733
+ join21(home, ".local", "share", "fonts"),
60690
60734
  "/usr/local/share/fonts",
60691
60735
  "/usr/share/fonts"
60692
60736
  ];
@@ -60741,7 +60785,7 @@ function collectFontsFromDir(dir, depth = 0) {
60741
60785
  if (!existsSync17(dir) || depth > 2) return [];
60742
60786
  const fonts = [];
60743
60787
  for (const entry of readdirSync7(dir, { withFileTypes: true })) {
60744
- const fullPath = join20(dir, entry.name);
60788
+ const fullPath = join21(dir, entry.name);
60745
60789
  if (entry.isDirectory()) {
60746
60790
  fonts.push(...collectFontsFromDir(fullPath, depth + 1));
60747
60791
  continue;
@@ -61013,7 +61057,7 @@ import { execSync as execSync2, spawnSync as spawnSync2 } from "child_process";
61013
61057
  import { existsSync as existsSync18, readdirSync as readdirSync8, rmSync as rmSync4 } from "fs";
61014
61058
  import { basename as basename2 } from "path";
61015
61059
  import { homedir as homedir5 } from "os";
61016
- import { join as join21 } from "path";
61060
+ import { join as join22 } from "path";
61017
61061
  import { Browser, detectBrowserPlatform, getInstalledBrowsers, install } from "@puppeteer/browsers";
61018
61062
  function whichBinary2(name) {
61019
61063
  try {
@@ -61088,15 +61132,15 @@ function findFromPuppeteerCache() {
61088
61132
  }
61089
61133
  for (const version of versions) {
61090
61134
  const candidates = [
61091
- join21(PUPPETEER_CACHE_DIR, version, "chrome-headless-shell-linux64", "chrome-headless-shell"),
61092
- join21(
61135
+ join22(PUPPETEER_CACHE_DIR, version, "chrome-headless-shell-linux64", "chrome-headless-shell"),
61136
+ join22(
61093
61137
  PUPPETEER_CACHE_DIR,
61094
61138
  version,
61095
61139
  "chrome-headless-shell-mac-arm64",
61096
61140
  "chrome-headless-shell"
61097
61141
  ),
61098
- join21(PUPPETEER_CACHE_DIR, version, "chrome-headless-shell-mac-x64", "chrome-headless-shell"),
61099
- join21(
61142
+ join22(PUPPETEER_CACHE_DIR, version, "chrome-headless-shell-mac-x64", "chrome-headless-shell"),
61143
+ join22(
61100
61144
  PUPPETEER_CACHE_DIR,
61101
61145
  version,
61102
61146
  "chrome-headless-shell-win64",
@@ -61225,8 +61269,8 @@ var init_manager2 = __esm({
61225
61269
  "src/browser/manager.ts"() {
61226
61270
  "use strict";
61227
61271
  CHROME_VERSION = "131.0.6778.85";
61228
- CACHE_DIR2 = join21(homedir5(), ".cache", "hyperframes", "chrome");
61229
- PUPPETEER_CACHE_DIR = join21(homedir5(), ".cache", "puppeteer", "chrome-headless-shell");
61272
+ CACHE_DIR2 = join22(homedir5(), ".cache", "hyperframes", "chrome");
61273
+ PUPPETEER_CACHE_DIR = join22(homedir5(), ".cache", "puppeteer", "chrome-headless-shell");
61230
61274
  SYSTEM_CHROME_PATHS = process.platform === "darwin" ? ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"] : [
61231
61275
  "/usr/bin/google-chrome",
61232
61276
  "/usr/bin/google-chrome-stable",
@@ -61397,7 +61441,7 @@ var init_config2 = __esm({
61397
61441
  // ../engine/src/services/browserManager.ts
61398
61442
  import { execSync as execSync3 } from "child_process";
61399
61443
  import { existsSync as existsSync19, readdirSync as readdirSync9 } from "fs";
61400
- import { join as join22 } from "path";
61444
+ import { join as join23 } from "path";
61401
61445
  import { homedir as homedir6, totalmem as totalmem3 } from "os";
61402
61446
  async function getPuppeteer() {
61403
61447
  if (_puppeteer) return _puppeteer;
@@ -61418,16 +61462,16 @@ function resolveHeadlessShellPath(config) {
61418
61462
  if (process.env.PRODUCER_HEADLESS_SHELL_PATH) {
61419
61463
  return process.env.PRODUCER_HEADLESS_SHELL_PATH;
61420
61464
  }
61421
- const baseDir = join22(homedir6(), ".cache", "puppeteer", "chrome-headless-shell");
61465
+ const baseDir = join23(homedir6(), ".cache", "puppeteer", "chrome-headless-shell");
61422
61466
  if (!existsSync19(baseDir)) return void 0;
61423
61467
  try {
61424
61468
  const versions = readdirSync9(baseDir).sort().reverse();
61425
61469
  for (const version of versions) {
61426
61470
  const candidates = [
61427
- join22(baseDir, version, "chrome-headless-shell-linux64", "chrome-headless-shell"),
61428
- join22(baseDir, version, "chrome-headless-shell-mac-arm64", "chrome-headless-shell"),
61429
- join22(baseDir, version, "chrome-headless-shell-mac-x64", "chrome-headless-shell"),
61430
- join22(baseDir, version, "chrome-headless-shell-win64", "chrome-headless-shell.exe")
61471
+ join23(baseDir, version, "chrome-headless-shell-linux64", "chrome-headless-shell"),
61472
+ join23(baseDir, version, "chrome-headless-shell-mac-arm64", "chrome-headless-shell"),
61473
+ join23(baseDir, version, "chrome-headless-shell-mac-x64", "chrome-headless-shell"),
61474
+ join23(baseDir, version, "chrome-headless-shell-win64", "chrome-headless-shell.exe")
61431
61475
  ];
61432
61476
  for (const binary of candidates) {
61433
61477
  if (existsSync19(binary)) return binary;
@@ -62139,7 +62183,7 @@ var init_screenshotService = __esm({
62139
62183
 
62140
62184
  // ../engine/src/services/frameCapture.ts
62141
62185
  import { existsSync as existsSync20, mkdirSync as mkdirSync10, writeFileSync as writeFileSync11 } from "fs";
62142
- import { join as join23 } from "path";
62186
+ import { join as join24 } from "path";
62143
62187
  async function driveWarmupTicks(options, state) {
62144
62188
  const sleep3 = options.sleep ?? realSleep;
62145
62189
  while (true) {
@@ -62520,9 +62564,9 @@ async function initializeSession(session) {
62520
62564
  }
62521
62565
  async function captureFrameErrorDiagnostics(session, frameIndex, time, error) {
62522
62566
  try {
62523
- const diagnosticsDir = join23(session.outputDir, "diagnostics");
62567
+ const diagnosticsDir = join24(session.outputDir, "diagnostics");
62524
62568
  if (!existsSync20(diagnosticsDir)) mkdirSync10(diagnosticsDir, { recursive: true });
62525
- const base = join23(diagnosticsDir, `frame-error-${frameIndex}`);
62569
+ const base = join24(diagnosticsDir, `frame-error-${frameIndex}`);
62526
62570
  await session.page.screenshot({ path: `${base}.png`, type: "png", fullPage: true });
62527
62571
  const html = await session.page.content();
62528
62572
  writeFileSync11(`${base}.html`, html, "utf-8");
@@ -62641,7 +62685,7 @@ async function captureFrame(session, frameIndex, time) {
62641
62685
  );
62642
62686
  const ext = options.format === "png" ? "png" : "jpg";
62643
62687
  const frameName = `frame_${String(frameIndex).padStart(6, "0")}.${ext}`;
62644
- const framePath = join23(outputDir, frameName);
62688
+ const framePath = join24(outputDir, frameName);
62645
62689
  writeFileSync11(framePath, buffer);
62646
62690
  return { frameIndex, time: quantizedTime, path: framePath, captureTimeMs };
62647
62691
  }
@@ -63075,7 +63119,7 @@ var init_runFfmpeg = __esm({
63075
63119
  // ../engine/src/services/chunkEncoder.ts
63076
63120
  import { spawn as spawn6 } from "child_process";
63077
63121
  import { copyFileSync, existsSync as existsSync21, mkdirSync as mkdirSync11, readdirSync as readdirSync10, statSync as statSync6, writeFileSync as writeFileSync12 } from "fs";
63078
- import { join as join24, dirname as dirname7 } from "path";
63122
+ import { join as join25, dirname as dirname7 } from "path";
63079
63123
  function getEncoderPreset(quality, format = "mp4", hdr) {
63080
63124
  const base = ENCODER_PRESETS[quality];
63081
63125
  if (format === "webm") {
@@ -63307,7 +63351,7 @@ async function encodeFramesFromDir(framesDir, framePattern, outputPath, options,
63307
63351
  if (options.useGpu) {
63308
63352
  gpuEncoder = await getCachedGpuEncoder();
63309
63353
  }
63310
- const inputPath = join24(framesDir, framePattern);
63354
+ const inputPath = join25(framesDir, framePattern);
63311
63355
  const inputArgs = ["-framerate", fpsToFfmpegArg(options.fps), "-i", inputPath];
63312
63356
  const args = buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder);
63313
63357
  return new Promise((resolve46) => {
@@ -63389,7 +63433,7 @@ async function encodeFramesChunkedConcat(framesDir, framePattern, outputPath, op
63389
63433
  }
63390
63434
  const chunkSize = Math.max(30, Math.floor(chunkSizeFrames));
63391
63435
  const chunkCount = Math.ceil(files.length / chunkSize);
63392
- const chunkDir = join24(dirname7(outputPath), "chunk-encode");
63436
+ const chunkDir = join25(dirname7(outputPath), "chunk-encode");
63393
63437
  if (!existsSync21(chunkDir)) mkdirSync11(chunkDir, { recursive: true });
63394
63438
  const chunkPaths = [];
63395
63439
  for (let i2 = 0; i2 < chunkCount; i2++) {
@@ -63406,8 +63450,8 @@ async function encodeFramesChunkedConcat(framesDir, framePattern, outputPath, op
63406
63450
  const startNumber = i2 * chunkSize;
63407
63451
  const framesInChunk = Math.min(chunkSize, files.length - startNumber);
63408
63452
  const ext = outputPath.endsWith(".webm") ? ".webm" : outputPath.endsWith(".mov") ? ".mov" : ".mp4";
63409
- const chunkPath = join24(chunkDir, `chunk_${String(i2).padStart(4, "0")}${ext}`);
63410
- const inputPath = join24(framesDir, framePattern);
63453
+ const chunkPath = join25(chunkDir, `chunk_${String(i2).padStart(4, "0")}${ext}`);
63454
+ const inputPath = join25(framesDir, framePattern);
63411
63455
  const inputArgs = [
63412
63456
  "-framerate",
63413
63457
  fpsToFfmpegArg(options.fps),
@@ -63448,7 +63492,7 @@ async function encodeFramesChunkedConcat(framesDir, framePattern, outputPath, op
63448
63492
  }
63449
63493
  chunkPaths.push(chunkPath);
63450
63494
  }
63451
- const concatListPath = join24(chunkDir, "concat-list.txt");
63495
+ const concatListPath = join25(chunkDir, "concat-list.txt");
63452
63496
  const concatInput = chunkPaths.map((path2) => `file '${path2.replace(/'/g, "'\\''")}'`).join("\n");
63453
63497
  writeFileSync12(concatListPath, concatInput, "utf-8");
63454
63498
  const concatArgs = [
@@ -64187,7 +64231,7 @@ var init_ffprobe = __esm({
64187
64231
  // ../engine/src/utils/urlDownloader.ts
64188
64232
  import { createWriteStream as createWriteStream2, existsSync as existsSync23, mkdirSync as mkdirSync13 } from "fs";
64189
64233
  import { createHash as createHash4 } from "crypto";
64190
- import { join as join25, extname as extname6 } from "path";
64234
+ import { join as join26, extname as extname6 } from "path";
64191
64235
  import { Readable } from "stream";
64192
64236
  import { finished } from "stream/promises";
64193
64237
  function getFilenameFromUrl(url) {
@@ -64209,7 +64253,7 @@ async function downloadToTemp(url, destDir, timeoutMs = 3e5) {
64209
64253
  mkdirSync13(destDir, { recursive: true });
64210
64254
  }
64211
64255
  const filename = getFilenameFromUrl(url);
64212
- const localPath = join25(destDir, filename);
64256
+ const localPath = join26(destDir, filename);
64213
64257
  if (existsSync23(localPath)) {
64214
64258
  downloadPathCache.set(url, localPath);
64215
64259
  return localPath;
@@ -64974,7 +65018,7 @@ var init_inlineSubCompositions = __esm({
64974
65018
 
64975
65019
  // ../core/src/compiler/htmlBundler.ts
64976
65020
  import { readFileSync as readFileSync21, existsSync as existsSync24 } from "fs";
64977
- import { join as join26, resolve as resolve14, relative as relative4, dirname as dirname9, isAbsolute as isAbsolute4, sep as sep3 } from "path";
65021
+ import { join as join27, resolve as resolve14, relative as relative4, dirname as dirname9, isAbsolute as isAbsolute4, sep as sep3 } from "path";
64978
65022
  import { transformSync } from "esbuild";
64979
65023
  function safePath(projectDir, relativePath) {
64980
65024
  const resolved = resolve14(projectDir, relativePath);
@@ -65403,7 +65447,7 @@ function stripJsCommentsParserSafe(source) {
65403
65447
  }
65404
65448
  }
65405
65449
  async function bundleToSingleHtml(projectDir, options) {
65406
- const indexPath = join26(projectDir, "index.html");
65450
+ const indexPath = join27(projectDir, "index.html");
65407
65451
  if (!existsSync24(indexPath)) throw new Error("index.html not found in project directory");
65408
65452
  const rawHtml = readFileSync21(indexPath, "utf-8");
65409
65453
  const compiled = await compileHtml(rawHtml, projectDir, options?.probeMediaDuration);
@@ -65810,7 +65854,7 @@ var init_htmlTemplate = __esm({
65810
65854
  import { createHash as createHash5 } from "crypto";
65811
65855
  import { mkdirSync as mkdirSync14, readdirSync as readdirSync11, statSync as statSync8, writeFileSync as writeFileSync13 } from "fs";
65812
65856
  import { existsSync as existsSync25 } from "fs";
65813
- import { join as join27 } from "path";
65857
+ import { join as join28 } from "path";
65814
65858
  function readKeyStat(videoPath) {
65815
65859
  try {
65816
65860
  const stat3 = statSync8(videoPath);
@@ -65839,15 +65883,15 @@ function cacheEntryDirName(keyHash) {
65839
65883
  }
65840
65884
  function lookupCacheEntry(rootDir, input2) {
65841
65885
  const keyHash = computeCacheKey(input2);
65842
- const dir = join27(rootDir, cacheEntryDirName(keyHash));
65843
- const complete = existsSync25(join27(dir, COMPLETE_SENTINEL));
65886
+ const dir = join28(rootDir, cacheEntryDirName(keyHash));
65887
+ const complete = existsSync25(join28(dir, COMPLETE_SENTINEL));
65844
65888
  return { entry: { dir, keyHash }, hit: complete };
65845
65889
  }
65846
65890
  function ensureCacheEntryDir(entry) {
65847
65891
  mkdirSync14(entry.dir, { recursive: true });
65848
65892
  }
65849
65893
  function markCacheEntryComplete(entry) {
65850
- writeFileSync13(join27(entry.dir, COMPLETE_SENTINEL), "", "utf-8");
65894
+ writeFileSync13(join28(entry.dir, COMPLETE_SENTINEL), "", "utf-8");
65851
65895
  }
65852
65896
  function rehydrateCacheEntry(entry, options) {
65853
65897
  const framePattern = `${FRAME_FILENAME_PREFIX}%05d.${options.format}`;
@@ -65855,7 +65899,7 @@ function rehydrateCacheEntry(entry, options) {
65855
65899
  const suffix = `.${options.format}`;
65856
65900
  const files = readdirSync11(entry.dir).filter((f3) => f3.startsWith(FRAME_FILENAME_PREFIX) && f3.endsWith(suffix)).sort();
65857
65901
  files.forEach((file, idx) => {
65858
- framePaths.set(idx, join27(entry.dir, file));
65902
+ framePaths.set(idx, join28(entry.dir, file));
65859
65903
  });
65860
65904
  return {
65861
65905
  videoId: options.videoId,
@@ -65882,7 +65926,7 @@ var init_extractionCache = __esm({
65882
65926
  // ../engine/src/services/videoFrameExtractor.ts
65883
65927
  import { spawn as spawn9 } from "child_process";
65884
65928
  import { existsSync as existsSync26, mkdirSync as mkdirSync15, readdirSync as readdirSync12, rmSync as rmSync5 } from "fs";
65885
- import { isAbsolute as isAbsolute5, join as join28, posix as posix3, resolve as resolve15, sep as sep4 } from "path";
65929
+ import { isAbsolute as isAbsolute5, join as join29, posix as posix3, resolve as resolve15, sep as sep4 } from "path";
65886
65930
  function parseVideoElements(html) {
65887
65931
  const videos = [];
65888
65932
  const { document: document2 } = parseHTML(unwrapTemplate(html));
@@ -65952,12 +65996,12 @@ function parseImageElements(html) {
65952
65996
  async function extractVideoFramesRange(videoPath, videoId, startTime, duration, options, signal, config, outputDirOverride) {
65953
65997
  const ffmpegProcessTimeout = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG2.ffmpegProcessTimeout;
65954
65998
  const { fps, outputDir, quality = 95 } = options;
65955
- const videoOutputDir = outputDirOverride ?? join28(outputDir, videoId);
65999
+ const videoOutputDir = outputDirOverride ?? join29(outputDir, videoId);
65956
66000
  if (!existsSync26(videoOutputDir)) mkdirSync15(videoOutputDir, { recursive: true });
65957
66001
  const metadata = await extractMediaMetadata(videoPath);
65958
66002
  const format = resolveFrameFormat(metadata, options.format);
65959
66003
  const framePattern = `${FRAME_FILENAME_PREFIX}%05d.${format}`;
65960
- const outputPattern = join28(videoOutputDir, framePattern);
66004
+ const outputPattern = join29(videoOutputDir, framePattern);
65961
66005
  const isHdr = isHdrColorSpace(metadata.colorSpace);
65962
66006
  const isMacOS = process.platform === "darwin";
65963
66007
  const args = [];
@@ -66011,7 +66055,7 @@ async function extractVideoFramesRange(videoPath, videoId, startTime, duration,
66011
66055
  const framePaths = /* @__PURE__ */ new Map();
66012
66056
  const files = readdirSync12(videoOutputDir).filter((f3) => f3.startsWith(FRAME_FILENAME_PREFIX) && f3.endsWith(`.${format}`)).sort();
66013
66057
  files.forEach((file, index) => {
66014
- framePaths.set(index, join28(videoOutputDir, file));
66058
+ framePaths.set(index, join29(videoOutputDir, file));
66015
66059
  });
66016
66060
  resolve46({
66017
66061
  videoId,
@@ -66132,22 +66176,22 @@ function resolveProjectRelativeSrc(src, baseDir, compiledDir) {
66132
66176
  if (!candidates.includes(candidate)) candidates.push(candidate);
66133
66177
  };
66134
66178
  for (const variant of decodeUrlPathVariants(cleanSrc)) {
66135
- const fromCompiled = compiledDir ? join28(compiledDir, variant) : null;
66136
- const fromBase = join28(baseDir, variant);
66179
+ const fromCompiled = compiledDir ? join29(compiledDir, variant) : null;
66180
+ const fromBase = join29(baseDir, variant);
66137
66181
  const baseAbs = resolve15(baseDir);
66138
66182
  const fromBaseAbs = resolve15(fromBase);
66139
66183
  if (!fromBaseAbs.startsWith(baseAbs + sep4) && fromBaseAbs !== baseAbs) {
66140
66184
  const normalized = posix3.normalize(variant.replace(/\\/g, "/"));
66141
66185
  const stripped = normalized.replace(/^(\.\.\/)+/, "");
66142
66186
  if (stripped && stripped !== variant && !stripped.startsWith("..")) {
66143
- if (compiledDir) addCandidate2(join28(compiledDir, stripped));
66144
- addCandidate2(join28(baseDir, stripped));
66187
+ if (compiledDir) addCandidate2(join29(compiledDir, stripped));
66188
+ addCandidate2(join29(baseDir, stripped));
66145
66189
  }
66146
66190
  }
66147
66191
  if (fromCompiled) addCandidate2(fromCompiled);
66148
66192
  addCandidate2(fromBase);
66149
66193
  }
66150
- return candidates.find(existsSync26) ?? join28(baseDir, cleanSrc);
66194
+ return candidates.find(existsSync26) ?? join29(baseDir, cleanSrc);
66151
66195
  }
66152
66196
  async function extractAllVideoFrames(videos, baseDir, options, signal, config, compiledDir) {
66153
66197
  const startTime = Date.now();
@@ -66177,7 +66221,7 @@ async function extractAllVideoFrames(videos, baseDir, options, signal, config, c
66177
66221
  videoPath = resolveProjectRelativeSrc(video.src, baseDir, compiledDir);
66178
66222
  }
66179
66223
  if (isHttpUrl(videoPath)) {
66180
- const downloadDir = join28(options.outputDir, "_downloads");
66224
+ const downloadDir = join29(options.outputDir, "_downloads");
66181
66225
  mkdirSync15(downloadDir, { recursive: true });
66182
66226
  videoPath = await downloadToTemp(videoPath, downloadDir);
66183
66227
  }
@@ -66221,7 +66265,7 @@ async function extractAllVideoFrames(videos, baseDir, options, signal, config, c
66221
66265
  const hdrSkippedIndices = /* @__PURE__ */ new Set();
66222
66266
  if (hdrInfo.hasHdr && hdrInfo.dominantTransfer) {
66223
66267
  const targetTransfer = hdrInfo.dominantTransfer;
66224
- const convertDir = join28(options.outputDir, "_hdr_normalized");
66268
+ const convertDir = join29(options.outputDir, "_hdr_normalized");
66225
66269
  mkdirSync15(convertDir, { recursive: true });
66226
66270
  for (let i2 = 0; i2 < resolvedVideos.length; i2++) {
66227
66271
  if (signal?.aborted) break;
@@ -66243,7 +66287,7 @@ async function extractAllVideoFrames(videos, baseDir, options, signal, config, c
66243
66287
  const sourceRemaining = metadata.durationSeconds - entry.video.mediaStart;
66244
66288
  segDuration = sourceRemaining > 0 ? sourceRemaining : metadata.durationSeconds;
66245
66289
  }
66246
- const convertedPath = join28(convertDir, `${entry.video.id}_hdr.mp4`);
66290
+ const convertedPath = join29(convertDir, `${entry.video.id}_hdr.mp4`);
66247
66291
  try {
66248
66292
  await convertSdrToHdr(
66249
66293
  entry.videoPath,
@@ -66278,7 +66322,7 @@ async function extractAllVideoFrames(videos, baseDir, options, signal, config, c
66278
66322
  }
66279
66323
  }
66280
66324
  const vfrPreflightStart = Date.now();
66281
- const vfrNormDir = join28(options.outputDir, "_vfr_normalized");
66325
+ const vfrNormDir = join29(options.outputDir, "_vfr_normalized");
66282
66326
  for (let i2 = 0; i2 < resolvedVideos.length; i2++) {
66283
66327
  if (signal?.aborted) break;
66284
66328
  const entry = resolvedVideos[i2];
@@ -66293,7 +66337,7 @@ async function extractAllVideoFrames(videos, baseDir, options, signal, config, c
66293
66337
  segDuration = sourceRemaining > 0 ? sourceRemaining : metadata.durationSeconds;
66294
66338
  }
66295
66339
  mkdirSync15(vfrNormDir, { recursive: true });
66296
- const normalizedPath = join28(vfrNormDir, `${entry.video.id}_cfr.mp4`);
66340
+ const normalizedPath = join29(vfrNormDir, `${entry.video.id}_cfr.mp4`);
66297
66341
  try {
66298
66342
  await convertVfrToCfr(
66299
66343
  entry.videoPath,
@@ -67067,7 +67111,7 @@ var init_audioVolumeEnvelope = __esm({
67067
67111
 
67068
67112
  // ../engine/src/services/audioMixer.ts
67069
67113
  import { existsSync as existsSync27, mkdirSync as mkdirSync16, rmSync as rmSync6 } from "fs";
67070
- import { isAbsolute as isAbsolute6, join as join29, dirname as dirname10 } from "path";
67114
+ import { isAbsolute as isAbsolute6, join as join30, dirname as dirname10 } from "path";
67071
67115
  function clampVolume(volume) {
67072
67116
  if (!Number.isFinite(volume)) return 1;
67073
67117
  return Math.max(0, Math.min(1, volume));
@@ -67416,7 +67460,7 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
67416
67460
  }
67417
67461
  let audioSrcPath = srcPath;
67418
67462
  if (element.type === "video") {
67419
- const extractedPath = join29(workDir, `${element.id}-extracted.wav`);
67463
+ const extractedPath = join30(workDir, `${element.id}-extracted.wav`);
67420
67464
  const extractResult = await extractAudioFromVideo(
67421
67465
  srcPath,
67422
67466
  extractedPath,
@@ -67433,7 +67477,7 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
67433
67477
  }
67434
67478
  audioSrcPath = extractedPath;
67435
67479
  } else {
67436
- const trimmedPath = join29(workDir, `${element.id}-trimmed.wav`);
67480
+ const trimmedPath = join30(workDir, `${element.id}-trimmed.wav`);
67437
67481
  const prepResult = await prepareAudioTrack(
67438
67482
  srcPath,
67439
67483
  trimmedPath,
@@ -67586,7 +67630,7 @@ var init_readWebGlVendorInfoFromCanvas = __esm({
67586
67630
  import { cpus as cpus2, freemem as freemem2, totalmem as totalmem4 } from "os";
67587
67631
  import { existsSync as existsSync28, mkdirSync as mkdirSync17, readdirSync as readdirSync13 } from "fs";
67588
67632
  import { copyFile, rename } from "fs/promises";
67589
- import { join as join30 } from "path";
67633
+ import { join as join31 } from "path";
67590
67634
  function defaultSafeMaxWorkers() {
67591
67635
  return Math.max(6, Math.min(16, Math.floor(cpus2().length / 8)));
67592
67636
  }
@@ -67639,7 +67683,7 @@ function distributeFrames(totalFrames, workerCount, workDir, rangeStart = 0) {
67639
67683
  workerId: i2,
67640
67684
  startFrame,
67641
67685
  endFrame,
67642
- outputDir: join30(workDir, `worker-${i2}`),
67686
+ outputDir: join31(workDir, `worker-${i2}`),
67643
67687
  outputFrameOffset: rangeStart
67644
67688
  });
67645
67689
  }
@@ -67770,8 +67814,8 @@ async function mergeWorkerFrames(workDir, tasks, outputDir) {
67770
67814
  }
67771
67815
  const files = readdirSync13(task.outputDir).filter((f3) => f3.startsWith("frame_") && (f3.endsWith(".jpg") || f3.endsWith(".png"))).sort();
67772
67816
  const copyTasks = files.map(async (file) => {
67773
- const sourcePath = join30(task.outputDir, file);
67774
- const targetPath = join30(outputDir, file);
67817
+ const sourcePath = join31(task.outputDir, file);
67818
+ const targetPath = join31(outputDir, file);
67775
67819
  try {
67776
67820
  await rename(sourcePath, targetPath);
67777
67821
  } catch {
@@ -67811,7 +67855,7 @@ var init_parallelCoordinator = __esm({
67811
67855
  import { Hono as Hono2 } from "hono";
67812
67856
  import { serve } from "@hono/node-server";
67813
67857
  import { readFileSync as readFileSync23, existsSync as existsSync29, statSync as statSync9 } from "fs";
67814
- import { join as join31, extname as extname7 } from "path";
67858
+ import { join as join32, extname as extname7 } from "path";
67815
67859
  function createFileServer(options) {
67816
67860
  const { projectDir, compiledDir, port = 0, stripEmbeddedRuntime = true } = options;
67817
67861
  const headScripts = options.headScripts ?? [];
@@ -67821,11 +67865,11 @@ function createFileServer(options) {
67821
67865
  let requestPath = c3.req.path;
67822
67866
  if (requestPath === "/") requestPath = "/index.html";
67823
67867
  const relativePath = requestPath.replace(/^\//, "");
67824
- const compiledPath = compiledDir ? join31(compiledDir, relativePath) : null;
67868
+ const compiledPath = compiledDir ? join32(compiledDir, relativePath) : null;
67825
67869
  const hasCompiledFile = Boolean(
67826
67870
  compiledPath && existsSync29(compiledPath) && statSync9(compiledPath).isFile()
67827
67871
  );
67828
- const filePath = hasCompiledFile ? compiledPath : join31(projectDir, relativePath);
67872
+ const filePath = hasCompiledFile ? compiledPath : join32(projectDir, relativePath);
67829
67873
  if (!existsSync29(filePath) || !statSync9(filePath).isFile()) {
67830
67874
  return c3.text("Not found", 404);
67831
67875
  }
@@ -69140,7 +69184,7 @@ var init_shaderTransitions = __esm({
69140
69184
 
69141
69185
  // ../engine/src/services/hdrCapture.ts
69142
69186
  import { existsSync as existsSync30, readdirSync as readdirSync14 } from "fs";
69143
- import { join as join32 } from "path";
69187
+ import { join as join33 } from "path";
69144
69188
  import { homedir as homedir7 } from "os";
69145
69189
  function linearToPQ(L2) {
69146
69190
  const Lp = Math.max(0, L2 * SDR_NITS / PQ_MAX_NITS);
@@ -69256,12 +69300,12 @@ function float16ToPqRgb(rawBuffer, bytesPerRow, width, height) {
69256
69300
  return output;
69257
69301
  }
69258
69302
  function resolveHeadedChromePath() {
69259
- const baseDir = join32(homedir7(), ".cache", "puppeteer", "chrome");
69303
+ const baseDir = join33(homedir7(), ".cache", "puppeteer", "chrome");
69260
69304
  if (!existsSync30(baseDir)) return void 0;
69261
69305
  const versions = readdirSync14(baseDir).sort().reverse();
69262
69306
  for (const version of versions) {
69263
69307
  const candidates = [
69264
- join32(
69308
+ join33(
69265
69309
  baseDir,
69266
69310
  version,
69267
69311
  "chrome-mac-arm64",
@@ -69270,7 +69314,7 @@ function resolveHeadedChromePath() {
69270
69314
  "MacOS",
69271
69315
  "Google Chrome for Testing"
69272
69316
  ),
69273
- join32(
69317
+ join33(
69274
69318
  baseDir,
69275
69319
  version,
69276
69320
  "chrome-mac-x64",
@@ -69279,8 +69323,8 @@ function resolveHeadedChromePath() {
69279
69323
  "MacOS",
69280
69324
  "Google Chrome for Testing"
69281
69325
  ),
69282
- join32(baseDir, version, "chrome-linux64", "chrome"),
69283
- join32(baseDir, version, "chrome-win64", "chrome.exe")
69326
+ join33(baseDir, version, "chrome-linux64", "chrome"),
69327
+ join33(baseDir, version, "chrome-win64", "chrome.exe")
69284
69328
  ];
69285
69329
  for (const binary of candidates) {
69286
69330
  if (existsSync30(binary)) return binary;
@@ -69555,9 +69599,10 @@ __export(deterministicFonts_exports, {
69555
69599
  iterateFontFamilyDeclarations: () => iterateFontFamilyDeclarations,
69556
69600
  parseFontFamilyValue: () => parseFontFamilyValue
69557
69601
  });
69602
+ import { createHash as createHash6 } from "crypto";
69558
69603
  import { existsSync as existsSync31, mkdirSync as mkdirSync18, readFileSync as readFileSync24, writeFileSync as writeFileSync15 } from "fs";
69559
69604
  import { homedir as homedir8, tmpdir as tmpdir3 } from "os";
69560
- import { join as join33 } from "path";
69605
+ import { join as join34 } from "path";
69561
69606
  function parseFontFamilyValue(value) {
69562
69607
  return value.split(",").map((piece) => piece.trim().replace(/^['"]/, "").replace(/['"]$/, "").trim()).filter((piece) => piece.length > 0);
69563
69608
  }
@@ -69609,7 +69654,7 @@ function extractRequestedFontFamilies(html) {
69609
69654
  }
69610
69655
  return requested;
69611
69656
  }
69612
- function buildFontFaceRule(familyName, src, weight, style) {
69657
+ function buildFontFaceRule(familyName, src, weight, style, unicodeRange) {
69613
69658
  return [
69614
69659
  "@font-face {",
69615
69660
  ` font-family: "${familyName}";`,
@@ -69617,6 +69662,9 @@ function buildFontFaceRule(familyName, src, weight, style) {
69617
69662
  ` font-style: ${style};`,
69618
69663
  ` font-weight: ${weight};`,
69619
69664
  " font-display: block;",
69665
+ // Preserve the subset's unicode-range so the browser selects the right
69666
+ // per-codepoint subset (matching Google Fonts' own CSS semantics).
69667
+ ...unicodeRange ? [` unicode-range: ${unicodeRange};`] : [],
69620
69668
  "}"
69621
69669
  ].join("\n");
69622
69670
  }
@@ -69637,18 +69685,31 @@ async function buildFontFaceCss(requestedFamilies, options) {
69637
69685
  }
69638
69686
  const googleFaces2 = await fetchGoogleFont(originalCaseFamily, options);
69639
69687
  for (const face of googleFaces2) {
69640
- const key2 = `${face.weight}:${face.style}`;
69641
- if (!coveredWeights.has(key2)) {
69642
- rules.push(buildFontFaceRule(originalCaseFamily, face.dataUri, face.weight, face.style));
69643
- coveredWeights.add(key2);
69644
- }
69688
+ if (coveredWeights.has(`${face.weight}:${face.style}`)) continue;
69689
+ rules.push(
69690
+ buildFontFaceRule(
69691
+ originalCaseFamily,
69692
+ face.dataUri,
69693
+ face.weight,
69694
+ face.style,
69695
+ face.unicodeRange
69696
+ )
69697
+ );
69645
69698
  }
69646
69699
  continue;
69647
69700
  }
69648
69701
  const googleFaces = await fetchGoogleFont(originalCaseFamily, options);
69649
69702
  if (googleFaces.length > 0) {
69650
69703
  for (const face of googleFaces) {
69651
- rules.push(buildFontFaceRule(originalCaseFamily, face.dataUri, face.weight, face.style));
69704
+ rules.push(
69705
+ buildFontFaceRule(
69706
+ originalCaseFamily,
69707
+ face.dataUri,
69708
+ face.weight,
69709
+ face.style,
69710
+ face.unicodeRange
69711
+ )
69712
+ );
69652
69713
  }
69653
69714
  continue;
69654
69715
  }
@@ -69677,26 +69738,55 @@ function warnUnresolvedFonts(unresolved) {
69677
69738
  );
69678
69739
  }
69679
69740
  function resolveFontCacheRoot() {
69680
- return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join33(tmpdir3(), "hyperframes", "fonts") : join33(homedir8(), ".cache", "hyperframes", "fonts"));
69741
+ return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join34(tmpdir3(), "hyperframes", "fonts") : join34(homedir8(), ".cache", "hyperframes", "fonts"));
69681
69742
  }
69682
69743
  function fontSlug(familyName) {
69683
69744
  return familyName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
69684
69745
  }
69685
69746
  function fontCacheDir(slug) {
69686
- const dir = join33(GOOGLE_FONTS_CACHE_DIR, slug);
69747
+ const dir = join34(GOOGLE_FONTS_CACHE_DIR, slug);
69687
69748
  if (!existsSync31(dir)) {
69688
69749
  mkdirSync18(dir, { recursive: true });
69689
69750
  }
69690
69751
  return dir;
69691
69752
  }
69692
- function cachedWoff2Path(slug, weight, style) {
69693
- return join33(fontCacheDir(slug), `${weight}-${style}.woff2`);
69753
+ function subsetToken(woff2Url) {
69754
+ return createHash6("sha1").update(woff2Url).digest("hex").slice(0, 12);
69755
+ }
69756
+ function cachedWoff2Path(slug, weight, style, subset) {
69757
+ return join34(fontCacheDir(slug), `${weight}-${style}-${subset}.woff2`);
69694
69758
  }
69695
69759
  function fontFetchError(familyName, url, what, cause) {
69696
69760
  const reason = "status" in cause ? `returned HTTP ${cause.status}` : `failed: ${cause.error.message}`;
69697
69761
  const message = `[deterministicFonts] ${what} fetch for ${JSON.stringify(familyName)} ${reason}. Distributed renders require deterministic fonts; system-font fallback would produce non-byte-identical output.`;
69698
69762
  return new FontFetchError(familyName, url, message, "error" in cause ? cause.error : void 0);
69699
69763
  }
69764
+ async function ensureWoff2DataUri(cachePath2, woff2Url, familyName, weight, style, options) {
69765
+ try {
69766
+ return `data:font/woff2;base64,${readFileSync24(cachePath2).toString("base64")}`;
69767
+ } catch {
69768
+ }
69769
+ const woff2What = `Google Fonts woff2 (${weight}/${style})`;
69770
+ try {
69771
+ const fontRes = await options.fetchImpl(woff2Url);
69772
+ if (!fontRes.ok) {
69773
+ if (fontRes.status >= 500 && options.failClosedFontFetch) {
69774
+ throw fontFetchError(familyName, woff2Url, woff2What, { status: fontRes.status });
69775
+ }
69776
+ return null;
69777
+ }
69778
+ writeFileSync15(cachePath2, Buffer.from(await fontRes.arrayBuffer()), { flag: "wx", mode: 420 });
69779
+ } catch (err) {
69780
+ if (err instanceof FontFetchError) throw err;
69781
+ if (err.code === "EEXIST") {
69782
+ } else if (options.failClosedFontFetch) {
69783
+ throw fontFetchError(familyName, woff2Url, woff2What, { error: err });
69784
+ } else {
69785
+ return null;
69786
+ }
69787
+ }
69788
+ return `data:font/woff2;base64,${readFileSync24(cachePath2).toString("base64")}`;
69789
+ }
69700
69790
  async function fetchGoogleFont(familyName, options) {
69701
69791
  const slug = fontSlug(familyName);
69702
69792
  const encodedFamily = encodeURIComponent(familyName);
@@ -69720,37 +69810,24 @@ async function fetchGoogleFont(familyName, options) {
69720
69810
  }
69721
69811
  return [];
69722
69812
  }
69723
- const faceRegex = /@font-face\s*\{[^}]*font-style:\s*(normal|italic)[^}]*font-weight:\s*(\d+)[^}]*src:\s*url\(([^)]+)\)\s*format\(['"]woff2['"]\)[^}]*\}/gi;
69813
+ const faceRegex = /@font-face\s*\{[^}]*font-style:\s*(normal|italic)[^}]*font-weight:\s*(\d+)[^}]*src:\s*url\(([^)]+)\)\s*format\(['"]woff2['"]\)(?:[^}]*?unicode-range:\s*([^;}]+))?[^}]*\}/gi;
69724
69814
  const faces = [];
69725
69815
  for (const match of cssText.matchAll(faceRegex)) {
69726
69816
  const style = match[1] || "normal";
69727
69817
  const weight = match[2] || "400";
69728
69818
  const woff2Url = match[3] || "";
69819
+ const unicodeRange = match[4]?.trim() || void 0;
69729
69820
  if (!woff2Url) continue;
69730
- const cachePath2 = cachedWoff2Path(slug, weight, style);
69731
- if (!existsSync31(cachePath2)) {
69732
- const woff2What = `Google Fonts woff2 (${weight}/${style})`;
69733
- try {
69734
- const fontRes = await options.fetchImpl(woff2Url);
69735
- if (!fontRes.ok) {
69736
- if (fontRes.status >= 500 && options.failClosedFontFetch) {
69737
- throw fontFetchError(familyName, woff2Url, woff2What, { status: fontRes.status });
69738
- }
69739
- continue;
69740
- }
69741
- const buffer = Buffer.from(await fontRes.arrayBuffer());
69742
- writeFileSync15(cachePath2, buffer);
69743
- } catch (err) {
69744
- if (err instanceof FontFetchError) throw err;
69745
- if (options.failClosedFontFetch) {
69746
- throw fontFetchError(familyName, woff2Url, woff2What, { error: err });
69747
- }
69748
- continue;
69749
- }
69750
- }
69751
- const fontBytes = readFileSync24(cachePath2);
69752
- const dataUri = `data:font/woff2;base64,${fontBytes.toString("base64")}`;
69753
- faces.push({ weight, style, dataUri });
69821
+ const cachePath2 = cachedWoff2Path(slug, weight, style, subsetToken(woff2Url));
69822
+ const dataUri = await ensureWoff2DataUri(
69823
+ cachePath2,
69824
+ woff2Url,
69825
+ familyName,
69826
+ weight,
69827
+ style,
69828
+ options
69829
+ );
69830
+ if (dataUri) faces.push({ weight, style, dataUri, unicodeRange });
69754
69831
  }
69755
69832
  if (faces.length > 0) {
69756
69833
  console.log(
@@ -69947,7 +70024,7 @@ var init_deterministicFonts = __esm({
69947
70024
  });
69948
70025
 
69949
70026
  // ../producer/src/services/hyperframeRuntimeLoader.ts
69950
- import { createHash as createHash6 } from "crypto";
70027
+ import { createHash as createHash7 } from "crypto";
69951
70028
  import { existsSync as existsSync32, readFileSync as readFileSync25 } from "fs";
69952
70029
  import { dirname as dirname11, resolve as resolve16 } from "path";
69953
70030
  import { fileURLToPath as fileURLToPath2 } from "url";
@@ -69990,7 +70067,7 @@ function resolveVerifiedHyperframeRuntime() {
69990
70067
  throw new Error(`[HyperframeRuntimeLoader] Missing runtime artifact at ${runtimePath}.`);
69991
70068
  }
69992
70069
  const runtimeSource = readFileSync25(runtimePath, "utf8");
69993
- const runtimeSha = createHash6("sha256").update(runtimeSource, "utf8").digest("hex");
70070
+ const runtimeSha = createHash7("sha256").update(runtimeSource, "utf8").digest("hex");
69994
70071
  if (runtimeSha !== manifest.sha256) {
69995
70072
  throw new Error(
69996
70073
  `[HyperframeRuntimeLoader] Runtime checksum mismatch. expected=${manifest.sha256} actual=${runtimeSha}`
@@ -70029,7 +70106,7 @@ var init_hyperframeRuntimeLoader = __esm({
70029
70106
  import { Hono as Hono3 } from "hono";
70030
70107
  import { serve as serve2 } from "@hono/node-server";
70031
70108
  import { readFileSync as readFileSync26, existsSync as existsSync33, realpathSync, statSync as statSync10 } from "fs";
70032
- import { join as join34, extname as extname8, resolve as resolve17, sep as sep5 } from "path";
70109
+ import { join as join35, extname as extname8, resolve as resolve17, sep as sep5 } from "path";
70033
70110
  function isPathInside(child, parent, options = {}) {
70034
70111
  const { resolveSymlinks = false, pathModule } = options;
70035
70112
  const resolveFn = pathModule?.resolve ?? resolve17;
@@ -70203,13 +70280,13 @@ function createFileServer2(options) {
70203
70280
  }).join("/");
70204
70281
  let filePath = null;
70205
70282
  if (compiledDir) {
70206
- const candidate = join34(compiledDir, relativePath);
70283
+ const candidate = join35(compiledDir, relativePath);
70207
70284
  if (existsSync33(candidate) && isPathInside(candidate, compiledDir) && statSync10(candidate).isFile()) {
70208
70285
  filePath = candidate;
70209
70286
  }
70210
70287
  }
70211
70288
  if (!filePath) {
70212
- const candidate = join34(projectDir, relativePath);
70289
+ const candidate = join35(projectDir, relativePath);
70213
70290
  if (existsSync33(candidate) && isPathInside(candidate, projectDir) && statSync10(candidate).isFile()) {
70214
70291
  filePath = candidate;
70215
70292
  }
@@ -70538,7 +70615,7 @@ var init_logger = __esm({
70538
70615
  // ../producer/src/utils/paths.ts
70539
70616
  import {
70540
70617
  basename as basename3,
70541
- join as join35,
70618
+ join as join36,
70542
70619
  resolve as nodeResolve,
70543
70620
  relative as nodeRelative,
70544
70621
  isAbsolute as nodeIsAbsolute
@@ -70566,7 +70643,7 @@ function toExternalAssetKey(absPath) {
70566
70643
  function resolveRenderPaths(projectDir, outputPath, rendersDir = DEFAULT_RENDERS_DIR) {
70567
70644
  const absoluteProjectDir = nodeResolve(projectDir);
70568
70645
  const projectName = basename3(absoluteProjectDir);
70569
- const resolvedOutputPath = outputPath ?? join35(rendersDir, `${projectName}.mp4`);
70646
+ const resolvedOutputPath = outputPath ?? join36(rendersDir, `${projectName}.mp4`);
70570
70647
  const absoluteOutputPath = nodeResolve(resolvedOutputPath);
70571
70648
  return { absoluteProjectDir, absoluteOutputPath };
70572
70649
  }
@@ -70580,7 +70657,7 @@ var init_paths = __esm({
70580
70657
 
70581
70658
  // ../producer/src/services/render/shared.ts
70582
70659
  import { copyFileSync as copyFileSync2, cpSync, existsSync as existsSync34, mkdirSync as mkdirSync19, symlinkSync, writeFileSync as writeFileSync16 } from "fs";
70583
- import { basename as basename4, dirname as dirname12, isAbsolute as isAbsolute7, join as join36, relative as relative5, resolve as resolve18 } from "path";
70660
+ import { basename as basename4, dirname as dirname12, isAbsolute as isAbsolute7, join as join37, relative as relative5, resolve as resolve18 } from "path";
70584
70661
  function projectBrowserEndToCompositionTimeline(existingStart, browserStart, browserEnd) {
70585
70662
  return browserEnd + (existingStart - browserStart);
70586
70663
  }
@@ -70616,16 +70693,16 @@ function resolveDeviceScaleFactor(input2) {
70616
70693
  return widthRatio;
70617
70694
  }
70618
70695
  function writeCompiledArtifacts(compiled, workDir, includeSummary) {
70619
- const compileDir = join36(workDir, "compiled");
70696
+ const compileDir = join37(workDir, "compiled");
70620
70697
  mkdirSync19(compileDir, { recursive: true });
70621
- writeFileSync16(join36(compileDir, "index.html"), compiled.html, "utf-8");
70698
+ writeFileSync16(join37(compileDir, "index.html"), compiled.html, "utf-8");
70622
70699
  for (const [srcPath, html] of compiled.subCompositions) {
70623
- const outPath = join36(compileDir, srcPath);
70700
+ const outPath = join37(compileDir, srcPath);
70624
70701
  mkdirSync19(dirname12(outPath), { recursive: true });
70625
70702
  writeFileSync16(outPath, html, "utf-8");
70626
70703
  }
70627
70704
  for (const [relativePath, absolutePath] of compiled.externalAssets) {
70628
- const outPath = resolve18(join36(compileDir, relativePath));
70705
+ const outPath = resolve18(join37(compileDir, relativePath));
70629
70706
  if (!isPathInside2(outPath, compileDir)) {
70630
70707
  console.warn(`[Render] Skipping external asset with unsafe path: ${relativePath}`);
70631
70708
  continue;
@@ -70656,7 +70733,7 @@ function writeCompiledArtifacts(compiled, workDir, includeSummary) {
70656
70733
  renderModeHints: compiled.renderModeHints,
70657
70734
  hasShaderTransitions: compiled.hasShaderTransitions
70658
70735
  };
70659
- writeFileSync16(join36(compileDir, "summary.json"), JSON.stringify(summary, null, 2), "utf-8");
70736
+ writeFileSync16(join37(compileDir, "summary.json"), JSON.stringify(summary, null, 2), "utf-8");
70660
70737
  }
70661
70738
  }
70662
70739
  function applyRenderModeHints(alreadyForced, compiled, log2 = defaultLogger) {
@@ -70759,7 +70836,7 @@ var init_shared = __esm({
70759
70836
  BROWSER_MEDIA_EPSILON = 1e-4;
70760
70837
  materializePathModule = {
70761
70838
  resolve: resolve18,
70762
- join: join36,
70839
+ join: join37,
70763
70840
  dirname: dirname12,
70764
70841
  basename: basename4,
70765
70842
  relative: relative5,
@@ -71054,7 +71131,7 @@ var init_perfSummary = __esm({
71054
71131
  });
71055
71132
 
71056
71133
  // ../producer/src/services/render/captureCost.ts
71057
- import { join as join37 } from "path";
71134
+ import { join as join38 } from "path";
71058
71135
  function estimateCaptureCostMultiplier(compiled) {
71059
71136
  let multiplier = 1;
71060
71137
  const reasons = [];
@@ -71243,7 +71320,7 @@ async function runCaptureCalibration(input2) {
71243
71320
  const calibrationCfg = createCaptureCalibrationConfig({ ...cfg, forceScreenshot });
71244
71321
  let calibration;
71245
71322
  try {
71246
- calibration = await runOneCalibration(join37(workDir, "capture-calibration"), calibrationCfg);
71323
+ calibration = await runOneCalibration(join38(workDir, "capture-calibration"), calibrationCfg);
71247
71324
  } catch (error) {
71248
71325
  const shouldFallback = !forceScreenshot && shouldFallbackToScreenshotAfterCalibrationError(error);
71249
71326
  if (!shouldFallback) {
@@ -71276,7 +71353,7 @@ async function runCaptureCalibration(input2) {
71276
71353
  const screenshotCfg = createCaptureCalibrationConfig({ ...cfg, forceScreenshot: true });
71277
71354
  try {
71278
71355
  calibration = await runOneCalibration(
71279
- join37(workDir, "capture-calibration-screenshot"),
71356
+ join38(workDir, "capture-calibration-screenshot"),
71280
71357
  screenshotCfg
71281
71358
  );
71282
71359
  } catch (fallbackError) {
@@ -71337,7 +71414,7 @@ var init_urlDownloader2 = __esm({
71337
71414
 
71338
71415
  // ../producer/src/services/htmlCompiler.ts
71339
71416
  import { readFileSync as readFileSync27, existsSync as existsSync35, mkdirSync as mkdirSync20 } from "fs";
71340
- import { join as join38, dirname as dirname13, resolve as resolve19 } from "path";
71417
+ import { join as join39, dirname as dirname13, resolve as resolve19 } from "path";
71341
71418
  function dedupeElementsById(elements) {
71342
71419
  const deduped = /* @__PURE__ */ new Map();
71343
71420
  for (const element of elements) {
@@ -71411,7 +71488,7 @@ async function resolveMediaDuration(src, mediaStart, baseDir, downloadDir, tagNa
71411
71488
  return { duration: 0, resolvedPath: src };
71412
71489
  }
71413
71490
  } else if (!filePath.startsWith("/")) {
71414
- filePath = join38(baseDir, filePath);
71491
+ filePath = join39(baseDir, filePath);
71415
71492
  }
71416
71493
  if (!existsSync35(filePath)) {
71417
71494
  return { duration: 0, resolvedPath: filePath };
@@ -72237,7 +72314,7 @@ var init_htmlCompiler2 = __esm({
72237
72314
  });
72238
72315
 
72239
72316
  // ../producer/src/services/render/stages/compileStage.ts
72240
- import { join as join39 } from "path";
72317
+ import { join as join40 } from "path";
72241
72318
  async function runCompileStage(input2) {
72242
72319
  const {
72243
72320
  projectDir,
@@ -72252,7 +72329,7 @@ async function runCompileStage(input2) {
72252
72329
  failClosedFontFetch
72253
72330
  } = input2;
72254
72331
  const compileStart = Date.now();
72255
- const compiled = await compileForRender(projectDir, htmlPath, join39(workDir, "downloads"), {
72332
+ const compiled = await compileForRender(projectDir, htmlPath, join40(workDir, "downloads"), {
72256
72333
  failClosedFontFetch: failClosedFontFetch === true
72257
72334
  });
72258
72335
  assertNotAborted();
@@ -72317,7 +72394,7 @@ var init_compileStage = __esm({
72317
72394
  });
72318
72395
 
72319
72396
  // ../producer/src/services/render/stages/probeStage.ts
72320
- import { join as join40 } from "path";
72397
+ import { join as join41 } from "path";
72321
72398
  function hasScriptedAudioVolumeAutomation(html, audioCount) {
72322
72399
  if (audioCount <= 0) return false;
72323
72400
  const { document: document2 } = parseHTML(html);
@@ -72360,7 +72437,7 @@ async function runProbeStage(input2) {
72360
72437
  if (hasScriptedAudio) reasons.push("scripted audio volume");
72361
72438
  fileServer = await createFileServer2({
72362
72439
  projectDir,
72363
- compiledDir: join40(workDir, "compiled"),
72440
+ compiledDir: join41(workDir, "compiled"),
72364
72441
  port: 0,
72365
72442
  preHeadScripts: [VIRTUAL_TIME_SHIM]
72366
72443
  });
@@ -72375,7 +72452,7 @@ async function runProbeStage(input2) {
72375
72452
  };
72376
72453
  probeSession = await createCaptureSession(
72377
72454
  fileServer.url,
72378
- join40(workDir, "probe"),
72455
+ join41(workDir, "probe"),
72379
72456
  captureOpts,
72380
72457
  null,
72381
72458
  cfg
@@ -72407,7 +72484,7 @@ async function runProbeStage(input2) {
72407
72484
  compiled,
72408
72485
  resolutions,
72409
72486
  projectDir,
72410
- join40(workDir, "downloads")
72487
+ join41(workDir, "downloads")
72411
72488
  );
72412
72489
  assertNotAborted();
72413
72490
  composition.videos = compiled.videos;
@@ -72618,7 +72695,7 @@ var init_probeStage = __esm({
72618
72695
 
72619
72696
  // ../producer/src/services/render/stages/extractVideosStage.ts
72620
72697
  import { existsSync as existsSync36 } from "fs";
72621
- import { isAbsolute as isAbsolute8, join as join41 } from "path";
72698
+ import { isAbsolute as isAbsolute8, join as join42 } from "path";
72622
72699
  async function runExtractVideosStage(input2) {
72623
72700
  const {
72624
72701
  projectDir,
@@ -72659,7 +72736,7 @@ async function runExtractVideosStage(input2) {
72659
72736
  composition.images.map(async (img) => {
72660
72737
  let imgPath = img.src;
72661
72738
  if (!imgPath.startsWith("/")) {
72662
- const fromCompiled = existsSync36(join41(compiledDir, imgPath)) ? join41(compiledDir, imgPath) : join41(projectDir, imgPath);
72739
+ const fromCompiled = existsSync36(join42(compiledDir, imgPath)) ? join42(compiledDir, imgPath) : join42(projectDir, imgPath);
72663
72740
  imgPath = fromCompiled;
72664
72741
  }
72665
72742
  if (!existsSync36(imgPath)) return null;
@@ -72684,7 +72761,7 @@ async function runExtractVideosStage(input2) {
72684
72761
  // output framerate exact.
72685
72762
  {
72686
72763
  fps: fpsToNumber(job.config.fps),
72687
- outputDir: join41(compiledDir, "__hyperframes_video_frames")
72764
+ outputDir: join42(compiledDir, "__hyperframes_video_frames")
72688
72765
  },
72689
72766
  abortSignal,
72690
72767
  { extractCacheDir: cfg.extractCacheDir },
@@ -72747,17 +72824,17 @@ var init_extractVideosStage = __esm({
72747
72824
  });
72748
72825
 
72749
72826
  // ../producer/src/services/render/stages/audioStage.ts
72750
- import { join as join42 } from "path";
72827
+ import { join as join43 } from "path";
72751
72828
  async function runAudioStage(input2) {
72752
72829
  const { projectDir, workDir, compiledDir, duration, audios, abortSignal, assertNotAborted } = input2;
72753
72830
  const stage3Start = Date.now();
72754
- const audioOutputPath = join42(workDir, "audio.aac");
72831
+ const audioOutputPath = join43(workDir, "audio.aac");
72755
72832
  let hasAudio = false;
72756
72833
  if (audios.length > 0) {
72757
72834
  const audioResult = await processCompositionAudio(
72758
72835
  audios,
72759
72836
  projectDir,
72760
- join42(workDir, "audio-work"),
72837
+ join43(workDir, "audio-work"),
72761
72838
  audioOutputPath,
72762
72839
  duration,
72763
72840
  abortSignal,
@@ -73138,7 +73215,7 @@ var init_hdrImageTransferCache = __esm({
73138
73215
 
73139
73216
  // ../producer/src/services/render/stages/captureHdrResources.ts
73140
73217
  import { mkdirSync as mkdirSync21, openSync, readFileSync as readFileSync28, statSync as statSync11 } from "fs";
73141
- import { join as join43 } from "path";
73218
+ import { join as join44 } from "path";
73142
73219
  function planHdrResources(args) {
73143
73220
  const { composition, nativeHdrVideoIds, nativeHdrImageIds, projectDir, compiledDir } = args;
73144
73221
  const hdrVideoIds = composition.videos.filter((v2) => nativeHdrVideoIds.has(v2.id)).map((v2) => v2.id);
@@ -73147,8 +73224,8 @@ function planHdrResources(args) {
73147
73224
  if (!hdrVideoIds.includes(v2.id)) continue;
73148
73225
  let srcPath = v2.src;
73149
73226
  if (!srcPath.startsWith("/")) {
73150
- const fromCompiled = join43(compiledDir, srcPath);
73151
- srcPath = args.existsSync(fromCompiled) ? fromCompiled : join43(projectDir, srcPath);
73227
+ const fromCompiled = join44(compiledDir, srcPath);
73228
+ srcPath = args.existsSync(fromCompiled) ? fromCompiled : join44(projectDir, srcPath);
73152
73229
  }
73153
73230
  hdrVideoSrcPaths.set(v2.id, srcPath);
73154
73231
  }
@@ -73221,11 +73298,11 @@ async function extractHdrVideoFrames(args) {
73221
73298
  for (const [videoId, srcPath] of prep.hdrVideoSrcPaths) {
73222
73299
  const video = composition.videos.find((v2) => v2.id === videoId);
73223
73300
  if (!video) continue;
73224
- const frameDir = join43(framesDir, `hdr_${videoId}`);
73301
+ const frameDir = join44(framesDir, `hdr_${videoId}`);
73225
73302
  mkdirSync21(frameDir, { recursive: true });
73226
73303
  const duration = video.end - video.start;
73227
73304
  const dims = prep.hdrExtractionDims.get(videoId) ?? { width, height };
73228
- const rawPath = join43(frameDir, "frames.rgb48le");
73305
+ const rawPath = join44(frameDir, "frames.rgb48le");
73229
73306
  const ffmpegArgs = [
73230
73307
  "-ss",
73231
73308
  String(video.mediaStart),
@@ -73554,7 +73631,7 @@ var init_captureHdrFrameShared = __esm({
73554
73631
 
73555
73632
  // ../producer/src/services/render/stages/captureHdrSequentialLoop.ts
73556
73633
  import { writeFileSync as writeFileSync17 } from "fs";
73557
- import { join as join44 } from "path";
73634
+ import { join as join45 } from "path";
73558
73635
  async function runSequentialLayeredFrameLoop(input2) {
73559
73636
  const {
73560
73637
  job,
@@ -73675,7 +73752,7 @@ async function runSequentialLayeredFrameLoop(input2) {
73675
73752
  addHdrTiming(hdrPerf, "normalCompositeMs", timingStart);
73676
73753
  if (debugDumpEnabled && debugDumpDir && i2 % 30 === 0) {
73677
73754
  writeFileSync17(
73678
- join44(debugDumpDir, `frame_${String(i2).padStart(4, "0")}_final_rgb48le.bin`),
73755
+ join45(debugDumpDir, `frame_${String(i2).padStart(4, "0")}_final_rgb48le.bin`),
73679
73756
  normalCanvas
73680
73757
  );
73681
73758
  }
@@ -73718,7 +73795,7 @@ var init_captureHdrSequentialLoop = __esm({
73718
73795
  // ../producer/src/services/shaderTransitionWorkerPool.ts
73719
73796
  import { Worker } from "worker_threads";
73720
73797
  import { fileURLToPath as fileURLToPath3, pathToFileURL } from "url";
73721
- import { dirname as dirname14, join as join45 } from "path";
73798
+ import { dirname as dirname14, join as join46 } from "path";
73722
73799
  import { createRequire } from "module";
73723
73800
  import { existsSync as existsSync37 } from "fs";
73724
73801
  import { cpus as cpus3 } from "os";
@@ -73732,9 +73809,9 @@ function resolveWorkerEntry(explicit) {
73732
73809
  return { path: override, isTs };
73733
73810
  }
73734
73811
  const moduleDir = dirname14(fileURLToPath3(import.meta.url));
73735
- const jsPath = join45(moduleDir, "shaderTransitionWorker.js");
73812
+ const jsPath = join46(moduleDir, "shaderTransitionWorker.js");
73736
73813
  if (existsSync37(jsPath)) return { path: jsPath, isTs: false };
73737
- const tsPath = join45(moduleDir, "shaderTransitionWorker.ts");
73814
+ const tsPath = join46(moduleDir, "shaderTransitionWorker.ts");
73738
73815
  return { path: tsPath, isTs: true };
73739
73816
  }
73740
73817
  function buildExecArgv(entryIsTs) {
@@ -73905,7 +73982,7 @@ var init_shaderTransitionWorkerPool = __esm({
73905
73982
 
73906
73983
  // ../producer/src/services/render/stages/captureHdrHybridLoop.ts
73907
73984
  import { writeFileSync as writeFileSync18 } from "fs";
73908
- import { join as join46 } from "path";
73985
+ import { join as join47 } from "path";
73909
73986
  async function runHybridLayeredFrameLoop(input2) {
73910
73987
  const {
73911
73988
  job,
@@ -74100,7 +74177,7 @@ async function runHybridLayeredFrameLoop(input2) {
74100
74177
  addHdrTiming(hdrPerf, "normalCompositeMs", timingStart);
74101
74178
  if (debugDumpEnabled && debugDumpDir && i2 % 30 === 0) {
74102
74179
  writeFileSync18(
74103
- join46(debugDumpDir, `frame_${String(i2).padStart(4, "0")}_final_rgb48le.bin`),
74180
+ join47(debugDumpDir, `frame_${String(i2).padStart(4, "0")}_final_rgb48le.bin`),
74104
74181
  canvas
74105
74182
  );
74106
74183
  }
@@ -74143,7 +74220,7 @@ var init_captureHdrHybridLoop = __esm({
74143
74220
 
74144
74221
  // ../producer/src/services/render/stages/captureHdrStage.ts
74145
74222
  import { existsSync as existsSync38, mkdirSync as mkdirSync22 } from "fs";
74146
- import { join as join47 } from "path";
74223
+ import { join as join48 } from "path";
74147
74224
  async function runCaptureHdrStage(input2) {
74148
74225
  const {
74149
74226
  job,
@@ -74302,7 +74379,7 @@ async function runCaptureHdrStage(input2) {
74302
74379
  if (hdrVideoFrameSources.has(v2.id)) hdrVideoEndTimes.set(v2.id, v2.end);
74303
74380
  }
74304
74381
  const debugDumpEnabled = process.env.KEEP_TEMP === "1";
74305
- const debugDumpDir = debugDumpEnabled ? join47(framesDir, "debug-composite") : null;
74382
+ const debugDumpDir = debugDumpEnabled ? join48(framesDir, "debug-composite") : null;
74306
74383
  if (debugDumpDir && !existsSync38(debugDumpDir)) {
74307
74384
  mkdirSync22(debugDumpDir, { recursive: true });
74308
74385
  }
@@ -74460,7 +74537,7 @@ var init_captureHdrStage = __esm({
74460
74537
 
74461
74538
  // ../producer/src/services/render/stages/encodeStage.ts
74462
74539
  import { copyFileSync as copyFileSync3, existsSync as existsSync39, mkdirSync as mkdirSync23, readdirSync as readdirSync15 } from "fs";
74463
- import { join as join48 } from "path";
74540
+ import { join as join49 } from "path";
74464
74541
  async function runEncodeStage(input2) {
74465
74542
  const {
74466
74543
  job,
@@ -74494,11 +74571,11 @@ async function runEncodeStage(input2) {
74494
74571
  );
74495
74572
  }
74496
74573
  captured.forEach((name, i2) => {
74497
- const dst = join48(outputPath, `frame_${String(i2 + 1).padStart(6, "0")}.png`);
74498
- copyFileSync3(join48(framesDir, name), dst);
74574
+ const dst = join49(outputPath, `frame_${String(i2 + 1).padStart(6, "0")}.png`);
74575
+ copyFileSync3(join49(framesDir, name), dst);
74499
74576
  });
74500
74577
  if (hasAudio && audioOutputPath && existsSync39(audioOutputPath)) {
74501
- copyFileSync3(audioOutputPath, join48(outputPath, "audio.aac"));
74578
+ copyFileSync3(audioOutputPath, join49(outputPath, "audio.aac"));
74502
74579
  log2.info(`[Render] png-sequence: audio.aac sidecar written to ${outputPath}/audio.aac`);
74503
74580
  }
74504
74581
  return { encodeMs: Date.now() - stage5Start };
@@ -74609,7 +74686,7 @@ import {
74609
74686
  copyFileSync as copyFileSync4,
74610
74687
  appendFileSync
74611
74688
  } from "fs";
74612
- import { join as join49, dirname as dirname15, resolve as resolve20 } from "path";
74689
+ import { join as join50, dirname as dirname15, resolve as resolve20 } from "path";
74613
74690
  import { randomUUID as randomUUID2 } from "crypto";
74614
74691
  import { fileURLToPath as fileURLToPath4 } from "url";
74615
74692
  function sampleDirectoryBytes(dir) {
@@ -74625,7 +74702,7 @@ function sampleDirectoryBytes(dir) {
74625
74702
  continue;
74626
74703
  }
74627
74704
  for (const name of entries2) {
74628
- const full = join49(current, name);
74705
+ const full = join50(current, name);
74629
74706
  try {
74630
74707
  const st3 = statSync12(full);
74631
74708
  if (st3.isDirectory()) {
@@ -74711,7 +74788,7 @@ function findMissingFrameRanges(totalFrames, framesDir, frameExt) {
74711
74788
  const ranges = [];
74712
74789
  let rangeStart = null;
74713
74790
  for (let frameIndex = 0; frameIndex < totalFrames; frameIndex++) {
74714
- const framePath = join49(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
74791
+ const framePath = join50(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
74715
74792
  const missing = !existsSync40(framePath);
74716
74793
  if (missing && rangeStart === null) {
74717
74794
  rangeStart = frameIndex;
@@ -74734,7 +74811,7 @@ function buildMissingFrameRetryBatches(ranges, maxWorkers, workDir, attempt, ran
74734
74811
  workerId,
74735
74812
  startFrame: rangeStart + range.startFrame,
74736
74813
  endFrame: rangeStart + range.endFrame,
74737
- outputDir: join49(workDir, `retry-${attempt}-batch-${batchIndex}-worker-${workerId}`),
74814
+ outputDir: join50(workDir, `retry-${attempt}-batch-${batchIndex}-worker-${workerId}`),
74738
74815
  outputFrameOffset: rangeStart
74739
74816
  }));
74740
74817
  batches.push(batch);
@@ -74753,7 +74830,7 @@ function isRecoverableParallelCaptureError(error) {
74753
74830
  function countCapturedFrames(totalFrames, framesDir, frameExt) {
74754
74831
  let captured = 0;
74755
74832
  for (let frameIndex = 0; frameIndex < totalFrames; frameIndex++) {
74756
- const framePath = join49(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
74833
+ const framePath = join50(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
74757
74834
  if (existsSync40(framePath)) captured++;
74758
74835
  }
74759
74836
  return captured;
@@ -74775,7 +74852,7 @@ async function executeDiskCaptureWithAdaptiveRetry(options) {
74775
74852
  frameCount,
74776
74853
  reason: attempt === 0 ? "initial" : "retry"
74777
74854
  });
74778
- const attemptWorkDir = join49(options.workDir, `capture-attempt-${attempt}`);
74855
+ const attemptWorkDir = join50(options.workDir, `capture-attempt-${attempt}`);
74779
74856
  const batches = missingRanges ? buildMissingFrameRetryBatches(
74780
74857
  missingRanges,
74781
74858
  currentWorkers,
@@ -75205,7 +75282,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
75205
75282
  if (shouldLog && debugDumpDir) {
75206
75283
  const after2 = countNonZeroRgb48(canvas);
75207
75284
  const dumpName = `frame_${String(debugFrameIndex).padStart(4, "0")}_layer_${String(layerIdx).padStart(2, "0")}_dom.png`;
75208
- const dumpPath = join49(debugDumpDir, dumpName);
75285
+ const dumpPath = join50(debugDumpDir, dumpName);
75209
75286
  writeFileSync19(dumpPath, domPng);
75210
75287
  log2.info("[diag] dom layer blit", {
75211
75288
  frame: debugFrameIndex,
@@ -75292,8 +75369,8 @@ function extractStandaloneEntryFromIndex(indexHtml, entryFile) {
75292
75369
  async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSignal) {
75293
75370
  const moduleDir = dirname15(fileURLToPath4(import.meta.url));
75294
75371
  const producerRoot = process.env.PRODUCER_RENDERS_DIR ? resolve20(process.env.PRODUCER_RENDERS_DIR, "..") : resolve20(moduleDir, "../..");
75295
- const debugDir = join49(producerRoot, ".debug");
75296
- const workDir = job.config.debug ? join49(debugDir, job.id) : join49(dirname15(outputPath), `work-${job.id}`);
75372
+ const debugDir = join50(producerRoot, ".debug");
75373
+ const workDir = job.config.debug ? join50(debugDir, job.id) : join50(dirname15(outputPath), `work-${job.id}`);
75297
75374
  const pipelineStart = Date.now();
75298
75375
  const log2 = job.config.logger ?? defaultLogger;
75299
75376
  let fileServer = null;
@@ -75306,7 +75383,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75306
75383
  imageDecodeFailures: 0
75307
75384
  };
75308
75385
  let hdrPerf;
75309
- const perfOutputPath = join49(workDir, "perf-summary.json");
75386
+ const perfOutputPath = join50(workDir, "perf-summary.json");
75310
75387
  const cfg = { ...job.config.producerConfig ?? resolveConfig() };
75311
75388
  const outputFormat = job.config.format ?? "mp4";
75312
75389
  const isWebm = outputFormat === "webm";
@@ -75327,19 +75404,19 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75327
75404
  assertNotAborted();
75328
75405
  if (!existsSync40(workDir)) mkdirSync24(workDir, { recursive: true });
75329
75406
  if (job.config.debug) {
75330
- const logPath = join49(workDir, "render.log");
75407
+ const logPath = join50(workDir, "render.log");
75331
75408
  restoreLogger = installDebugLogger(logPath, log2);
75332
75409
  }
75333
75410
  const entryFile = job.config.entryFile || "index.html";
75334
- let htmlPath = join49(projectDir, entryFile);
75411
+ let htmlPath = join50(projectDir, entryFile);
75335
75412
  if (!existsSync40(htmlPath)) {
75336
75413
  throw new Error(`Entry file not found: ${htmlPath}`);
75337
75414
  }
75338
75415
  assertNotAborted();
75339
75416
  const rawEntry = readFileSync29(htmlPath, "utf-8");
75340
75417
  if (entryFile !== "index.html" && rawEntry.trimStart().startsWith("<template")) {
75341
- const wrapperPath = join49(workDir, "standalone-entry.html");
75342
- const projectIndexPath = join49(projectDir, "index.html");
75418
+ const wrapperPath = join50(workDir, "standalone-entry.html");
75419
+ const projectIndexPath = join50(projectDir, "index.html");
75343
75420
  if (!existsSync40(projectIndexPath)) {
75344
75421
  throw new Error(
75345
75422
  `Template entry file "${entryFile}" requires a project index.html to extract its render shell.`
@@ -75403,7 +75480,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75403
75480
  perfStages.browserProbeMs = probeResult.browserProbeMs;
75404
75481
  perfStages.compileMs = Date.now() - stage1Start;
75405
75482
  updateJobStatus(job, "preprocessing", "Extracting video frames", 10, onProgress);
75406
- const compiledDir = join49(workDir, "compiled");
75483
+ const compiledDir = join50(workDir, "compiled");
75407
75484
  const extractResult = await runExtractVideosStage({
75408
75485
  projectDir,
75409
75486
  compiledDir,
@@ -75450,13 +75527,13 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75450
75527
  if (!fileServer) {
75451
75528
  fileServer = await createFileServer2({
75452
75529
  projectDir,
75453
- compiledDir: join49(workDir, "compiled"),
75530
+ compiledDir: join50(workDir, "compiled"),
75454
75531
  port: 0,
75455
75532
  preHeadScripts: [VIRTUAL_TIME_SHIM]
75456
75533
  });
75457
75534
  assertNotAborted();
75458
75535
  }
75459
- const framesDir = join49(workDir, "captured-frames");
75536
+ const framesDir = join50(workDir, "captured-frames");
75460
75537
  if (!existsSync40(framesDir)) mkdirSync24(framesDir, { recursive: true });
75461
75538
  const captureOptions = {
75462
75539
  width,
@@ -75533,7 +75610,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75533
75610
  "png-sequence": ""
75534
75611
  };
75535
75612
  const videoExt = FORMAT_EXT3[outputFormat] ?? ".mp4";
75536
- const videoOnlyPath = join49(workDir, `video-only${videoExt}`);
75613
+ const videoOnlyPath = join50(workDir, `video-only${videoExt}`);
75537
75614
  const nativeHdrIds = /* @__PURE__ */ new Set([...nativeHdrVideoIds, ...nativeHdrImageIds]);
75538
75615
  const hasHdrContent = Boolean(effectiveHdr && nativeHdrIds.size > 0);
75539
75616
  const usePageSideCompositingForTransitions = cfg.enablePageSideCompositing && compiled.hasShaderTransitions && !hasHdrContent && !isPngSequence && !needsAlpha;
@@ -75751,7 +75828,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
75751
75828
  }
75752
75829
  if (job.config.debug) {
75753
75830
  if (!isPngSequence && existsSync40(outputPath)) {
75754
- const debugOutput = join49(workDir, `output${videoExt}`);
75831
+ const debugOutput = join50(workDir, `output${videoExt}`);
75755
75832
  copyFileSync4(outputPath, debugOutput);
75756
75833
  }
75757
75834
  } else if (process.env.KEEP_TEMP === "1") {
@@ -75879,7 +75956,7 @@ var init_config3 = __esm({
75879
75956
 
75880
75957
  // ../producer/src/services/hyperframeLint.ts
75881
75958
  import { existsSync as existsSync41, readFileSync as readFileSync30, statSync as statSync13 } from "fs";
75882
- import { resolve as resolve21, join as join50 } from "path";
75959
+ import { resolve as resolve21, join as join51 } from "path";
75883
75960
  function isStringRecord(value) {
75884
75961
  if (!value || typeof value !== "object" || Array.isArray(value)) {
75885
75962
  return false;
@@ -75927,7 +76004,7 @@ function readProjectEntryFile(projectDir, preferredEntryFile) {
75927
76004
  }
75928
76005
  }
75929
76006
  return {
75930
- error: `No HTML entry file found in project directory: ${join50(absProjectDir, preferredEntryFile || "index.html")}`
76007
+ error: `No HTML entry file found in project directory: ${join51(absProjectDir, preferredEntryFile || "index.html")}`
75931
76008
  };
75932
76009
  }
75933
76010
  function prepareHyperframeLintBody(body) {
@@ -76024,7 +76101,7 @@ import {
76024
76101
  rmSync as rmSync10,
76025
76102
  createReadStream
76026
76103
  } from "fs";
76027
- import { resolve as resolve22, dirname as dirname16, join as join51 } from "path";
76104
+ import { resolve as resolve22, dirname as dirname16, join as join52 } from "path";
76028
76105
  import { tmpdir as tmpdir4 } from "os";
76029
76106
  import { parseArgs as parseArgs2 } from "util";
76030
76107
  import crypto2 from "crypto";
@@ -76078,8 +76155,8 @@ async function prepareRenderBody(body) {
76078
76155
  }
76079
76156
  }
76080
76157
  const tempRoot = process.env.PRODUCER_TMP_PROJECT_DIR || tmpdir4();
76081
- const tempProjectDir = mkdtempSync2(join51(tempRoot, "producer-project-"));
76082
- writeFileSync20(join51(tempProjectDir, "index.html"), htmlContent, "utf-8");
76158
+ const tempProjectDir = mkdtempSync2(join52(tempRoot, "producer-project-"));
76159
+ writeFileSync20(join52(tempProjectDir, "index.html"), htmlContent, "utf-8");
76083
76160
  return {
76084
76161
  prepared: {
76085
76162
  input: {
@@ -76508,9 +76585,9 @@ var init_parityContract2 = __esm({
76508
76585
  });
76509
76586
 
76510
76587
  // ../producer/src/services/render/stages/planHash.ts
76511
- import { createHash as createHash7 } from "crypto";
76588
+ import { createHash as createHash8 } from "crypto";
76512
76589
  function computePlanHash(input2) {
76513
- const hash2 = createHash7("sha256");
76590
+ const hash2 = createHash8("sha256");
76514
76591
  hash2.update(PLAN_HASH_SCHEMA_PREFIX, "utf8");
76515
76592
  hash2.update(input2.compositionHtml);
76516
76593
  hash2.update(FIELD_DELIMITER);
@@ -76557,7 +76634,7 @@ function canonicalJsonStringify(value) {
76557
76634
  throw new TypeError(`canonicalJsonStringify: unsupported value type ${typeof value}`);
76558
76635
  }
76559
76636
  function sha256Hex(bytes) {
76560
- const h3 = createHash7("sha256");
76637
+ const h3 = createHash8("sha256");
76561
76638
  h3.update(bytes);
76562
76639
  return h3.digest("hex");
76563
76640
  }
@@ -76572,7 +76649,7 @@ var init_planHash = __esm({
76572
76649
 
76573
76650
  // ../producer/src/services/render/stages/freezePlan.ts
76574
76651
  import { existsSync as existsSync43, mkdirSync as mkdirSync26, readFileSync as readFileSync31, readdirSync as readdirSync17, writeFileSync as writeFileSync21 } from "fs";
76575
- import { join as join52, relative as relative6, resolve as resolve23 } from "path";
76652
+ import { join as join53, relative as relative6, resolve as resolve23 } from "path";
76576
76653
  function stripUndefined(value) {
76577
76654
  if (Array.isArray(value)) return value.map(stripUndefined);
76578
76655
  if (value !== null && typeof value === "object") {
@@ -76593,7 +76670,7 @@ function listPlanFiles(planDir) {
76593
76670
  function walk(dir) {
76594
76671
  const entries2 = readdirSync17(dir, { withFileTypes: true });
76595
76672
  for (const entry of entries2) {
76596
- const full = join52(dir, entry.name);
76673
+ const full = join53(dir, entry.name);
76597
76674
  if (entry.isDirectory()) {
76598
76675
  walk(full);
76599
76676
  } else if (entry.isFile()) {
@@ -76629,8 +76706,8 @@ function collectPlanAssetShas(planDir) {
76629
76706
  return { compositionHtml, assets };
76630
76707
  }
76631
76708
  function recomputePlanHashFromPlanDir(planDir) {
76632
- const planJsonPath = join52(planDir, "plan.json");
76633
- const encoderJsonPath = join52(planDir, "meta", "encoder.json");
76709
+ const planJsonPath = join53(planDir, "plan.json");
76710
+ const encoderJsonPath = join53(planDir, "meta", "encoder.json");
76634
76711
  if (!existsSync43(planJsonPath)) {
76635
76712
  throw new Error(`[freezePlan] plan.json missing: ${planJsonPath}`);
76636
76713
  }
@@ -76666,18 +76743,18 @@ async function freezePlan(input2) {
76666
76743
  if (!existsSync43(planDir)) {
76667
76744
  throw new Error(`[freezePlan] planDir does not exist: ${planDir}`);
76668
76745
  }
76669
- const metaDir = join52(planDir, "meta");
76746
+ const metaDir = join53(planDir, "meta");
76670
76747
  if (!existsSync43(metaDir)) mkdirSync26(metaDir, { recursive: true });
76671
76748
  writeFileSync21(
76672
- join52(metaDir, "composition.json"),
76749
+ join53(metaDir, "composition.json"),
76673
76750
  `${JSON.stringify(composition, null, 2)}
76674
76751
  `,
76675
76752
  "utf-8"
76676
76753
  );
76677
76754
  const encoderForCanonical = stripUndefined(encoder);
76678
76755
  const encoderConfigCanonicalJson = canonicalJsonStringify(encoderForCanonical);
76679
- writeFileSync21(join52(metaDir, "encoder.json"), encoderConfigCanonicalJson, "utf-8");
76680
- writeFileSync21(join52(metaDir, "chunks.json"), `${JSON.stringify(chunks, null, 2)}
76756
+ writeFileSync21(join53(metaDir, "encoder.json"), encoderConfigCanonicalJson, "utf-8");
76757
+ writeFileSync21(join53(metaDir, "chunks.json"), `${JSON.stringify(chunks, null, 2)}
76681
76758
  `, "utf-8");
76682
76759
  const { compositionHtml, assets } = collectPlanAssetShas(planDir);
76683
76760
  const planHash = computePlanHash({
@@ -76700,7 +76777,7 @@ async function freezePlan(input2) {
76700
76777
  duration: durationSeconds,
76701
76778
  hasAudio
76702
76779
  };
76703
- const planJsonPath = join52(planDir, "plan.json");
76780
+ const planJsonPath = join53(planDir, "plan.json");
76704
76781
  writeFileSync21(planJsonPath, `${JSON.stringify(planJson, null, 2)}
76705
76782
  `, "utf-8");
76706
76783
  return { planJsonPath, planHash };
@@ -76808,7 +76885,7 @@ var init_runtimeEnvSnapshot = __esm({
76808
76885
 
76809
76886
  // ../producer/src/services/distributed/shared.ts
76810
76887
  import { execFile as execFileCallback } from "child_process";
76811
- import { dirname as dirname17, join as join53 } from "path";
76888
+ import { dirname as dirname17, join as join54 } from "path";
76812
76889
  import { existsSync as existsSync44, readFileSync as readFileSync32 } from "fs";
76813
76890
  import { fileURLToPath as fileURLToPath5 } from "url";
76814
76891
  import { promisify as promisify2 } from "util";
@@ -76846,7 +76923,7 @@ function readProducerVersion() {
76846
76923
  const startDir = dirname17(fileURLToPath5(import.meta.url));
76847
76924
  let current = startDir;
76848
76925
  for (let i2 = 0; i2 < 10; i2++) {
76849
- const candidate = join53(current, "package.json");
76926
+ const candidate = join54(current, "package.json");
76850
76927
  if (existsSync44(candidate)) {
76851
76928
  try {
76852
76929
  const pkg = JSON.parse(readFileSync32(candidate, "utf-8"));
@@ -76888,7 +76965,7 @@ import {
76888
76965
  statSync as statSync15,
76889
76966
  writeFileSync as writeFileSync22
76890
76967
  } from "fs";
76891
- import { join as join54, relative as relative7, sep as sep6 } from "path";
76968
+ import { join as join55, relative as relative7, sep as sep6 } from "path";
76892
76969
  function formatBytes(bytes) {
76893
76970
  if (bytes < 1024) return `${bytes} B`;
76894
76971
  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KiB`;
@@ -76913,7 +76990,7 @@ function measurePlanDirBytes(planDir) {
76913
76990
  return;
76914
76991
  }
76915
76992
  for (const entry of entries2) {
76916
- const full = join54(dir, entry.name);
76993
+ const full = join55(dir, entry.name);
76917
76994
  if (entry.isDirectory()) {
76918
76995
  walk(full);
76919
76996
  } else if (entry.isFile()) {
@@ -77073,13 +77150,13 @@ async function plan(projectDir, config, planDir) {
77073
77150
  producerConfig: config.producerConfig
77074
77151
  });
77075
77152
  const entryFile = config.entryFile ?? "index.html";
77076
- const htmlPath = join54(projectDir, entryFile);
77153
+ const htmlPath = join55(projectDir, entryFile);
77077
77154
  if (!existsSync45(htmlPath)) {
77078
77155
  throw new Error(`[plan] entry file not found: ${htmlPath}`);
77079
77156
  }
77080
- const workDir = join54(planDir, ".plan-work");
77157
+ const workDir = join55(planDir, ".plan-work");
77081
77158
  if (!existsSync45(workDir)) mkdirSync27(workDir, { recursive: true });
77082
- const compiledDir = join54(workDir, "compiled");
77159
+ const compiledDir = join55(workDir, "compiled");
77083
77160
  mkdirSync27(compiledDir, { recursive: true });
77084
77161
  cpSync2(projectDir, compiledDir, {
77085
77162
  recursive: true,
@@ -77091,7 +77168,7 @@ async function plan(projectDir, config, planDir) {
77091
77168
  return firstSegment === void 0 || !PLAN_PROJECT_DIR_SKIP_SEGMENTS.has(firstSegment);
77092
77169
  }
77093
77170
  });
77094
- const finalCompiledDir = join54(planDir, "compiled");
77171
+ const finalCompiledDir = join55(planDir, "compiled");
77095
77172
  const needsAlpha = config.format === "png-sequence" || config.format === "mov" || config.format === "webm";
77096
77173
  const compileResult = await runCompileStage({
77097
77174
  projectDir,
@@ -77162,8 +77239,8 @@ async function plan(projectDir, config, planDir) {
77162
77239
  abortSignal,
77163
77240
  assertNotAborted
77164
77241
  });
77165
- const stagedVideoFrames = join54(compiledDir, "__hyperframes_video_frames");
77166
- const videoFramesDst = join54(planDir, "video-frames");
77242
+ const stagedVideoFrames = join55(compiledDir, "__hyperframes_video_frames");
77243
+ const videoFramesDst = join55(planDir, "video-frames");
77167
77244
  if (existsSync45(videoFramesDst)) rmSync11(videoFramesDst, { recursive: true, force: true });
77168
77245
  if (existsSync45(stagedVideoFrames)) {
77169
77246
  renameSync4(stagedVideoFrames, videoFramesDst);
@@ -77183,13 +77260,13 @@ async function plan(projectDir, config, planDir) {
77183
77260
  metadata: ext.metadata
77184
77261
  }))
77185
77262
  };
77186
- mkdirSync27(join54(planDir, "meta"), { recursive: true });
77263
+ mkdirSync27(join55(planDir, "meta"), { recursive: true });
77187
77264
  writeFileSync22(
77188
- join54(planDir, PLAN_VIDEOS_META_RELATIVE_PATH),
77265
+ join55(planDir, PLAN_VIDEOS_META_RELATIVE_PATH),
77189
77266
  JSON.stringify(planVideosJson, null, 2),
77190
77267
  "utf-8"
77191
77268
  );
77192
- const planAudioPath = join54(planDir, "audio.aac");
77269
+ const planAudioPath = join55(planDir, "audio.aac");
77193
77270
  if (audioResult.hasAudio && existsSync45(audioResult.audioOutputPath)) {
77194
77271
  renameSync4(audioResult.audioOutputPath, planAudioPath);
77195
77272
  }
@@ -77330,11 +77407,11 @@ var init_plan = __esm({
77330
77407
  // ../producer/src/services/distributed/renderChunk.ts
77331
77408
  import { randomBytes as randomBytes2 } from "crypto";
77332
77409
  import { existsSync as existsSync46, mkdirSync as mkdirSync28, readFileSync as readFileSync33, readdirSync as readdirSync19, rmSync as rmSync12, writeFileSync as writeFileSync23 } from "fs";
77333
- import { extname as extname9, join as join55 } from "path";
77410
+ import { extname as extname9, join as join56 } from "path";
77334
77411
  function rebuildExtractedFramesFromPlanDir(planDir, videos) {
77335
77412
  const result = [];
77336
77413
  for (const v2 of videos) {
77337
- const outputDir = join55(planDir, "video-frames", v2.videoId);
77414
+ const outputDir = join56(planDir, "video-frames", v2.videoId);
77338
77415
  if (!existsSync46(outputDir)) {
77339
77416
  throw new Error(
77340
77417
  `[renderChunk] planDir missing extracted video frames for ${JSON.stringify(v2.videoId)}: ${outputDir} not present. plan() should have written frames here; the planDir is malformed.`
@@ -77346,7 +77423,7 @@ function rebuildExtractedFramesFromPlanDir(planDir, videos) {
77346
77423
  for (let i2 = 0; i2 < frames.length; i2++) {
77347
77424
  const frameName = frames[i2];
77348
77425
  if (!frameName) continue;
77349
- framePaths.set(i2 + 1, join55(outputDir, frameName));
77426
+ framePaths.set(i2 + 1, join56(outputDir, frameName));
77350
77427
  }
77351
77428
  result.push({
77352
77429
  videoId: v2.videoId,
@@ -77371,7 +77448,7 @@ function hashChunkOutput(outputPath, kind) {
77371
77448
  if (kind === "file") return sha256Hex(readFileSync33(outputPath));
77372
77449
  const entries2 = readdirSync19(outputPath).filter((name) => /\.(png|jpg|jpeg)$/i.test(name)).sort();
77373
77450
  const lines = entries2.map(
77374
- (name) => `${name}\0${sha256Hex(readFileSync33(join55(outputPath, name)))}`
77451
+ (name) => `${name}\0${sha256Hex(readFileSync33(join56(outputPath, name)))}`
77375
77452
  );
77376
77453
  return sha256Hex(lines.join("\0"));
77377
77454
  }
@@ -77384,9 +77461,9 @@ function resolvePresetForLockedEncoder(basePreset, lockedEncoder) {
77384
77461
  async function renderChunk(planDir, chunkIndex, outputChunkPath) {
77385
77462
  const start = Date.now();
77386
77463
  const log2 = defaultLogger;
77387
- const planJsonPath = join55(planDir, "plan.json");
77388
- const encoderJsonPath = join55(planDir, "meta", "encoder.json");
77389
- const chunksJsonPath = join55(planDir, "meta", "chunks.json");
77464
+ const planJsonPath = join56(planDir, "plan.json");
77465
+ const encoderJsonPath = join56(planDir, "meta", "encoder.json");
77466
+ const chunksJsonPath = join56(planDir, "meta", "chunks.json");
77390
77467
  for (const required of [planJsonPath, encoderJsonPath, chunksJsonPath]) {
77391
77468
  if (!existsSync46(required)) {
77392
77469
  throw new RenderChunkValidationError(
@@ -77398,7 +77475,7 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath) {
77398
77475
  const plan2 = JSON.parse(readFileSync33(planJsonPath, "utf-8"));
77399
77476
  const encoder = JSON.parse(readFileSync33(encoderJsonPath, "utf-8"));
77400
77477
  const chunks = JSON.parse(readFileSync33(chunksJsonPath, "utf-8"));
77401
- const videosJsonPath = join55(planDir, PLAN_VIDEOS_META_RELATIVE_PATH);
77478
+ const videosJsonPath = join56(planDir, PLAN_VIDEOS_META_RELATIVE_PATH);
77402
77479
  let planVideos = null;
77403
77480
  if (existsSync46(videosJsonPath)) {
77404
77481
  try {
@@ -77427,7 +77504,7 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath) {
77427
77504
  `[renderChunk] chunk ${chunkIndex} has non-positive frame count: ${framesInChunk}`
77428
77505
  );
77429
77506
  }
77430
- const compiledDir = join55(planDir, "compiled");
77507
+ const compiledDir = join56(planDir, "compiled");
77431
77508
  if (!existsSync46(compiledDir)) {
77432
77509
  throw new RenderChunkValidationError(
77433
77510
  MISSING_PLAN_ARTIFACT,
@@ -77486,7 +77563,7 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath) {
77486
77563
  ) : null;
77487
77564
  const workDir = `${outputChunkPath}.work.${process.pid}.${randomBytes2(4).toString("hex")}`;
77488
77565
  mkdirSync28(workDir, { recursive: true });
77489
- const framesDir = join55(workDir, "captured-frames");
77566
+ const framesDir = join56(workDir, "captured-frames");
77490
77567
  mkdirSync28(framesDir, { recursive: true });
77491
77568
  const fileServer = await createFileServer2({
77492
77569
  projectDir: compiledDir,
@@ -77554,7 +77631,7 @@ async function renderChunk(planDir, chunkIndex, outputChunkPath) {
77554
77631
  if (isPngSequence) {
77555
77632
  if (!existsSync46(outputChunkPath)) mkdirSync28(outputChunkPath, { recursive: true });
77556
77633
  } else {
77557
- const outDir = join55(outputChunkPath, "..");
77634
+ const outDir = join56(outputChunkPath, "..");
77558
77635
  if (!existsSync46(outDir)) mkdirSync28(outDir, { recursive: true });
77559
77636
  }
77560
77637
  await runEncodeStage({
@@ -77884,14 +77961,14 @@ import {
77884
77961
  statSync as statSync16,
77885
77962
  writeFileSync as writeFileSync24
77886
77963
  } from "fs";
77887
- import { dirname as dirname18, join as join56 } from "path";
77964
+ import { dirname as dirname18, join as join57 } from "path";
77888
77965
  async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
77889
77966
  const start = Date.now();
77890
77967
  const log2 = options?.logger ?? defaultLogger;
77891
77968
  const abortSignal = options?.abortSignal;
77892
77969
  const cfr = options?.cfr === true;
77893
- const planJsonPath = join56(planDir, "plan.json");
77894
- const chunksJsonPath = join56(planDir, "meta", "chunks.json");
77970
+ const planJsonPath = join57(planDir, "plan.json");
77971
+ const chunksJsonPath = join57(planDir, "meta", "chunks.json");
77895
77972
  if (!existsSync47(planJsonPath)) {
77896
77973
  throw new Error(`[assemble] planDir missing plan.json: ${planJsonPath}`);
77897
77974
  }
@@ -77920,7 +77997,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
77920
77997
  if (existsSync47(workDir)) rmSync13(workDir, { recursive: true, force: true });
77921
77998
  mkdirSync29(workDir, { recursive: true });
77922
77999
  try {
77923
- const concatOutputPath = join56(workDir, `concat.${plan2.dimensions.format}`);
78000
+ const concatOutputPath = join57(workDir, `concat.${plan2.dimensions.format}`);
77924
78001
  const fpsArg = fpsToFfmpegArg({
77925
78002
  num: plan2.dimensions.fpsNum,
77926
78003
  den: plan2.dimensions.fpsDen
@@ -77934,7 +78011,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
77934
78011
  );
77935
78012
  }
77936
78013
  } else {
77937
- const concatListPath = join56(workDir, "concat-list.txt");
78014
+ const concatListPath = join57(workDir, "concat-list.txt");
77938
78015
  const concatBody = chunkPaths.map((path2) => `file '${path2.replace(/'/g, "'\\''")}'`).join("\n");
77939
78016
  writeFileSync24(concatListPath, `${concatBody}
77940
78017
  `, "utf-8");
@@ -77966,7 +78043,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
77966
78043
  `[assemble] cfr=true is only supported for format="mp4" (got "${plan2.dimensions.format}"). Stream-copy paths for webm and mov already produce exact avg_frame_rate; cfr re-encode is not needed.`
77967
78044
  );
77968
78045
  }
77969
- const encoderJsonPath = join56(planDir, "meta", "encoder.json");
78046
+ const encoderJsonPath = join57(planDir, "meta", "encoder.json");
77970
78047
  if (!existsSync47(encoderJsonPath)) {
77971
78048
  throw new Error(`[assemble] planDir missing meta/encoder.json: ${encoderJsonPath}`);
77972
78049
  }
@@ -77976,7 +78053,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
77976
78053
  `[assemble] cfr=true is not yet supported with codec: "h265". The cfr re-encode pass uses libx264 and would silently transcode the h265 chunks. Either disable cfr or render with codec: "h264".`
77977
78054
  );
77978
78055
  }
77979
- const cfrOutputPath = join56(workDir, `cfr.${plan2.dimensions.format}`);
78056
+ const cfrOutputPath = join57(workDir, `cfr.${plan2.dimensions.format}`);
77980
78057
  const cfrArgs = [
77981
78058
  "-i",
77982
78059
  concatOutputPath,
@@ -78010,7 +78087,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
78010
78087
  }
78011
78088
  let audioForMux = null;
78012
78089
  if (audioPath !== null && existsSync47(audioPath)) {
78013
- const paddedAudioPath = join56(workDir, "audio-padded.aac");
78090
+ const paddedAudioPath = join57(workDir, "audio-padded.aac");
78014
78091
  const padTrimResult = await padOrTrimAudioToVideoFrameCount({
78015
78092
  videoPath: postConcatPath,
78016
78093
  audioPath,
@@ -78026,7 +78103,7 @@ async function assemble(planDir, chunkPaths, audioPath, outputPath, options) {
78026
78103
  sourceDurationSeconds: padTrimResult.sourceDurationSeconds
78027
78104
  });
78028
78105
  }
78029
- const muxOutputPath = audioForMux !== null ? join56(workDir, `mux.${plan2.dimensions.format}`) : postConcatPath;
78106
+ const muxOutputPath = audioForMux !== null ? join57(workDir, `mux.${plan2.dimensions.format}`) : postConcatPath;
78030
78107
  if (audioForMux !== null) {
78031
78108
  const muxResult = await muxVideoWithAudio(
78032
78109
  postConcatPath,
@@ -78086,8 +78163,8 @@ function mergePngFrameDirs(chunkPaths, outputPath, totalFrames, audioPath, start
78086
78163
  throw new Error(`[assemble] png-sequence chunk has no frames: ${chunkDir}`);
78087
78164
  }
78088
78165
  for (const frame of frames) {
78089
- const dst = join56(outputPath, `frame_${String(globalIdx + 1).padStart(6, "0")}.png`);
78090
- cpSync3(join56(chunkDir, frame), dst);
78166
+ const dst = join57(outputPath, `frame_${String(globalIdx + 1).padStart(6, "0")}.png`);
78167
+ cpSync3(join57(chunkDir, frame), dst);
78091
78168
  globalIdx += 1;
78092
78169
  }
78093
78170
  }
@@ -78097,13 +78174,13 @@ function mergePngFrameDirs(chunkPaths, outputPath, totalFrames, audioPath, start
78097
78174
  );
78098
78175
  }
78099
78176
  if (audioPath !== null && existsSync47(audioPath)) {
78100
- const sidecar = join56(outputPath, "audio.aac");
78177
+ const sidecar = join57(outputPath, "audio.aac");
78101
78178
  cpSync3(audioPath, sidecar);
78102
78179
  }
78103
78180
  let fileSize = 0;
78104
78181
  for (const name of readdirSync20(outputPath)) {
78105
78182
  try {
78106
- fileSize += statSync16(join56(outputPath, name)).size;
78183
+ fileSize += statSync16(join57(outputPath, name)).size;
78107
78184
  } catch {
78108
78185
  }
78109
78186
  }
@@ -78232,7 +78309,7 @@ __export(studioServer_exports, {
78232
78309
  import { Hono as Hono5 } from "hono";
78233
78310
  import { streamSSE as streamSSE3 } from "hono/streaming";
78234
78311
  import { existsSync as existsSync48, readFileSync as readFileSync35, writeFileSync as writeFileSync25, statSync as statSync17 } from "fs";
78235
- import { resolve as resolve24, join as join57, basename as basename5 } from "path";
78312
+ import { resolve as resolve24, join as join58, basename as basename5 } from "path";
78236
78313
  function resolveDistDir() {
78237
78314
  return resolveStudioBundle().dir;
78238
78315
  }
@@ -78277,7 +78354,7 @@ function resolveRuntimePath() {
78277
78354
  return builtPath;
78278
78355
  }
78279
78356
  function readStudioManualEditManifestContent(projectDir) {
78280
- const manifestPath = join57(projectDir, STUDIO_MANUAL_EDITS_PATH2);
78357
+ const manifestPath = join58(projectDir, STUDIO_MANUAL_EDITS_PATH2);
78281
78358
  if (!existsSync48(manifestPath)) return "";
78282
78359
  try {
78283
78360
  return readFileSync35(manifestPath, "utf-8");
@@ -78399,7 +78476,7 @@ function createStudioServer(options) {
78399
78476
  return await lintHyperframeHtml2(html, opts);
78400
78477
  },
78401
78478
  runtimeUrl: "/api/runtime.js",
78402
- rendersDir: () => join57(projectDir, "renders"),
78479
+ rendersDir: () => join58(projectDir, "renders"),
78403
78480
  startRender(opts) {
78404
78481
  const state = {
78405
78482
  id: opts.jobId,
@@ -78536,10 +78613,10 @@ function createStudioServer(options) {
78536
78613
  const { resolveItem: resolveItem2 } = await Promise.resolve().then(() => (init_resolver(), resolver_exports));
78537
78614
  const { installItem: installItem2 } = await Promise.resolve().then(() => (init_installer(), installer_exports));
78538
78615
  const { readFileSync: readFileSync58, writeFileSync: writeFileSync40, existsSync: existsSync81 } = await import("fs");
78539
- const { join: join91 } = await import("path");
78616
+ const { join: join92 } = await import("path");
78540
78617
  const item = await resolveItem2(opts.blockName);
78541
78618
  const { written } = await installItem2(item, { destDir: opts.project.dir });
78542
- const indexPath = join91(opts.project.dir, "index.html");
78619
+ const indexPath = join92(opts.project.dir, "index.html");
78543
78620
  if (existsSync81(indexPath)) {
78544
78621
  const indexHtml = readFileSync58(indexPath, "utf-8");
78545
78622
  const hostW = indexHtml.match(/data-width="(\d+)"/)?.[1];
@@ -78745,15 +78822,15 @@ __export(preview_exports, {
78745
78822
  });
78746
78823
  import { spawn as spawn11 } from "child_process";
78747
78824
  import { existsSync as existsSync49, lstatSync as lstatSync2, symlinkSync as symlinkSync2, unlinkSync as unlinkSync5, readlinkSync, mkdirSync as mkdirSync30 } from "fs";
78748
- import { resolve as resolve25, dirname as dirname19, basename as basename6, join as join58 } from "path";
78825
+ import { resolve as resolve25, dirname as dirname19, basename as basename6, join as join59 } from "path";
78749
78826
  import { fileURLToPath as fileURLToPath6 } from "url";
78750
78827
  import { createRequire as createRequire2 } from "module";
78751
78828
  async function runDevMode(dir, options) {
78752
78829
  const thisFile = fileURLToPath6(import.meta.url);
78753
78830
  const repoRoot2 = resolve25(dirname19(thisFile), "..", "..", "..", "..");
78754
- const projectsDir = join58(repoRoot2, "packages", "studio", "data", "projects");
78831
+ const projectsDir = join59(repoRoot2, "packages", "studio", "data", "projects");
78755
78832
  const pName = options?.projectName ?? basename6(dir);
78756
- const symlinkPath = join58(projectsDir, pName);
78833
+ const symlinkPath = join59(projectsDir, pName);
78757
78834
  mkdirSync30(projectsDir, { recursive: true });
78758
78835
  let createdSymlink = false;
78759
78836
  if (dir !== symlinkPath) {
@@ -78777,7 +78854,7 @@ async function runDevMode(dir, options) {
78777
78854
  ge(c2.bold("hyperframes preview"));
78778
78855
  const s2 = ft();
78779
78856
  s2.start("Starting studio...");
78780
- const studioPkgDir = join58(repoRoot2, "packages", "studio");
78857
+ const studioPkgDir = join59(repoRoot2, "packages", "studio");
78781
78858
  const child = spawn11("bun", ["run", "dev"], {
78782
78859
  cwd: studioPkgDir,
78783
78860
  stdio: ["ignore", "pipe", "pipe"]
@@ -78832,7 +78909,7 @@ async function runDevMode(dir, options) {
78832
78909
  }
78833
78910
  function hasLocalStudio(dir) {
78834
78911
  try {
78835
- const req = createRequire2(join58(dir, "package.json"));
78912
+ const req = createRequire2(join59(dir, "package.json"));
78836
78913
  req.resolve("@hyperframes/studio/package.json");
78837
78914
  return true;
78838
78915
  } catch {
@@ -78840,11 +78917,11 @@ function hasLocalStudio(dir) {
78840
78917
  }
78841
78918
  }
78842
78919
  async function runLocalStudioMode(dir, options) {
78843
- const req = createRequire2(join58(dir, "package.json"));
78920
+ const req = createRequire2(join59(dir, "package.json"));
78844
78921
  const studioPkgPath = dirname19(req.resolve("@hyperframes/studio/package.json"));
78845
78922
  const pName = options?.projectName ?? basename6(dir);
78846
- const projectsDir = join58(studioPkgPath, "data", "projects");
78847
- const symlinkPath = join58(projectsDir, pName);
78923
+ const projectsDir = join59(studioPkgPath, "data", "projects");
78924
+ const symlinkPath = join59(projectsDir, pName);
78848
78925
  mkdirSync30(projectsDir, { recursive: true });
78849
78926
  let createdSymlink = false;
78850
78927
  if (dir !== symlinkPath) {
@@ -79144,7 +79221,7 @@ var init_preview2 = __esm({
79144
79221
  const dir = resolve25(rawArg ?? ".");
79145
79222
  const isImplicitCwd = !rawArg || rawArg === "." || rawArg === "./";
79146
79223
  const projectName = isImplicitCwd ? basename6(process.env.PWD ?? dir) : basename6(dir);
79147
- const indexPath = join58(dir, "index.html");
79224
+ const indexPath = join59(dir, "index.html");
79148
79225
  if (existsSync49(indexPath)) {
79149
79226
  const project = { dir, name: projectName, indexPath };
79150
79227
  const lintResult = await lintProject(project);
@@ -79231,7 +79308,7 @@ import {
79231
79308
  readFileSync as readFileSync36,
79232
79309
  readdirSync as readdirSync21
79233
79310
  } from "fs";
79234
- import { resolve as resolve26, basename as basename7, join as join59, dirname as dirname20 } from "path";
79311
+ import { resolve as resolve26, basename as basename7, join as join60, dirname as dirname20 } from "path";
79235
79312
  import { fileURLToPath as fileURLToPath7 } from "url";
79236
79313
  import { execFileSync as execFileSync5, spawn as spawn12 } from "child_process";
79237
79314
  function probeVideo(filePath) {
@@ -79353,7 +79430,7 @@ function listHtmlFiles(dir) {
79353
79430
  const ignoredDirs = /* @__PURE__ */ new Set([".git", "dist", "node_modules"]);
79354
79431
  function walk(currentDir) {
79355
79432
  for (const entry of readdirSync21(currentDir, { withFileTypes: true })) {
79356
- const entryPath = join59(currentDir, entry.name);
79433
+ const entryPath = join60(currentDir, entry.name);
79357
79434
  if (entry.isDirectory()) {
79358
79435
  if (!ignoredDirs.has(entry.name)) walk(entryPath);
79359
79436
  continue;
@@ -79398,7 +79475,7 @@ function writeTailwindSupport(destDir) {
79398
79475
  }
79399
79476
  }
79400
79477
  function patchVideoSrc(dir, videoFilename, durationSeconds) {
79401
- const htmlFiles = readdirSync21(dir, { withFileTypes: true, recursive: true }).filter((e3) => e3.isFile() && e3.name.endsWith(".html")).map((e3) => join59(e3.parentPath, e3.name));
79478
+ const htmlFiles = readdirSync21(dir, { withFileTypes: true, recursive: true }).filter((e3) => e3.isFile() && e3.name.endsWith(".html")).map((e3) => join60(e3.parentPath, e3.name));
79402
79479
  for (const file of htmlFiles) {
79403
79480
  let content = readFileSync36(file, "utf-8");
79404
79481
  if (videoFilename) {
@@ -79553,7 +79630,7 @@ function applyResolutionPreset(destDir, resolution) {
79553
79630
  async function scaffoldProject(destDir, name, templateId, localVideoName, durationSeconds, tailwind = false, resolution) {
79554
79631
  mkdirSync31(destDir, { recursive: true });
79555
79632
  const templateDir = getStaticTemplateDir(templateId);
79556
- if (existsSync50(join59(templateDir, "index.html"))) {
79633
+ if (existsSync50(join60(templateDir, "index.html"))) {
79557
79634
  cpSync4(templateDir, destDir, { recursive: true });
79558
79635
  } else {
79559
79636
  await fetchRemoteTemplate(templateId, destDir);
@@ -79582,7 +79659,7 @@ async function scaffoldProject(destDir, name, templateId, localVideoName, durati
79582
79659
  const sharedDir = getSharedTemplateDir();
79583
79660
  if (existsSync50(sharedDir)) {
79584
79661
  for (const entry of readdirSync21(sharedDir, { withFileTypes: true })) {
79585
- const src = join59(sharedDir, entry.name);
79662
+ const src = join60(sharedDir, entry.name);
79586
79663
  const dest = resolve26(destDir, entry.name);
79587
79664
  if (entry.isFile() || entry.isSymbolicLink()) {
79588
79665
  copyFileSync5(src, dest);
@@ -80763,7 +80840,7 @@ var init_play = __esm({
80763
80840
  });
80764
80841
 
80765
80842
  // src/utils/publishProject.ts
80766
- import { basename as basename9, join as join60, relative as relative9 } from "path";
80843
+ import { basename as basename9, join as join61, relative as relative9 } from "path";
80767
80844
  import { readdirSync as readdirSync22, readFileSync as readFileSync38, statSync as statSync19 } from "fs";
80768
80845
  import AdmZip from "adm-zip";
80769
80846
  function isRecord2(value) {
@@ -80864,7 +80941,7 @@ function shouldIgnoreSegment(segment) {
80864
80941
  function collectProjectFiles(rootDir, currentDir, paths) {
80865
80942
  for (const entry of readdirSync22(currentDir, { withFileTypes: true })) {
80866
80943
  if (shouldIgnoreSegment(entry.name)) continue;
80867
- const absolutePath = join60(currentDir, entry.name);
80944
+ const absolutePath = join61(currentDir, entry.name);
80868
80945
  const relativePath = relative9(rootDir, absolutePath).replaceAll("\\", "/");
80869
80946
  if (!relativePath) continue;
80870
80947
  if (entry.isDirectory()) {
@@ -80883,7 +80960,7 @@ function createPublishArchive(projectDir) {
80883
80960
  }
80884
80961
  const archive = new AdmZip();
80885
80962
  for (const filePath of filePaths) {
80886
- archive.addFile(filePath, readFileSync38(join60(projectDir, filePath)));
80963
+ archive.addFile(filePath, readFileSync38(join61(projectDir, filePath)));
80887
80964
  }
80888
80965
  return {
80889
80966
  buffer: archive.toBuffer(),
@@ -81005,7 +81082,7 @@ __export(publish_exports, {
81005
81082
  });
81006
81083
  import { basename as basename10, resolve as resolve31 } from "path";
81007
81084
  import { existsSync as existsSync54 } from "fs";
81008
- import { join as join61 } from "path";
81085
+ import { join as join62 } from "path";
81009
81086
  var examples6, publish_default;
81010
81087
  var init_publish = __esm({
81011
81088
  "src/commands/publish.ts"() {
@@ -81040,7 +81117,7 @@ var init_publish = __esm({
81040
81117
  const dir = resolve31(rawArg ?? ".");
81041
81118
  const isImplicitCwd = !rawArg || rawArg === "." || rawArg === "./";
81042
81119
  const projectName = isImplicitCwd ? basename10(process.env["PWD"] ?? dir) : basename10(dir);
81043
- const indexPath = join61(dir, "index.html");
81120
+ const indexPath = join62(dir, "index.html");
81044
81121
  if (existsSync54(indexPath)) {
81045
81122
  const lintResult = await lintProject({ dir, name: projectName, indexPath });
81046
81123
  if (lintResult.totalErrors > 0 || lintResult.totalWarnings > 0) {
@@ -81113,7 +81190,7 @@ var init_dom = __esm({
81113
81190
  // src/utils/variables.ts
81114
81191
  import { readFileSync as readFileSync39 } from "fs";
81115
81192
  import { resolve as resolve32 } from "path";
81116
- function parseVariablesArg(inline, filePath, readFile = (p2) => readFileSync39(resolve32(p2), "utf8")) {
81193
+ function parseVariablesArg(inline, filePath, readFile2 = (p2) => readFileSync39(resolve32(p2), "utf8")) {
81117
81194
  if (inline != null && filePath != null) {
81118
81195
  return { ok: false, error: { kind: "conflict" } };
81119
81196
  }
@@ -81124,7 +81201,7 @@ function parseVariablesArg(inline, filePath, readFile = (p2) => readFileSync39(r
81124
81201
  source = "inline";
81125
81202
  } else if (filePath != null) {
81126
81203
  try {
81127
- raw = readFile(filePath);
81204
+ raw = readFile2(filePath);
81128
81205
  source = "file";
81129
81206
  } catch (error) {
81130
81207
  return {
@@ -81462,7 +81539,7 @@ __export(render_exports, {
81462
81539
  });
81463
81540
  import { mkdirSync as mkdirSync32, readdirSync as readdirSync23, readFileSync as readFileSync40, statSync as statSync20, writeFileSync as writeFileSync27, rmSync as rmSync14 } from "fs";
81464
81541
  import { cpus as cpus4, freemem as freemem4, tmpdir as tmpdir5 } from "os";
81465
- import { resolve as resolve33, dirname as dirname22, join as join62, basename as basename11 } from "path";
81542
+ import { resolve as resolve33, dirname as dirname22, join as join63, basename as basename11 } from "path";
81466
81543
  import { execFileSync as execFileSync6, spawn as spawn13 } from "child_process";
81467
81544
  function formatFpsParseError(input2, reason) {
81468
81545
  switch (reason) {
@@ -81519,9 +81596,9 @@ function ensureDockerImage(version, quiet) {
81519
81596
  }
81520
81597
  if (!quiet) console.log(c2.dim(` Building Docker image: ${tag}...`));
81521
81598
  const dockerfilePath = resolveDockerfilePath();
81522
- const tmpDir = join62(tmpdir5(), `hyperframes-docker-${Date.now()}`);
81599
+ const tmpDir = join63(tmpdir5(), `hyperframes-docker-${Date.now()}`);
81523
81600
  mkdirSync32(tmpDir, { recursive: true });
81524
- writeFileSync27(join62(tmpDir, "Dockerfile"), readFileSync40(dockerfilePath));
81601
+ writeFileSync27(join63(tmpDir, "Dockerfile"), readFileSync40(dockerfilePath));
81525
81602
  try {
81526
81603
  execFileSync6(
81527
81604
  "docker",
@@ -81738,7 +81815,7 @@ function printRenderComplete(outputPath, elapsedMs, quiet) {
81738
81815
  for (const entry of readdirSync23(outputPath, { withFileTypes: true })) {
81739
81816
  if (!entry.isFile()) continue;
81740
81817
  try {
81741
- total += statSync20(join62(outputPath, entry.name)).size;
81818
+ total += statSync20(join63(outputPath, entry.name)).size;
81742
81819
  } catch {
81743
81820
  }
81744
81821
  }
@@ -81990,7 +82067,7 @@ var init_render2 = __esm({
81990
82067
  const now = /* @__PURE__ */ new Date();
81991
82068
  const datePart = now.toISOString().slice(0, 10);
81992
82069
  const timePart = now.toTimeString().slice(0, 8).replace(/:/g, "-");
81993
- const outputPath = args.output ? resolve33(args.output) : join62(rendersDir, `${project.name}_${datePart}_${timePart}${ext}`);
82070
+ const outputPath = args.output ? resolve33(args.output) : join63(rendersDir, `${project.name}_${datePart}_${timePart}${ext}`);
81994
82071
  mkdirSync32(dirname22(outputPath), { recursive: true });
81995
82072
  const useDocker = args.docker ?? false;
81996
82073
  const useGpu = args.gpu ?? false;
@@ -82582,7 +82659,7 @@ __export(layout_exports, {
82582
82659
  examples: () => examples9
82583
82660
  });
82584
82661
  import { existsSync as existsSync56, readFileSync as readFileSync42 } from "fs";
82585
- import { dirname as dirname23, join as join63 } from "path";
82662
+ import { dirname as dirname23, join as join64 } from "path";
82586
82663
  import { fileURLToPath as fileURLToPath8 } from "url";
82587
82664
  async function getCompositionDuration2(page) {
82588
82665
  return page.evaluate(() => {
@@ -82728,8 +82805,8 @@ async function runLayoutAudit(projectDir, opts) {
82728
82805
  }
82729
82806
  function loadLayoutAuditScript() {
82730
82807
  const candidates = [
82731
- join63(__dirname2, "layout-audit.browser.js"),
82732
- join63(__dirname2, "commands", "layout-audit.browser.js")
82808
+ join64(__dirname2, "layout-audit.browser.js"),
82809
+ join64(__dirname2, "commands", "layout-audit.browser.js")
82733
82810
  ];
82734
82811
  for (const candidate of candidates) {
82735
82812
  if (existsSync56(candidate)) return readFileSync42(candidate, "utf-8");
@@ -82941,11 +83018,11 @@ __export(info_exports, {
82941
83018
  examples: () => examples11
82942
83019
  });
82943
83020
  import { readFileSync as readFileSync43, readdirSync as readdirSync24, statSync as statSync21 } from "fs";
82944
- import { join as join64 } from "path";
83021
+ import { join as join65 } from "path";
82945
83022
  function totalSize(dir) {
82946
83023
  let total = 0;
82947
83024
  for (const entry of readdirSync24(dir, { withFileTypes: true })) {
82948
- const path2 = join64(dir, entry.name);
83025
+ const path2 = join65(dir, entry.name);
82949
83026
  if (entry.isDirectory()) {
82950
83027
  total += totalSize(path2);
82951
83028
  } else {
@@ -83212,7 +83289,7 @@ __export(benchmark_exports, {
83212
83289
  examples: () => examples13
83213
83290
  });
83214
83291
  import { existsSync as existsSync58, statSync as statSync22 } from "fs";
83215
- import { resolve as resolve36, join as join65 } from "path";
83292
+ import { resolve as resolve36, join as join66 } from "path";
83216
83293
  var examples13, FPS_30, FPS_60, DEFAULT_CONFIGS, benchmark_default;
83217
83294
  var init_benchmark = __esm({
83218
83295
  "src/commands/benchmark.ts"() {
@@ -83290,7 +83367,7 @@ var init_benchmark = __esm({
83290
83367
  s2?.start(`Benchmarking ${config.label}...`);
83291
83368
  for (let i2 = 0; i2 < runsPerConfig; i2++) {
83292
83369
  s2?.message(`${config.label} \u2014 run ${i2 + 1}/${runsPerConfig}`);
83293
- const outputPath = join65(
83370
+ const outputPath = join66(
83294
83371
  benchDir,
83295
83372
  `${config.label.replace(/[^a-zA-Z0-9]/g, "_")}_run${i2}.mp4`
83296
83373
  );
@@ -83560,7 +83637,7 @@ __export(manager_exports3, {
83560
83637
  });
83561
83638
  import { existsSync as existsSync59, mkdirSync as mkdirSync33 } from "fs";
83562
83639
  import { homedir as homedir9, platform as platform7, arch } from "os";
83563
- import { join as join66 } from "path";
83640
+ import { join as join67 } from "path";
83564
83641
  function isDevice(value) {
83565
83642
  return typeof value === "string" && DEVICES.includes(value);
83566
83643
  }
@@ -83600,7 +83677,7 @@ function listAvailableProviders() {
83600
83677
  return out;
83601
83678
  }
83602
83679
  function modelPath(model = DEFAULT_MODEL2) {
83603
- return join66(MODELS_DIR2, `${model}.onnx`);
83680
+ return join67(MODELS_DIR2, `${model}.onnx`);
83604
83681
  }
83605
83682
  async function ensureModel2(model = DEFAULT_MODEL2, options) {
83606
83683
  const dest = modelPath(model);
@@ -83618,7 +83695,7 @@ var init_manager3 = __esm({
83618
83695
  "src/background-removal/manager.ts"() {
83619
83696
  "use strict";
83620
83697
  init_download();
83621
- MODELS_DIR2 = join66(homedir9(), ".cache", "hyperframes", "background-removal", "models");
83698
+ MODELS_DIR2 = join67(homedir9(), ".cache", "hyperframes", "background-removal", "models");
83622
83699
  DEFAULT_MODEL2 = "u2net_human_seg";
83623
83700
  MODEL_URLS = {
83624
83701
  u2net_human_seg: "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx"
@@ -84302,7 +84379,7 @@ __export(transcribe_exports2, {
84302
84379
  examples: () => examples16
84303
84380
  });
84304
84381
  import { existsSync as existsSync61, writeFileSync as writeFileSync28 } from "fs";
84305
- import { resolve as resolve38, join as join67, extname as extname11, dirname as dirname25 } from "path";
84382
+ import { resolve as resolve38, join as join68, extname as extname11, dirname as dirname25 } from "path";
84306
84383
  async function importTranscript(inputPath, dir, json) {
84307
84384
  const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
84308
84385
  const { words, format } = loadTranscript2(inputPath);
@@ -84310,7 +84387,7 @@ async function importTranscript(inputPath, dir, json) {
84310
84387
  console.error(c2.error("No words found in transcript."));
84311
84388
  process.exit(1);
84312
84389
  }
84313
- const outPath = join67(dir, "transcript.json");
84390
+ const outPath = join68(dir, "transcript.json");
84314
84391
  writeFileSync28(outPath, JSON.stringify(words, null, 2));
84315
84392
  patchCaptionHtml2(dir, words);
84316
84393
  if (json) {
@@ -84450,7 +84527,7 @@ var init_transcribe2 = __esm({
84450
84527
  // src/tts/manager.ts
84451
84528
  import { existsSync as existsSync62, mkdirSync as mkdirSync34 } from "fs";
84452
84529
  import { homedir as homedir10 } from "os";
84453
- import { join as join68 } from "path";
84530
+ import { join as join69 } from "path";
84454
84531
  function inferLangFromVoiceId(voiceId) {
84455
84532
  const first = voiceId.charAt(0).toLowerCase();
84456
84533
  return VOICE_PREFIX_LANG[first] ?? "en-us";
@@ -84459,7 +84536,7 @@ function isSupportedLang(value) {
84459
84536
  return SUPPORTED_LANGS.includes(value);
84460
84537
  }
84461
84538
  async function ensureModel3(model = DEFAULT_MODEL3, options) {
84462
- const modelPath2 = join68(MODELS_DIR3, `${model}.onnx`);
84539
+ const modelPath2 = join69(MODELS_DIR3, `${model}.onnx`);
84463
84540
  if (existsSync62(modelPath2)) return modelPath2;
84464
84541
  const url = MODEL_URLS2[model];
84465
84542
  if (!url) {
@@ -84476,7 +84553,7 @@ async function ensureModel3(model = DEFAULT_MODEL3, options) {
84476
84553
  return modelPath2;
84477
84554
  }
84478
84555
  async function ensureVoices(options) {
84479
- const voicesPath = join68(VOICES_DIR, "voices-v1.0.bin");
84556
+ const voicesPath = join69(VOICES_DIR, "voices-v1.0.bin");
84480
84557
  if (existsSync62(voicesPath)) return voicesPath;
84481
84558
  mkdirSync34(VOICES_DIR, { recursive: true });
84482
84559
  options?.onProgress?.("Downloading voice data (~27 MB)...");
@@ -84491,9 +84568,9 @@ var init_manager4 = __esm({
84491
84568
  "src/tts/manager.ts"() {
84492
84569
  "use strict";
84493
84570
  init_download();
84494
- CACHE_DIR3 = join68(homedir10(), ".cache", "hyperframes", "tts");
84495
- MODELS_DIR3 = join68(CACHE_DIR3, "models");
84496
- VOICES_DIR = join68(CACHE_DIR3, "voices");
84571
+ CACHE_DIR3 = join69(homedir10(), ".cache", "hyperframes", "tts");
84572
+ MODELS_DIR3 = join69(CACHE_DIR3, "models");
84573
+ VOICES_DIR = join69(CACHE_DIR3, "voices");
84497
84574
  DEFAULT_MODEL3 = "kokoro-v1.0";
84498
84575
  MODEL_URLS2 = {
84499
84576
  "kokoro-v1.0": "https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx"
@@ -84555,7 +84632,7 @@ __export(synthesize_exports, {
84555
84632
  });
84556
84633
  import { execFileSync as execFileSync7 } from "child_process";
84557
84634
  import { existsSync as existsSync63, writeFileSync as writeFileSync29, mkdirSync as mkdirSync35, readdirSync as readdirSync25, unlinkSync as unlinkSync6 } from "fs";
84558
- import { join as join69, dirname as dirname26, basename as basename12 } from "path";
84635
+ import { join as join70, dirname as dirname26, basename as basename12 } from "path";
84559
84636
  import { homedir as homedir11 } from "os";
84560
84637
  function findPython() {
84561
84638
  for (const name of ["python3", "python"]) {
@@ -84599,7 +84676,7 @@ function ensureSynthScript() {
84599
84676
  for (const entry of readdirSync25(SCRIPT_DIR)) {
84600
84677
  if (entry !== currentName && /^synth(-v\d+)?\.py$/.test(entry)) {
84601
84678
  try {
84602
- unlinkSync6(join69(SCRIPT_DIR, entry));
84679
+ unlinkSync6(join70(SCRIPT_DIR, entry));
84603
84680
  } catch {
84604
84681
  }
84605
84682
  }
@@ -84709,8 +84786,8 @@ print(json.dumps({
84709
84786
  "langApplied": bool(lang and supports_lang),
84710
84787
  }))
84711
84788
  `;
84712
- SCRIPT_DIR = join69(homedir11(), ".cache", "hyperframes", "tts");
84713
- SCRIPT_PATH = join69(SCRIPT_DIR, "synth-v2.py");
84789
+ SCRIPT_DIR = join70(homedir11(), ".cache", "hyperframes", "tts");
84790
+ SCRIPT_PATH = join70(SCRIPT_DIR, "synth-v2.py");
84714
84791
  }
84715
84792
  });
84716
84793
 
@@ -84924,7 +85001,7 @@ __export(docs_exports, {
84924
85001
  examples: () => examples18
84925
85002
  });
84926
85003
  import { readFileSync as readFileSync46, existsSync as existsSync65 } from "fs";
84927
- import { resolve as resolve40, dirname as dirname27, join as join70 } from "path";
85004
+ import { resolve as resolve40, dirname as dirname27, join as join71 } from "path";
84928
85005
  import { fileURLToPath as fileURLToPath9 } from "url";
84929
85006
  function docsDir() {
84930
85007
  const thisFile = fileURLToPath9(import.meta.url);
@@ -85028,7 +85105,7 @@ var init_docs = __esm({
85028
85105
  }
85029
85106
  process.exit(1);
85030
85107
  }
85031
- const filePath = join70(docsDir(), entry.file);
85108
+ const filePath = join71(docsDir(), entry.file);
85032
85109
  if (!existsSync65(filePath)) {
85033
85110
  console.error(c2.error(`Doc file not found: ${filePath}`));
85034
85111
  process.exit(1);
@@ -85587,7 +85664,7 @@ __export(validate_exports, {
85587
85664
  shouldIgnoreRequestFailure: () => shouldIgnoreRequestFailure
85588
85665
  });
85589
85666
  import { existsSync as existsSync66, readFileSync as readFileSync47 } from "fs";
85590
- import { join as join71, dirname as dirname28 } from "path";
85667
+ import { join as join72, dirname as dirname28 } from "path";
85591
85668
  import { fileURLToPath as fileURLToPath10 } from "url";
85592
85669
  function shouldIgnoreRequestFailure(url, errorText) {
85593
85670
  if (errorText !== "net::ERR_ABORTED") return false;
@@ -85639,8 +85716,8 @@ async function runContrastAudit(page) {
85639
85716
  }
85640
85717
  function loadContrastAuditScript() {
85641
85718
  const candidates = [
85642
- join71(__dirname3, "contrast-audit.browser.js"),
85643
- join71(__dirname3, "commands", "contrast-audit.browser.js")
85719
+ join72(__dirname3, "contrast-audit.browser.js"),
85720
+ join72(__dirname3, "commands", "contrast-audit.browser.js")
85644
85721
  ];
85645
85722
  for (const candidate of candidates) {
85646
85723
  if (existsSync66(candidate)) return readFileSync47(candidate, "utf-8");
@@ -85660,7 +85737,7 @@ async function validateInBrowser(projectDir, opts) {
85660
85737
  res.end(html);
85661
85738
  return;
85662
85739
  }
85663
- const filePath = join71(projectDir, decodeURIComponent(url));
85740
+ const filePath = join72(projectDir, decodeURIComponent(url));
85664
85741
  if (existsSync66(filePath)) {
85665
85742
  res.writeHead(200, { "Content-Type": getMimeType2(filePath) });
85666
85743
  res.end(readFileSync47(filePath));
@@ -85866,7 +85943,7 @@ __export(contactSheet_exports, {
85866
85943
  });
85867
85944
  import sharp from "sharp";
85868
85945
  import { readdirSync as readdirSync26, readFileSync as readFileSync48, writeFileSync as writeFileSync30, unlinkSync as unlinkSync7, existsSync as existsSync67 } from "fs";
85869
- import { join as join72, extname as extname13, basename as basename13, dirname as dirname29 } from "path";
85946
+ import { join as join73, extname as extname13, basename as basename13, dirname as dirname29 } from "path";
85870
85947
  async function createContactSheet(imagePaths, outputPath, opts = {}) {
85871
85948
  const {
85872
85949
  cols = 3,
@@ -85948,7 +86025,7 @@ async function createScrollContactSheet(screenshotsDir, outputPath) {
85948
86025
  if (!existsSync67(screenshotsDir)) return [];
85949
86026
  const scrollFiles = readdirSync26(screenshotsDir).filter((f3) => f3.startsWith("scroll-") && f3.endsWith(".png")).sort();
85950
86027
  if (scrollFiles.length === 0) return [];
85951
- const paths = scrollFiles.map((f3) => join72(screenshotsDir, f3));
86028
+ const paths = scrollFiles.map((f3) => join73(screenshotsDir, f3));
85952
86029
  const labels = scrollFiles.map((f3) => {
85953
86030
  const m2 = f3.match(/scroll-(\d+)\.png/);
85954
86031
  return m2 ? `${m2[1]}% scroll` : f3;
@@ -85965,7 +86042,7 @@ async function createSnapshotContactSheet(snapshotsDir, outputPath) {
85965
86042
  if (!existsSync67(snapshotsDir)) return [];
85966
86043
  const snapshotFiles = readdirSync26(snapshotsDir).filter((f3) => f3.startsWith("frame-") && f3.endsWith(".png")).sort();
85967
86044
  if (snapshotFiles.length === 0) return [];
85968
- const paths = snapshotFiles.map((f3) => join72(snapshotsDir, f3));
86045
+ const paths = snapshotFiles.map((f3) => join73(snapshotsDir, f3));
85969
86046
  const labels = snapshotFiles.map((f3) => {
85970
86047
  const m2 = f3.match(/at-([\d.]+)s/);
85971
86048
  return m2 ? `${m2[1]}s` : f3;
@@ -85983,7 +86060,7 @@ async function createAssetContactSheet(assetsDir, outputPath) {
85983
86060
  const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp"]);
85984
86061
  const assetFiles = readdirSync26(assetsDir).filter((f3) => imageExts.has(extname13(f3).toLowerCase()) && !f3.includes("contact-sheet")).sort();
85985
86062
  if (assetFiles.length === 0) return [];
85986
- const paths = assetFiles.map((f3) => join72(assetsDir, f3));
86063
+ const paths = assetFiles.map((f3) => join73(assetsDir, f3));
85987
86064
  return createContactSheetPages(paths, outputPath, {
85988
86065
  cols: 4,
85989
86066
  cellWidth: 480,
@@ -86002,7 +86079,7 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
86002
86079
  for (const f3 of readdirSync26(dir).filter((f4) => f4.endsWith(".svg")).sort()) {
86003
86080
  if (!seen.has(f3)) {
86004
86081
  seen.add(f3);
86005
- svgPaths.push(join72(dir, f3));
86082
+ svgPaths.push(join73(dir, f3));
86006
86083
  }
86007
86084
  }
86008
86085
  }
@@ -86014,7 +86091,7 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
86014
86091
  const labels = [];
86015
86092
  for (let i2 = 0; i2 < svgPaths.length; i2++) {
86016
86093
  const svgPath = svgPaths[i2];
86017
- const tmpPath = join72(tmpDir, `.thumb-${i2}.png`);
86094
+ const tmpPath = join73(tmpDir, `.thumb-${i2}.png`);
86018
86095
  try {
86019
86096
  const svgBuf = readFileSync48(svgPath);
86020
86097
  const thumb = await sharp(svgBuf).resize(thumbSize, thumbSize, {
@@ -100269,7 +100346,7 @@ var require_getCredentials = __commonJS({
100269
100346
  var fs5 = __require("fs");
100270
100347
  var util_1 = __require("util");
100271
100348
  var errorWithCode_1 = require_errorWithCode();
100272
- var readFile = fs5.readFile ? (0, util_1.promisify)(fs5.readFile) : async () => {
100349
+ var readFile2 = fs5.readFile ? (0, util_1.promisify)(fs5.readFile) : async () => {
100273
100350
  throw new errorWithCode_1.ErrorWithCode("use key rather than keyFile.", "MISSING_CREDENTIALS");
100274
100351
  };
100275
100352
  var ExtensionFiles;
@@ -100291,7 +100368,7 @@ var require_getCredentials = __commonJS({
100291
100368
  * @returns A promise that resolves with the credentials.
100292
100369
  */
100293
100370
  async getCredentials() {
100294
- const key2 = await readFile(this.keyFilePath, "utf8");
100371
+ const key2 = await readFile2(this.keyFilePath, "utf8");
100295
100372
  let body;
100296
100373
  try {
100297
100374
  body = JSON.parse(key2);
@@ -100317,7 +100394,7 @@ var require_getCredentials = __commonJS({
100317
100394
  * @returns A promise that resolves with the private key.
100318
100395
  */
100319
100396
  async getCredentials() {
100320
- const privateKey = await readFile(this.keyFilePath, "utf8");
100397
+ const privateKey = await readFile2(this.keyFilePath, "utf8");
100321
100398
  return { privateKey };
100322
100399
  }
100323
100400
  };
@@ -101947,7 +102024,7 @@ var require_filesubjecttokensupplier = __commonJS({
101947
102024
  exports.FileSubjectTokenSupplier = void 0;
101948
102025
  var util_1 = __require("util");
101949
102026
  var fs5 = __require("fs");
101950
- var readFile = (0, util_1.promisify)(fs5.readFile ?? (() => {
102027
+ var readFile2 = (0, util_1.promisify)(fs5.readFile ?? (() => {
101951
102028
  }));
101952
102029
  var realpath = (0, util_1.promisify)(fs5.realpath ?? (() => {
101953
102030
  }));
@@ -101987,7 +102064,7 @@ var require_filesubjecttokensupplier = __commonJS({
101987
102064
  throw err;
101988
102065
  }
101989
102066
  let subjectToken;
101990
- const rawText = await readFile(parsedFilePath, { encoding: "utf8" });
102067
+ const rawText = await readFile2(parsedFilePath, { encoding: "utf8" });
101991
102068
  if (this.formatType === "text") {
101992
102069
  subjectToken = rawText;
101993
102070
  } else if (this.formatType === "json" && this.subjectTokenFieldName) {
@@ -106800,7 +106877,7 @@ var require_websocket = __commonJS({
106800
106877
  var http4 = __require("http");
106801
106878
  var net2 = __require("net");
106802
106879
  var tls = __require("tls");
106803
- var { randomBytes: randomBytes4, createHash: createHash9 } = __require("crypto");
106880
+ var { randomBytes: randomBytes4, createHash: createHash10 } = __require("crypto");
106804
106881
  var { Duplex, Readable: Readable3 } = __require("stream");
106805
106882
  var { URL: URL2 } = __require("url");
106806
106883
  var PerMessageDeflate2 = require_permessage_deflate();
@@ -107460,7 +107537,7 @@ var require_websocket = __commonJS({
107460
107537
  abortHandshake(websocket, socket, "Invalid Upgrade header");
107461
107538
  return;
107462
107539
  }
107463
- const digest = createHash9("sha1").update(key2 + GUID).digest("base64");
107540
+ const digest = createHash10("sha1").update(key2 + GUID).digest("base64");
107464
107541
  if (res.headers["sec-websocket-accept"] !== digest) {
107465
107542
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
107466
107543
  return;
@@ -107827,7 +107904,7 @@ var require_websocket_server = __commonJS({
107827
107904
  var EventEmitter = __require("events");
107828
107905
  var http4 = __require("http");
107829
107906
  var { Duplex } = __require("stream");
107830
- var { createHash: createHash9 } = __require("crypto");
107907
+ var { createHash: createHash10 } = __require("crypto");
107831
107908
  var extension2 = require_extension();
107832
107909
  var PerMessageDeflate2 = require_permessage_deflate();
107833
107910
  var subprotocol2 = require_subprotocol();
@@ -108128,7 +108205,7 @@ var require_websocket_server = __commonJS({
108128
108205
  );
108129
108206
  }
108130
108207
  if (this._state > RUNNING) return abortHandshake(socket, 503);
108131
- const digest = createHash9("sha1").update(key2 + GUID).digest("base64");
108208
+ const digest = createHash10("sha1").update(key2 + GUID).digest("base64");
108132
108209
  const headers = [
108133
108210
  "HTTP/1.1 101 Switching Protocols",
108134
108211
  "Upgrade: websocket",
@@ -126576,10 +126653,10 @@ __export(snapshot_exports, {
126576
126653
  import { spawn as spawn15 } from "child_process";
126577
126654
  import { existsSync as existsSync68, mkdtempSync as mkdtempSync3, readFileSync as readFileSync49, mkdirSync as mkdirSync36, rmSync as rmSync15, writeFileSync as writeFileSync31 } from "fs";
126578
126655
  import { tmpdir as tmpdir6 } from "os";
126579
- import { resolve as resolve41, join as join73, relative as relative11, isAbsolute as isAbsolute10 } from "path";
126656
+ import { resolve as resolve41, join as join74, relative as relative11, isAbsolute as isAbsolute10 } from "path";
126580
126657
  async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false) {
126581
- const tmp = mkdtempSync3(join73(tmpdir6(), "hf-snapshot-frame-"));
126582
- const outPath = join73(tmp, "frame.png");
126658
+ const tmp = mkdtempSync3(join74(tmpdir6(), "hf-snapshot-frame-"));
126659
+ const outPath = join74(tmp, "frame.png");
126583
126660
  try {
126584
126661
  const result = await new Promise(
126585
126662
  (resolvePromise) => {
@@ -126718,13 +126795,13 @@ async function captureSnapshots(projectDir, opts) {
126718
126795
  return [];
126719
126796
  }
126720
126797
  const positions = opts.at?.length ? opts.at : numFrames === 1 ? [duration / 2] : Array.from({ length: numFrames }, (_, i2) => i2 / (numFrames - 1) * duration);
126721
- const snapshotDir = join73(projectDir, "snapshots");
126798
+ const snapshotDir = join74(projectDir, "snapshots");
126722
126799
  mkdirSync36(snapshotDir, { recursive: true });
126723
126800
  try {
126724
126801
  const { readdirSync: readdirSync32 } = await import("fs");
126725
126802
  for (const file of readdirSync32(snapshotDir)) {
126726
126803
  if (/\.(png|jpg|jpeg)$/i.test(file)) {
126727
- rmSync15(join73(snapshotDir, file), { force: true });
126804
+ rmSync15(join74(snapshotDir, file), { force: true });
126728
126805
  }
126729
126806
  }
126730
126807
  } catch {
@@ -126835,7 +126912,7 @@ async function captureSnapshots(projectDir, opts) {
126835
126912
  }
126836
126913
  const timeLabel = `${time.toFixed(1)}s`;
126837
126914
  const filename = `frame-${String(i2).padStart(2, "0")}-at-${timeLabel}.png`;
126838
- const framePath = join73(snapshotDir, filename);
126915
+ const framePath = join74(snapshotDir, filename);
126839
126916
  await page.screenshot({ path: framePath, type: "png" });
126840
126917
  savedPaths.push(`snapshots/${filename}`);
126841
126918
  }
@@ -126915,10 +126992,10 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
126915
126992
  }
126916
126993
  try {
126917
126994
  const { createSnapshotContactSheet: createSnapshotContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
126918
- const snapshotDir = join73(project.dir, "snapshots");
126995
+ const snapshotDir = join74(project.dir, "snapshots");
126919
126996
  const sheets = await createSnapshotContactSheet2(
126920
126997
  snapshotDir,
126921
- join73(snapshotDir, "contact-sheet.jpg")
126998
+ join74(snapshotDir, "contact-sheet.jpg")
126922
126999
  );
126923
127000
  if (sheets.length > 0) {
126924
127001
  const label3 = sheets.length === 1 ? "contact-sheet.jpg" : `contact-sheet-1..${sheets.length}.jpg`;
@@ -126936,7 +127013,7 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
126936
127013
  const { GoogleGenAI: GoogleGenAI2 } = await Promise.resolve().then(() => (init_node4(), node_exports));
126937
127014
  const ai = new GoogleGenAI2({ apiKey: geminiKey });
126938
127015
  const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
126939
- const snapshotDir = join73(project.dir, "snapshots");
127016
+ const snapshotDir = join74(project.dir, "snapshots");
126940
127017
  const customQuestion = describeArg === "true" ? "Describe this video composition frame in 1-2 sentences. Be specific and factual: what elements are visible, what text appears, is the frame blank/black/loading, what is the composition. Flag any obvious problems." : describeArg;
126941
127018
  const descriptions = [
126942
127019
  `# Snapshot Frame Descriptions`,
@@ -126955,7 +127032,7 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
126955
127032
  const results = await Promise.allSettled(
126956
127033
  paths.map(async (p2) => {
126957
127034
  const filename = p2.replace("snapshots/", "");
126958
- const filePath = join73(snapshotDir, filename);
127035
+ const filePath = join74(snapshotDir, filename);
126959
127036
  if (!existsSync68(filePath)) return { filename, desc: "file not found" };
126960
127037
  const raw = readFileSync49(filePath);
126961
127038
  let imageData;
@@ -126993,7 +127070,7 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
126993
127070
  descriptions.push(`## (error)`, `Gemini call failed: ${errMsg.slice(0, 120)}`, ``);
126994
127071
  }
126995
127072
  }
126996
- const descPath = join73(snapshotDir, "descriptions.md");
127073
+ const descPath = join74(snapshotDir, "descriptions.md");
126997
127074
  writeFileSync31(descPath, descriptions.join("\n"));
126998
127075
  console.log(` ${c2.dim("descriptions.md")} (Gemini frame analysis)`);
126999
127076
  }
@@ -127015,13 +127092,13 @@ ${c2.error("\u2717")} Snapshot failed: ${msg}`);
127015
127092
 
127016
127093
  // src/capture/assetDownloader.ts
127017
127094
  import { writeFileSync as writeFileSync32, mkdirSync as mkdirSync37 } from "fs";
127018
- import { join as join74, extname as extname14 } from "path";
127095
+ import { join as join75, extname as extname14 } from "path";
127019
127096
  async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks) {
127020
- const assetsDir = join74(outputDir, "assets");
127097
+ const assetsDir = join75(outputDir, "assets");
127021
127098
  mkdirSync37(assetsDir, { recursive: true });
127022
127099
  const assets = [];
127023
127100
  const downloadedUrls = /* @__PURE__ */ new Set();
127024
- mkdirSync37(join74(outputDir, "assets", "svgs"), { recursive: true });
127101
+ mkdirSync37(join75(outputDir, "assets", "svgs"), { recursive: true });
127025
127102
  const usedSvgNames = /* @__PURE__ */ new Set();
127026
127103
  for (let i2 = 0; i2 < tokens.svgs.length && i2 < 30; i2++) {
127027
127104
  const svg = tokens.svgs[i2];
@@ -127038,7 +127115,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
127038
127115
  const name = `${finalSlug}.svg`;
127039
127116
  const localPath = `assets/svgs/${name}`;
127040
127117
  try {
127041
- writeFileSync32(join74(outputDir, localPath), svg.outerHTML, "utf-8");
127118
+ writeFileSync32(join75(outputDir, localPath), svg.outerHTML, "utf-8");
127042
127119
  assets.push({ url: "", localPath, type: "svg" });
127043
127120
  } catch {
127044
127121
  }
@@ -127051,7 +127128,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
127051
127128
  const localPath = `assets/${name}`;
127052
127129
  const buffer = await fetchBuffer(icon.href);
127053
127130
  if (buffer) {
127054
- writeFileSync32(join74(outputDir, localPath), buffer);
127131
+ writeFileSync32(join75(outputDir, localPath), buffer);
127055
127132
  assets.push({ url: icon.href, localPath, type: "favicon" });
127056
127133
  break;
127057
127134
  }
@@ -127108,7 +127185,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
127108
127185
  const name = `${slug}${ext}`;
127109
127186
  usedNames.add(slug);
127110
127187
  const localPath = `assets/${name}`;
127111
- writeFileSync32(join74(outputDir, localPath), buffer);
127188
+ writeFileSync32(join75(outputDir, localPath), buffer);
127112
127189
  assets.push({ url, localPath, type: "image" });
127113
127190
  imgIdx++;
127114
127191
  } catch {
@@ -127121,7 +127198,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
127121
127198
  const localPath = `assets/og-image${ext}`;
127122
127199
  const buffer = await fetchBuffer(tokens.ogImage);
127123
127200
  if (buffer && buffer.length > 5e3) {
127124
- writeFileSync32(join74(outputDir, localPath), buffer);
127201
+ writeFileSync32(join75(outputDir, localPath), buffer);
127125
127202
  assets.push({ url: tokens.ogImage, localPath, type: "image" });
127126
127203
  }
127127
127204
  } catch {
@@ -127144,7 +127221,7 @@ function normalizeUrl(u) {
127144
127221
  }
127145
127222
  }
127146
127223
  async function downloadAndRewriteFonts(css, outputDir) {
127147
- const assetsDir = join74(outputDir, "assets", "fonts");
127224
+ const assetsDir = join75(outputDir, "assets", "fonts");
127148
127225
  mkdirSync37(assetsDir, { recursive: true });
127149
127226
  const fontUrlRegex = /url\(['"]?(https?:\/\/[^'")\s]+\.(?:woff2?|ttf|otf)[^'")\s]*?)['"]?\)/g;
127150
127227
  const fontUrls = /* @__PURE__ */ new Set();
@@ -127180,7 +127257,7 @@ async function downloadAndRewriteFonts(css, outputDir) {
127180
127257
  try {
127181
127258
  const urlObj = new URL(fontUrl);
127182
127259
  const filename = urlObj.pathname.split("/").pop() || `font-${count}.woff2`;
127183
- const localPath = join74(assetsDir, filename);
127260
+ const localPath = join75(assetsDir, filename);
127184
127261
  const relativePath = `assets/fonts/${filename}`;
127185
127262
  const buffer = await fetchBuffer(fontUrl);
127186
127263
  if (buffer) {
@@ -128152,7 +128229,7 @@ var init_designStyleExtractor = __esm({
128152
128229
 
128153
128230
  // src/capture/fontMetadataExtractor.ts
128154
128231
  import { readdirSync as readdirSync27, readFileSync as readFileSync50, writeFileSync as writeFileSync33, existsSync as existsSync69 } from "fs";
128155
- import { join as join75 } from "path";
128232
+ import { join as join76 } from "path";
128156
128233
  import * as fontkit from "fontkit";
128157
128234
  function isFontCollection(value) {
128158
128235
  return value.type === "TTC" || value.type === "DFont";
@@ -128163,7 +128240,7 @@ function extractFontMetadata(fontsDir, outputPath) {
128163
128240
  if (existsSync69(fontsDir)) {
128164
128241
  const fontFiles = readdirSync27(fontsDir).filter((f3) => /\.(woff2?|ttf|otf)$/i.test(f3));
128165
128242
  for (const filename of fontFiles) {
128166
- const fullPath = join75(fontsDir, filename);
128243
+ const fullPath = join76(fontsDir, filename);
128167
128244
  const meta = readSingleFont(fullPath, filename);
128168
128245
  if (meta.identified) {
128169
128246
  files.push(meta);
@@ -128458,7 +128535,7 @@ var init_animationCataloger = __esm({
128458
128535
 
128459
128536
  // src/capture/mediaCapture.ts
128460
128537
  import { mkdirSync as mkdirSync38, writeFileSync as writeFileSync34, readdirSync as readdirSync28, readFileSync as readFileSync51, statSync as statSync24 } from "fs";
128461
- import { join as join76 } from "path";
128538
+ import { join as join77 } from "path";
128462
128539
  async function saveLottieAnimations(discoveredLotties, lottieDir) {
128463
128540
  let savedCount = 0;
128464
128541
  const savedHashes = /* @__PURE__ */ new Set();
@@ -128491,7 +128568,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
128491
128568
  const hash2 = buf.toString("base64").slice(0, 100);
128492
128569
  if (savedHashes.has(hash2)) continue;
128493
128570
  savedHashes.add(hash2);
128494
- writeFileSync34(join76(lottieDir, `animation-${savedCount}.lottie`), buf);
128571
+ writeFileSync34(join77(lottieDir, `animation-${savedCount}.lottie`), buf);
128495
128572
  savedCount++;
128496
128573
  continue;
128497
128574
  }
@@ -128509,7 +128586,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
128509
128586
  } catch {
128510
128587
  continue;
128511
128588
  }
128512
- writeFileSync34(join76(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
128589
+ writeFileSync34(join77(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
128513
128590
  savedCount++;
128514
128591
  }
128515
128592
  } catch {
@@ -128519,22 +128596,22 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
128519
128596
  }
128520
128597
  async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
128521
128598
  const manifest = [];
128522
- const previewDir = join76(lottieDir, "previews");
128599
+ const previewDir = join77(lottieDir, "previews");
128523
128600
  mkdirSync38(previewDir, { recursive: true });
128524
128601
  for (const file of readdirSync28(lottieDir)) {
128525
128602
  if (!file.endsWith(".json")) continue;
128526
128603
  try {
128527
- const raw = JSON.parse(readFileSync51(join76(lottieDir, file), "utf-8"));
128604
+ const raw = JSON.parse(readFileSync51(join77(lottieDir, file), "utf-8"));
128528
128605
  const fr = raw.fr || 30;
128529
128606
  const dur = ((raw.op || 0) - (raw.ip || 0)) / fr;
128530
128607
  const previewName = file.replace(".json", "-preview.png");
128531
- const fileSize = statSync24(join76(lottieDir, file)).size;
128608
+ const fileSize = statSync24(join77(lottieDir, file)).size;
128532
128609
  if (fileSize > 2e6) continue;
128533
128610
  let previewPage;
128534
128611
  try {
128535
128612
  previewPage = await chromeBrowser.newPage();
128536
128613
  await previewPage.setViewport({ width: 400, height: 400 });
128537
- const animData = JSON.parse(readFileSync51(join76(lottieDir, file), "utf-8"));
128614
+ const animData = JSON.parse(readFileSync51(join77(lottieDir, file), "utf-8"));
128538
128615
  const midFrame = Math.floor(((raw.op || 0) - (raw.ip || 0)) * 0.3);
128539
128616
  await previewPage.setContent(
128540
128617
  `<!DOCTYPE html>
@@ -128564,7 +128641,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
128564
128641
  await previewPage.waitForFunction(() => window.__READY === true, { timeout: 5e3 }).catch(() => {
128565
128642
  });
128566
128643
  await previewPage.screenshot({
128567
- path: join76(previewDir, previewName),
128644
+ path: join77(previewDir, previewName),
128568
128645
  type: "png",
128569
128646
  omitBackground: true
128570
128647
  });
@@ -128588,7 +128665,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
128588
128665
  }
128589
128666
  if (manifest.length > 0) {
128590
128667
  writeFileSync34(
128591
- join76(outputDir, "extracted", "lottie-manifest.json"),
128668
+ join77(outputDir, "extracted", "lottie-manifest.json"),
128592
128669
  JSON.stringify(manifest, null, 2),
128593
128670
  "utf-8"
128594
128671
  );
@@ -128650,15 +128727,15 @@ async function captureVideoManifest(page, outputDir, progress) {
128650
128727
  return true;
128651
128728
  });
128652
128729
  if (uniqueVideos.length > 0) {
128653
- const videoManifestDir = join76(outputDir, "assets", "videos");
128730
+ const videoManifestDir = join77(outputDir, "assets", "videos");
128654
128731
  mkdirSync38(videoManifestDir, { recursive: true });
128655
- const previewDir = join76(videoManifestDir, "previews");
128732
+ const previewDir = join77(videoManifestDir, "previews");
128656
128733
  mkdirSync38(previewDir, { recursive: true });
128657
128734
  const videoManifest = [];
128658
128735
  for (let vi = 0; vi < uniqueVideos.length && vi < 20; vi++) {
128659
128736
  const v2 = uniqueVideos[vi];
128660
128737
  const previewName = `video-${vi}-preview.png`;
128661
- const previewPath = join76(previewDir, previewName);
128738
+ const previewPath = join77(previewDir, previewName);
128662
128739
  try {
128663
128740
  await page.evaluate(`window.scrollTo(0, ${Math.max(0, v2.top - 100)})`);
128664
128741
  await new Promise((r2) => setTimeout(r2, 300));
@@ -128697,7 +128774,7 @@ async function captureVideoManifest(page, outputDir, progress) {
128697
128774
  }
128698
128775
  if (videoManifest.length > 0) {
128699
128776
  writeFileSync34(
128700
- join76(outputDir, "extracted", "video-manifest.json"),
128777
+ join77(outputDir, "extracted", "video-manifest.json"),
128701
128778
  JSON.stringify(videoManifest, null, 2),
128702
128779
  "utf-8"
128703
128780
  );
@@ -128714,7 +128791,7 @@ var init_mediaCapture = __esm({
128714
128791
 
128715
128792
  // src/capture/contentExtractor.ts
128716
128793
  import { existsSync as existsSync70, readdirSync as readdirSync29, statSync as statSync25, readFileSync as readFileSync52 } from "fs";
128717
- import { join as join77 } from "path";
128794
+ import { join as join78 } from "path";
128718
128795
  async function detectLibraries(page, capturedShaders) {
128719
128796
  let detectedLibraries = [];
128720
128797
  try {
@@ -128834,7 +128911,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
128834
128911
  try {
128835
128912
  const { GoogleGenAI: GoogleGenAI2 } = await Promise.resolve().then(() => (init_node4(), node_exports));
128836
128913
  const ai = new GoogleGenAI2({ apiKey: geminiKey });
128837
- const imageFiles = readdirSync29(join77(outputDir, "assets")).filter(
128914
+ const imageFiles = readdirSync29(join78(outputDir, "assets")).filter(
128838
128915
  (f3) => /\.(png|jpg|jpeg|webp|gif)$/i.test(f3)
128839
128916
  );
128840
128917
  const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
@@ -128843,7 +128920,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
128843
128920
  const batch = imageFiles.slice(i2, i2 + BATCH_SIZE);
128844
128921
  const results = await Promise.allSettled(
128845
128922
  batch.map(async (file) => {
128846
- const filePath = join77(outputDir, "assets", file);
128923
+ const filePath = join78(outputDir, "assets", file);
128847
128924
  const stat3 = statSync25(filePath);
128848
128925
  if (stat3.size > 4e6) return { file, caption: "" };
128849
128926
  const buffer = readFileSync52(filePath);
@@ -128883,11 +128960,11 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
128883
128960
  }
128884
128961
  progress("design", `${Object.keys(geminiCaptions).length} images captioned with Gemini`);
128885
128962
  const svgFiles = [];
128886
- const assetsDir = join77(outputDir, "assets");
128963
+ const assetsDir = join78(outputDir, "assets");
128887
128964
  for (const f3 of readdirSync29(assetsDir)) {
128888
128965
  if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: f3 });
128889
128966
  }
128890
- const svgsSubdir = join77(assetsDir, "svgs");
128967
+ const svgsSubdir = join78(assetsDir, "svgs");
128891
128968
  if (existsSync70(svgsSubdir)) {
128892
128969
  for (const f3 of readdirSync29(svgsSubdir)) {
128893
128970
  if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: `svgs/${f3}` });
@@ -128901,7 +128978,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
128901
128978
  const batch = svgFiles.slice(i2, i2 + SVG_BATCH);
128902
128979
  const results = await Promise.allSettled(
128903
128980
  batch.map(async ({ relPath }) => {
128904
- const filePath = join77(assetsDir, relPath);
128981
+ const filePath = join78(assetsDir, relPath);
128905
128982
  let svgText = readFileSync52(filePath, "utf-8");
128906
128983
  if (svgText.length > MAX_SVG_CHARS) {
128907
128984
  svgText = svgText.slice(0, MAX_SVG_CHARS) + "\n<!-- truncated -->";
@@ -128948,11 +129025,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
128948
129025
  const uncaptionedLines = [];
128949
129026
  const svgLines = [];
128950
129027
  const fontLines = [];
128951
- const assetsPath = join77(outputDir, "assets");
129028
+ const assetsPath = join78(outputDir, "assets");
128952
129029
  try {
128953
129030
  for (const file of readdirSync29(assetsPath)) {
128954
129031
  if (file === "svgs" || file === "fonts" || file === "lottie" || file === "videos") continue;
128955
- const filePath = join77(assetsPath, file);
129032
+ const filePath = join78(assetsPath, file);
128956
129033
  const stat3 = statSync25(filePath);
128957
129034
  if (!stat3.isFile()) continue;
128958
129035
  const sizeKb = Math.round(stat3.size / 1024);
@@ -128981,7 +129058,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
128981
129058
  } catch {
128982
129059
  }
128983
129060
  try {
128984
- const svgsPath = join77(assetsPath, "svgs");
129061
+ const svgsPath = join78(assetsPath, "svgs");
128985
129062
  for (const file of readdirSync29(svgsPath)) {
128986
129063
  if (!file.endsWith(".svg")) continue;
128987
129064
  const geminiCaption = geminiCaptions[`svgs/${file}`];
@@ -129001,7 +129078,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
129001
129078
  } catch {
129002
129079
  }
129003
129080
  try {
129004
- const fontsPath = join77(assetsPath, "fonts");
129081
+ const fontsPath = join78(assetsPath, "fonts");
129005
129082
  for (const file of readdirSync29(fontsPath)) {
129006
129083
  fontLines.push(`fonts/${file} \u2014 font file`);
129007
129084
  }
@@ -129021,7 +129098,7 @@ __export(agentPromptGenerator_exports, {
129021
129098
  generateAgentPrompt: () => generateAgentPrompt
129022
129099
  });
129023
129100
  import { writeFileSync as writeFileSync35, readdirSync as readdirSync30, existsSync as existsSync71 } from "fs";
129024
- import { join as join78 } from "path";
129101
+ import { join as join79 } from "path";
129025
129102
  function inferColorRole(hex) {
129026
129103
  const r2 = parseInt(hex.slice(1, 3), 16) / 255;
129027
129104
  const g = parseInt(hex.slice(3, 5), 16) / 255;
@@ -129040,9 +129117,9 @@ function inferColorRole(hex) {
129040
129117
  }
129041
129118
  function generateAgentPrompt(outputDir, url, tokens, _animations, hasScreenshot, hasLottie, hasShaders, _catalogedAssets, _detectedLibraries) {
129042
129119
  const prompt = buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders);
129043
- writeFileSync35(join78(outputDir, "AGENTS.md"), prompt, "utf-8");
129044
- writeFileSync35(join78(outputDir, "CLAUDE.md"), prompt, "utf-8");
129045
- writeFileSync35(join78(outputDir, ".cursorrules"), prompt, "utf-8");
129120
+ writeFileSync35(join79(outputDir, "AGENTS.md"), prompt, "utf-8");
129121
+ writeFileSync35(join79(outputDir, "CLAUDE.md"), prompt, "utf-8");
129122
+ writeFileSync35(join79(outputDir, ".cursorrules"), prompt, "utf-8");
129046
129123
  }
129047
129124
  function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders) {
129048
129125
  const title = tokens.title || new URL(url).hostname.replace(/^www\./, "");
@@ -129051,7 +129128,7 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
129051
129128
  (f3) => f3.family + (f3.variable && f3.weightRange ? ` (${f3.weightRange[0]}-${f3.weightRange[1]} variable)` : f3.weights.length > 0 ? ` (${f3.weights.join(",")})` : "")
129052
129129
  ).join(", ") || "none detected";
129053
129130
  function contactSheetRows(dir, baseFile, label2) {
129054
- const fullDir = join78(outputDir, dir);
129131
+ const fullDir = join79(outputDir, dir);
129055
129132
  if (!existsSync71(fullDir)) return [];
129056
129133
  const baseName = baseFile.replace(/\.jpg$/, "");
129057
129134
  const escapedBase = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -129084,7 +129161,7 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
129084
129161
  tableRows.push(
129085
129162
  `| \`extracted/tokens.json\` | Design tokens: ${tokens.colors.length} colors, ${tokens.fonts.length} fonts, ${tokens.headings?.length ?? 0} headings, ${tokens.ctas?.length ?? 0} CTAs |`
129086
129163
  );
129087
- if (existsSync71(join78(outputDir, "extracted", "design-styles.json"))) {
129164
+ if (existsSync71(join79(outputDir, "extracted", "design-styles.json"))) {
129088
129165
  tableRows.push(
129089
129166
  "| `extracted/design-styles.json` | Computed styles from live DOM: typography hierarchy, button/card/nav styles, spacing scale, border-radius, box shadows. Primary data source for DESIGN.md. |"
129090
129167
  );
@@ -129156,7 +129233,7 @@ var init_agentPromptGenerator = __esm({
129156
129233
 
129157
129234
  // src/capture/scaffolding.ts
129158
129235
  import { existsSync as existsSync72, writeFileSync as writeFileSync36, readFileSync as readFileSync53 } from "fs";
129159
- import { join as join79, resolve as resolve42 } from "path";
129236
+ import { join as join80, resolve as resolve42 } from "path";
129160
129237
  function loadEnvFile(startDir) {
129161
129238
  try {
129162
129239
  let dir = resolve42(startDir);
@@ -129182,7 +129259,7 @@ function loadEnvFile(startDir) {
129182
129259
  }
129183
129260
  }
129184
129261
  async function generateProjectScaffold(outputDir, url, tokens, animationCatalog, hasScreenshots, hasLotties, hasShaders, catalogedAssets, progress, warnings, detectedLibraries) {
129185
- const metaPath = join79(outputDir, "meta.json");
129262
+ const metaPath = join80(outputDir, "meta.json");
129186
129263
  if (!existsSync72(metaPath)) {
129187
129264
  const hostname = new URL(url).hostname.replace(/^www\./, "");
129188
129265
  writeFileSync36(
@@ -129221,9 +129298,9 @@ __export(screenshotCapture_exports, {
129221
129298
  captureScrollScreenshots: () => captureScrollScreenshots
129222
129299
  });
129223
129300
  import { writeFileSync as writeFileSync37, mkdirSync as mkdirSync39 } from "fs";
129224
- import { join as join80 } from "path";
129301
+ import { join as join81 } from "path";
129225
129302
  async function captureScrollScreenshots(page, outputDir) {
129226
- const screenshotsDir = join80(outputDir, "screenshots");
129303
+ const screenshotsDir = join81(outputDir, "screenshots");
129227
129304
  mkdirSync39(screenshotsDir, { recursive: true });
129228
129305
  const MAX_SCREENSHOTS = 20;
129229
129306
  const filePaths = [];
@@ -129315,7 +129392,7 @@ async function captureScrollScreenshots(page, outputDir) {
129315
129392
  finalPositions[i2] / Math.max(1, scrollHeight - viewportHeight) * 100
129316
129393
  );
129317
129394
  const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
129318
- const filePath = join80(screenshotsDir, filename);
129395
+ const filePath = join81(screenshotsDir, filename);
129319
129396
  const buffer = await page.screenshot({ type: "png" });
129320
129397
  writeFileSync37(filePath, buffer);
129321
129398
  filePaths.push(`screenshots/${filename}`);
@@ -129591,7 +129668,7 @@ __export(capture_exports, {
129591
129668
  captureWebsite: () => captureWebsite
129592
129669
  });
129593
129670
  import { mkdirSync as mkdirSync40, writeFileSync as writeFileSync38, existsSync as existsSync73 } from "fs";
129594
- import { join as join81 } from "path";
129671
+ import { join as join82 } from "path";
129595
129672
  async function captureWebsite(opts, onProgress) {
129596
129673
  const {
129597
129674
  url,
@@ -129608,9 +129685,9 @@ async function captureWebsite(opts, onProgress) {
129608
129685
  onProgress?.(stage, detail);
129609
129686
  };
129610
129687
  loadEnvFile(outputDir);
129611
- mkdirSync40(join81(outputDir, "extracted"), { recursive: true });
129612
- mkdirSync40(join81(outputDir, "screenshots"), { recursive: true });
129613
- mkdirSync40(join81(outputDir, "assets"), { recursive: true });
129688
+ mkdirSync40(join82(outputDir, "extracted"), { recursive: true });
129689
+ mkdirSync40(join82(outputDir, "screenshots"), { recursive: true });
129690
+ mkdirSync40(join82(outputDir, "assets"), { recursive: true });
129614
129691
  progress("browser", "Launching headless Chrome...");
129615
129692
  const { ensureBrowser: ensureBrowser2 } = await Promise.resolve().then(() => (init_manager2(), manager_exports2));
129616
129693
  const browser = await ensureBrowser2();
@@ -129766,7 +129843,7 @@ async function captureWebsite(opts, onProgress) {
129766
129843
  } catch {
129767
129844
  }
129768
129845
  if (discoveredLotties.length > 0) {
129769
- const lottieDir = join81(outputDir, "assets", "lottie");
129846
+ const lottieDir = join82(outputDir, "assets", "lottie");
129770
129847
  mkdirSync40(lottieDir, { recursive: true });
129771
129848
  const savedCount = await saveLottieAnimations(discoveredLotties, lottieDir);
129772
129849
  if (savedCount > 0) {
@@ -129786,7 +129863,7 @@ async function captureWebsite(opts, onProgress) {
129786
129863
  });
129787
129864
  capturedShaders = unique;
129788
129865
  writeFileSync38(
129789
- join81(outputDir, "extracted", "shaders.json"),
129866
+ join82(outputDir, "extracted", "shaders.json"),
129790
129867
  JSON.stringify(unique, null, 2),
129791
129868
  "utf-8"
129792
129869
  );
@@ -129801,7 +129878,7 @@ async function captureWebsite(opts, onProgress) {
129801
129878
  svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
129802
129879
  };
129803
129880
  writeFileSync38(
129804
- join81(outputDir, "extracted", "tokens.json"),
129881
+ join82(outputDir, "extracted", "tokens.json"),
129805
129882
  JSON.stringify(tokensForDisk, null, 2),
129806
129883
  "utf-8"
129807
129884
  );
@@ -129809,7 +129886,7 @@ async function captureWebsite(opts, onProgress) {
129809
129886
  try {
129810
129887
  const designStyles = await extractDesignStyles(page1);
129811
129888
  writeFileSync38(
129812
- join81(outputDir, "extracted", "design-styles.json"),
129889
+ join82(outputDir, "extracted", "design-styles.json"),
129813
129890
  JSON.stringify(designStyles, null, 2),
129814
129891
  "utf-8"
129815
129892
  );
@@ -129882,8 +129959,8 @@ ${err.stack}` : String(err);
129882
129959
  extracted.headHtml = await downloadAndRewriteFonts(extracted.headHtml, outputDir);
129883
129960
  try {
129884
129961
  const fontsManifest = extractFontMetadata(
129885
- join81(outputDir, "assets", "fonts"),
129886
- join81(outputDir, "extracted", "fonts-manifest.json")
129962
+ join82(outputDir, "assets", "fonts"),
129963
+ join82(outputDir, "extracted", "fonts-manifest.json")
129887
129964
  );
129888
129965
  if (fontsManifest.families.length > 0) {
129889
129966
  const summary = fontsManifest.families.map((f3) => `${f3.family}${f3.variable ? " (variable)" : ""} \xD7 ${f3.fileCount}`).join(", ");
@@ -129913,7 +129990,7 @@ ${err.stack}` : String(err);
129913
129990
  representativeAnimations: representativeAnims
129914
129991
  };
129915
129992
  writeFileSync38(
129916
- join81(outputDir, "extracted", "animations.json"),
129993
+ join82(outputDir, "extracted", "animations.json"),
129917
129994
  JSON.stringify(leanCatalog, null, 2),
129918
129995
  "utf-8"
129919
129996
  );
@@ -129924,7 +130001,7 @@ ${err.stack}` : String(err);
129924
130001
  assets = await downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks);
129925
130002
  }
129926
130003
  if (visibleTextContent) {
129927
- writeFileSync38(join81(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
130004
+ writeFileSync38(join82(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
129928
130005
  }
129929
130006
  const geminiCaptions = await captionImagesWithGemini(outputDir, progress, warnings);
129930
130007
  progress("design", "Generating asset descriptions...");
@@ -129932,7 +130009,7 @@ ${err.stack}` : String(err);
129932
130009
  const lines = generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCaptions);
129933
130010
  if (lines.length > 0) {
129934
130011
  writeFileSync38(
129935
- join81(outputDir, "extracted", "asset-descriptions.md"),
130012
+ join82(outputDir, "extracted", "asset-descriptions.md"),
129936
130013
  "# Asset Descriptions\n\nOne line per file. Read this instead of opening every image individually.\n\n" + lines.map((l) => "- " + l).join("\n") + "\n",
129937
130014
  "utf-8"
129938
130015
  );
@@ -129944,19 +130021,19 @@ ${err.stack}` : String(err);
129944
130021
  try {
129945
130022
  const { createScrollContactSheet: createScrollContactSheet2, createAssetContactSheet: createAssetContactSheet2, createSvgContactSheet: createSvgContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
129946
130023
  const scrollSheets = await createScrollContactSheet2(
129947
- join81(outputDir, "screenshots"),
129948
- join81(outputDir, "screenshots", "contact-sheet.jpg")
130024
+ join82(outputDir, "screenshots"),
130025
+ join82(outputDir, "screenshots", "contact-sheet.jpg")
129949
130026
  );
129950
130027
  if (scrollSheets.length > 0)
129951
130028
  progress(
129952
130029
  "design",
129953
130030
  `Screenshot contact sheet generated (${scrollSheets.length} page${scrollSheets.length > 1 ? "s" : ""})`
129954
130031
  );
129955
- const assetsImgDir = join81(outputDir, "assets");
130032
+ const assetsImgDir = join82(outputDir, "assets");
129956
130033
  if (existsSync73(assetsImgDir)) {
129957
130034
  const assetSheets = await createAssetContactSheet2(
129958
130035
  assetsImgDir,
129959
- join81(outputDir, "assets", "contact-sheet.jpg")
130036
+ join82(outputDir, "assets", "contact-sheet.jpg")
129960
130037
  );
129961
130038
  if (assetSheets.length > 0)
129962
130039
  progress(
@@ -129964,9 +130041,9 @@ ${err.stack}` : String(err);
129964
130041
  `Asset contact sheet generated (${assetSheets.length} page${assetSheets.length > 1 ? "s" : ""})`
129965
130042
  );
129966
130043
  }
129967
- const svgsDir = join81(outputDir, "assets", "svgs");
129968
- const assetsRootDir = join81(outputDir, "assets");
129969
- const svgOutputPath = existsSync73(svgsDir) ? join81(outputDir, "assets", "svgs", "contact-sheet.jpg") : join81(outputDir, "assets", "contact-sheet-svgs.jpg");
130044
+ const svgsDir = join82(outputDir, "assets", "svgs");
130045
+ const assetsRootDir = join82(outputDir, "assets");
130046
+ const svgOutputPath = existsSync73(svgsDir) ? join82(outputDir, "assets", "svgs", "contact-sheet.jpg") : join82(outputDir, "assets", "contact-sheet-svgs.jpg");
129970
130047
  const svgSheets = await createSvgContactSheet2(svgsDir, svgOutputPath, assetsRootDir);
129971
130048
  if (svgSheets.length > 0)
129972
130049
  progress(
@@ -129982,7 +130059,7 @@ ${err.stack}` : String(err);
129982
130059
  animationCatalog,
129983
130060
  screenshots.length > 0,
129984
130061
  discoveredLotties.length > 0,
129985
- existsSync73(join81(outputDir, "extracted", "shaders.json")),
130062
+ existsSync73(join82(outputDir, "extracted", "shaders.json")),
129986
130063
  catalogedAssets,
129987
130064
  progress,
129988
130065
  warnings,
@@ -130211,9 +130288,9 @@ __export(state_exports, {
130211
130288
  writeStackOutputs: () => writeStackOutputs
130212
130289
  });
130213
130290
  import { existsSync as existsSync74, mkdirSync as mkdirSync41, readdirSync as readdirSync31, readFileSync as readFileSync54, rmSync as rmSync16, writeFileSync as writeFileSync39 } from "fs";
130214
- import { dirname as dirname30, join as join82 } from "path";
130291
+ import { dirname as dirname30, join as join83 } from "path";
130215
130292
  function stateFilePath(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
130216
- return join82(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
130293
+ return join83(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
130217
130294
  }
130218
130295
  function writeStackOutputs(outputs, cwd = process.cwd()) {
130219
130296
  const path2 = stateFilePath(outputs.stackName, cwd);
@@ -130235,7 +130312,7 @@ function deleteStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd())
130235
130312
  if (existsSync74(path2)) rmSync16(path2);
130236
130313
  }
130237
130314
  function listStackNames(cwd = process.cwd()) {
130238
- const dir = join82(cwd, STATE_DIR_NAME);
130315
+ const dir = join83(cwd, STATE_DIR_NAME);
130239
130316
  if (!existsSync74(dir)) return [];
130240
130317
  return readdirSync31(dir).filter((f3) => f3.startsWith(STATE_FILE_PREFIX) && f3.endsWith(".json")).map((f3) => f3.slice(STATE_FILE_PREFIX.length, -".json".length));
130241
130318
  }
@@ -130267,7 +130344,7 @@ var init_state = __esm({
130267
130344
  // src/commands/lambda/sam.ts
130268
130345
  import { execFileSync as execFileSync9, spawnSync as spawnSync4 } from "child_process";
130269
130346
  import { existsSync as existsSync75 } from "fs";
130270
- import { join as join83 } from "path";
130347
+ import { join as join84 } from "path";
130271
130348
  function assertSamAvailable() {
130272
130349
  try {
130273
130350
  execFileSync9("sam", ["--version"], { stdio: "ignore" });
@@ -130287,7 +130364,7 @@ function assertAwsCliAvailable() {
130287
130364
  }
130288
130365
  }
130289
130366
  function locateSamTemplate(repoRoot2) {
130290
- const candidate = join83(repoRoot2, "examples", "aws-lambda", "template.yaml");
130367
+ const candidate = join84(repoRoot2, "examples", "aws-lambda", "template.yaml");
130291
130368
  if (!existsSync75(candidate)) {
130292
130369
  throw new Error(
130293
130370
  `[lambda] SAM template not found at ${candidate}. If you're running from an installed package, point --sam-template at your local copy of examples/aws-lambda/template.yaml.`
@@ -130321,7 +130398,7 @@ function samDeploy(opts) {
130321
130398
  if (opts.awsProfile) {
130322
130399
  args.push("--profile", opts.awsProfile);
130323
130400
  }
130324
- const samDir = join83(opts.repoRoot, "examples", "aws-lambda");
130401
+ const samDir = join84(opts.repoRoot, "examples", "aws-lambda");
130325
130402
  const result = spawnSync4("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
130326
130403
  if (result.status !== 0) {
130327
130404
  throw new Error(`[lambda] sam deploy exited with code ${result.status ?? "unknown"}`);
@@ -130333,7 +130410,7 @@ function samDelete(opts) {
130333
130410
  if (opts.awsProfile) {
130334
130411
  args.push("--profile", opts.awsProfile);
130335
130412
  }
130336
- const samDir = join83(opts.repoRoot, "examples", "aws-lambda");
130413
+ const samDir = join84(opts.repoRoot, "examples", "aws-lambda");
130337
130414
  const result = spawnSync4("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
130338
130415
  if (result.status !== 0) {
130339
130416
  throw new Error(`[lambda] sam delete exited with code ${result.status ?? "unknown"}`);
@@ -130417,7 +130494,7 @@ __export(deploy_exports, {
130417
130494
  });
130418
130495
  import { spawnSync as spawnSync5 } from "child_process";
130419
130496
  import { existsSync as existsSync77 } from "fs";
130420
- import { join as join84, resolve as resolve45 } from "path";
130497
+ import { join as join85, resolve as resolve45 } from "path";
130421
130498
  async function runDeploy(args = {}) {
130422
130499
  const resolved = {
130423
130500
  stackName: args.stackName ?? DEFAULT_STACK_NAME,
@@ -130434,7 +130511,7 @@ async function runDeploy(args = {}) {
130434
130511
  console.log(c2.dim("\u2192 Building handler ZIP"));
130435
130512
  buildHandlerZip(root);
130436
130513
  } else {
130437
- const zip = join84(root, "packages", "aws-lambda", "dist", "handler.zip");
130514
+ const zip = join85(root, "packages", "aws-lambda", "dist", "handler.zip");
130438
130515
  if (!existsSync77(zip)) {
130439
130516
  throw new Error(
130440
130517
  `--skip-build set but ${zip} does not exist. Run \`bun run --cwd packages/aws-lambda build:zip\` first or drop --skip-build.`
@@ -130478,7 +130555,7 @@ async function runDeploy(args = {}) {
130478
130555
  function buildHandlerZip(root) {
130479
130556
  const result = spawnSync5(
130480
130557
  "bun",
130481
- ["run", "--cwd", join84(root, "packages", "aws-lambda"), "build:zip"],
130558
+ ["run", "--cwd", join85(root, "packages", "aws-lambda"), "build:zip"],
130482
130559
  { stdio: "inherit" }
130483
130560
  );
130484
130561
  if (result.status !== 0) {
@@ -130548,13 +130625,13 @@ var init_sites = __esm({
130548
130625
 
130549
130626
  // src/commands/lambda/_dimensions.ts
130550
130627
  import { readFileSync as readFileSync55 } from "fs";
130551
- import { join as join85 } from "path";
130628
+ import { join as join86 } from "path";
130552
130629
  function warnOnDimensionMismatch(args) {
130553
130630
  if (args.quiet) return;
130554
130631
  if (args.outputResolution) return;
130555
130632
  let html;
130556
130633
  try {
130557
- html = readFileSync55(join85(args.projectDir, "index.html"), "utf-8");
130634
+ html = readFileSync55(join86(args.projectDir, "index.html"), "utf-8");
130558
130635
  } catch {
130559
130636
  return;
130560
130637
  }
@@ -130583,7 +130660,7 @@ __export(render_exports2, {
130583
130660
  runRender: () => runRender
130584
130661
  });
130585
130662
  import { existsSync as existsSync78 } from "fs";
130586
- import { join as join86, resolve as resolvePath2 } from "path";
130663
+ import { join as join87, resolve as resolvePath2 } from "path";
130587
130664
  async function loadSDK2() {
130588
130665
  return import("@hyperframes/aws-lambda/sdk");
130589
130666
  }
@@ -130599,7 +130676,7 @@ async function runRender(args) {
130599
130676
  });
130600
130677
  const variables = resolveVariablesArg(args.variables, args.variablesFile);
130601
130678
  if (variables && Object.keys(variables).length > 0) {
130602
- const indexPath = join86(projectDir, "index.html");
130679
+ const indexPath = join87(projectDir, "index.html");
130603
130680
  if (existsSync78(indexPath)) {
130604
130681
  const issues = validateVariablesAgainstProject(indexPath, variables);
130605
130682
  reportVariableIssues(issues, { strict: args.strictVariables ?? false, quiet: args.json });
@@ -130724,7 +130801,7 @@ __export(render_batch_exports, {
130724
130801
  runWithConcurrencyLimit: () => runWithConcurrencyLimit
130725
130802
  });
130726
130803
  import { existsSync as existsSync79, readFileSync as readFileSync56 } from "fs";
130727
- import { join as join87, resolve as resolvePath3 } from "path";
130804
+ import { join as join88, resolve as resolvePath3 } from "path";
130728
130805
  async function loadSDK3() {
130729
130806
  return import("@hyperframes/aws-lambda/sdk");
130730
130807
  }
@@ -130748,7 +130825,7 @@ async function runRenderBatch(args) {
130748
130825
  outputResolution: args.outputResolution,
130749
130826
  quiet: args.json
130750
130827
  });
130751
- const schema = loadProjectVariableSchema(join87(projectDir, "index.html"));
130828
+ const schema = loadProjectVariableSchema(join88(projectDir, "index.html"));
130752
130829
  const strict = args.strictVariables ?? false;
130753
130830
  let hadStrictIssue = false;
130754
130831
  for (const { entry, lineNumber } of entries2) {
@@ -132285,10 +132362,10 @@ var init_client3 = __esm({
132285
132362
  });
132286
132363
 
132287
132364
  // src/auth/pkce.ts
132288
- import { createHash as createHash8, randomBytes as randomBytes3 } from "crypto";
132365
+ import { createHash as createHash9, randomBytes as randomBytes3 } from "crypto";
132289
132366
  function generatePkcePair() {
132290
132367
  const verifier = base64UrlEncode(randomBytes3(VERIFIER_BYTES));
132291
- const challenge = base64UrlEncode(createHash8("sha256").update(verifier).digest());
132368
+ const challenge = base64UrlEncode(createHash9("sha256").update(verifier).digest());
132292
132369
  return { verifier, challenge, method: "S256" };
132293
132370
  }
132294
132371
  function generateState() {
@@ -132460,14 +132537,14 @@ var init_browser2 = __esm({
132460
132537
 
132461
132538
  // src/auth/paths.ts
132462
132539
  import { homedir as homedir12 } from "os";
132463
- import { join as join88 } from "path";
132540
+ import { join as join89 } from "path";
132464
132541
  function configDir() {
132465
132542
  const override = process.env["HEYGEN_CONFIG_DIR"];
132466
132543
  if (override && override.length > 0) return override;
132467
- return join88(homedir12(), ".heygen");
132544
+ return join89(homedir12(), ".heygen");
132468
132545
  }
132469
132546
  function credentialPath() {
132470
- return join88(configDir(), CREDENTIAL_FILENAME);
132547
+ return join89(configDir(), CREDENTIAL_FILENAME);
132471
132548
  }
132472
132549
  var CREDENTIAL_FILENAME;
132473
132550
  var init_paths2 = __esm({
@@ -133087,7 +133164,6 @@ var init_errors2 = __esm({
133087
133164
  init_format();
133088
133165
  init_client2();
133089
133166
  ERROR_CODE_HINTS = {
133090
- hyperframes_project_invalid: "The uploaded zip didn't validate. Confirm it contains index.html at the root (or matches --composition), and that all referenced assets are present.",
133091
133167
  hyperframes_project_too_large: "The zip exceeded the 32 MB limit. Trim large media (or pre-host them and reference by URL), then try again.",
133092
133168
  hyperframes_render_not_found: "The render_id no longer exists \u2014 either soft-deleted or never created.",
133093
133169
  invalid_parameter: "Check the listed parameter against `hyperframes cloud render --help` for the accepted values.",
@@ -134644,7 +134720,7 @@ __export(autoUpdate_exports, {
134644
134720
  import { spawn as spawn16 } from "child_process";
134645
134721
  import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync43, openSync as openSync2 } from "fs";
134646
134722
  import { homedir as homedir13 } from "os";
134647
- import { join as join89 } from "path";
134723
+ import { join as join90 } from "path";
134648
134724
  import { compareVersions as compareVersions2 } from "compare-versions";
134649
134725
  function isAutoInstallDisabled() {
134650
134726
  if (isDevMode()) return true;
@@ -134667,7 +134743,7 @@ function log(line) {
134667
134743
  }
134668
134744
  function launchDetachedInstall(installCommand, version) {
134669
134745
  mkdirSync43(CONFIG_DIR2, { recursive: true, mode: 448 });
134670
- const configFile = join89(CONFIG_DIR2, "config.json");
134746
+ const configFile = join90(CONFIG_DIR2, "config.json");
134671
134747
  const nodeScript = `
134672
134748
  const { exec } = require("node:child_process");
134673
134749
  const { readFileSync, renameSync, writeFileSync } = require("node:fs");
@@ -134786,8 +134862,8 @@ var init_autoUpdate = __esm({
134786
134862
  init_config();
134787
134863
  init_env();
134788
134864
  init_installerDetection();
134789
- CONFIG_DIR2 = join89(homedir13(), ".hyperframes");
134790
- LOG_FILE = join89(CONFIG_DIR2, "auto-update.log");
134865
+ CONFIG_DIR2 = join90(homedir13(), ".hyperframes");
134866
+ LOG_FILE = join90(CONFIG_DIR2, "auto-update.log");
134791
134867
  PENDING_TIMEOUT_MS = 10 * 60 * 1e3;
134792
134868
  }
134793
134869
  });
@@ -134959,13 +135035,13 @@ var init_help = __esm({
134959
135035
  // src/cli.ts
134960
135036
  init_version();
134961
135037
  init_dist();
134962
- import { dirname as dirname34, join as join90 } from "path";
135038
+ import { dirname as dirname34, join as join91 } from "path";
134963
135039
  import { fileURLToPath as fileURLToPath12 } from "url";
134964
135040
  import { existsSync as existsSync80 } from "fs";
134965
135041
  (() => {
134966
135042
  const here = dirname34(fileURLToPath12(import.meta.url));
134967
- const shader = join90(here, "shaderTransitionWorker.js");
134968
- const png = join90(here, "pngDecodeBlitWorker.js");
135043
+ const shader = join91(here, "shaderTransitionWorker.js");
135044
+ const png = join91(here, "pngDecodeBlitWorker.js");
134969
135045
  if (!process.env.HF_SHADER_WORKER_ENTRY && existsSync80(shader)) {
134970
135046
  process.env.HF_SHADER_WORKER_ENTRY = shader;
134971
135047
  }