{"version":3,"sources":["jsdelivr-header.js","webpack://rive/webpack/universalModuleDefinition","webpack://rive/npm/webgl2_advanced/webgl2_advanced.mjs","webpack://rive/src/animation/Animation.ts","webpack://rive/src/utils/registerTouchInteractions.ts","webpack://rive/src/utils/sanitizeUrl.ts","webpack://rive/src/utils/finalizationRegistry.ts","webpack://rive/webpack/bootstrap","/npm/@rive-app/webgl2@2.32.2/webpack:/rive/webpack/runtime/define property getters","/npm/@rive-app/webgl2@2.32.2/webpack:/rive/webpack/runtime/hasOwnProperty shorthand","/npm/@rive-app/webgl2@2.32.2/webpack:/rive/webpack/runtime/make namespace object","webpack://rive/src/rive.ts"],"names":[],"mappings":"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","file":"/npm/@rive-app/webgl2@2.32.2/rive.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@rive-app/webgl2@2.32.2/rive.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rive\"] = factory();\n\telse\n\t\troot[\"rive\"] = factory();\n})(this, () => {\nreturn ","\nvar Rive = (() => {\n  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n  \n  return (\nfunction(moduleArg = {}) {\n  var moduleRtn;\n\nvar l = moduleArg, aa, ba, ca = new Promise((a, b) => {\n  aa = a;\n  ba = b;\n}), da = \"object\" == typeof window, ea = \"function\" == typeof importScripts;\nfunction fa() {\n  function a(g) {\n    const k = d;\n    c = b = 0;\n    d = new Map();\n    k.forEach(m => {\n      try {\n        m(g);\n      } catch (n) {\n        console.error(n);\n      }\n    });\n    this.mb();\n    e && e.Mb();\n  }\n  let b = 0, c = 0, d = new Map(), e = null, f = null;\n  this.requestAnimationFrame = function(g) {\n    b ||= requestAnimationFrame(a.bind(this));\n    const k = ++c;\n    d.set(k, g);\n    return k;\n  };\n  this.cancelAnimationFrame = function(g) {\n    d.delete(g);\n    b && 0 == d.size && (cancelAnimationFrame(b), b = 0);\n  };\n  this.Kb = function(g) {\n    f && (document.body.remove(f), f = null);\n    g || (f = document.createElement(\"div\"), f.style.backgroundColor = \"black\", f.style.position = \"fixed\", f.style.right = 0, f.style.top = 0, f.style.color = \"white\", f.style.padding = \"4px\", f.innerHTML = \"RIVE FPS\", g = function(k) {\n      f.innerHTML = \"RIVE FPS \" + k.toFixed(1);\n    }, document.body.appendChild(f));\n    e = new function() {\n      let k = 0, m = 0;\n      this.Mb = function() {\n        var n = performance.now();\n        m ? (++k, n -= m, 1000 < n && (g(1000 * k / n), k = m = 0)) : (m = n, k = 0);\n      };\n    }();\n  };\n  this.mb = function() {\n  };\n}\nfunction ha() {\n  console.assert(!0);\n  const a = new Map();\n  let b = -Infinity;\n  this.push = function(c) {\n    c = c + 255 >> 8;\n    a.has(c) && clearTimeout(a.get(c));\n    a.set(c, setTimeout(function() {\n      a.delete(c);\n      0 == a.length ? b = -Infinity : c == b && (b = Math.max(...a.keys()), console.assert(b < c));\n    }, 1000));\n    b = Math.max(c, b);\n    return b << 8;\n  };\n}\nconst ia = l.onRuntimeInitialized;\nl.onRuntimeInitialized = function() {\n  ia && ia();\n  let a = l.decodeAudio;\n  l.decodeAudio = function(e, f) {\n    e = a(e);\n    f(e);\n  };\n  let b = l.decodeFont;\n  l.decodeFont = function(e, f) {\n    e = b(e);\n    f(e);\n  };\n  const c = l.FileAssetLoader;\n  l.ptrToAsset = e => {\n    let f = l.ptrToFileAsset(e);\n    return f.isImage ? l.ptrToImageAsset(e) : f.isFont ? l.ptrToFontAsset(e) : f.isAudio ? l.ptrToAudioAsset(e) : f;\n  };\n  l.CustomFileAssetLoader = c.extend(\"CustomFileAssetLoader\", {__construct:function({loadContents:e}) {\n    this.__parent.__construct.call(this);\n    this.Bb = e;\n  }, loadContents:function(e, f) {\n    e = l.ptrToAsset(e);\n    return this.Bb(e, f);\n  },});\n  l.CDNFileAssetLoader = c.extend(\"CDNFileAssetLoader\", {__construct:function() {\n    this.__parent.__construct.call(this);\n  }, loadContents:function(e) {\n    let f = l.ptrToAsset(e);\n    e = f.cdnUuid;\n    if (\"\" === e) {\n      return !1;\n    }\n    (function(g, k) {\n      var m = new XMLHttpRequest();\n      m.responseType = \"arraybuffer\";\n      m.onreadystatechange = function() {\n        4 == m.readyState && 200 == m.status && k(m);\n      };\n      m.open(\"GET\", g, !0);\n      m.send(null);\n    })(f.cdnBaseUrl + \"/\" + e, g => {\n      f.decode(new Uint8Array(g.response));\n    });\n    return !0;\n  },});\n  l.FallbackFileAssetLoader = c.extend(\"FallbackFileAssetLoader\", {__construct:function() {\n    this.__parent.__construct.call(this);\n    this.ib = [];\n  }, addLoader:function(e) {\n    this.ib.push(e);\n  }, loadContents:function(e, f) {\n    for (let g of this.ib) {\n      if (g.loadContents(e, f)) {\n        return !0;\n      }\n    }\n    return !1;\n  },});\n  let d = l.computeAlignment;\n  l.computeAlignment = function(e, f, g, k, m = 1.0) {\n    return d.call(this, e, f, g, k, m);\n  };\n};\nconst ja = l.onRuntimeInitialized;\nl.onRuntimeInitialized = function() {\n  function a(r) {\n    this.G = r;\n    this.Ab = r.getContext(\"2d\");\n    this.Db = d;\n    this.S = [];\n    this.ka = 0;\n    this.clear = function() {\n      console.assert(0 == this.ka);\n      this.S = [];\n      e.delete(this);\n    };\n    this.save = function() {\n      ++this.ka;\n      this.S.push(d.save.bind(d));\n    };\n    this.restore = function() {\n      0 < this.ka && (this.S.push(d.restore.bind(d)), --this.ka);\n    };\n    this.transform = function(u) {\n      this.S.push(d.transform.bind(d, u));\n    };\n    this.align = function(u, y, z, C, F = 1.0) {\n      this.S.push(d.align.bind(d, u, y, z, C, F));\n    };\n    this.flush = function() {\n      console.assert(0 == this.ka);\n      e.add(this);\n      d.Ya || c();\n    };\n    this[\"delete\"] = function() {\n    };\n  }\n  function b(r, u = !1) {\n    var y = {alpha:!0, depth:u, stencil:u, antialias:u, premultipliedAlpha:!0, preserveDrawingBuffer:0, powerPreference:\"high-performance\", failIfMajorPerformanceCaveat:0, enableExtensionsByDefault:!1, explicitSwapControl:0, renderViaOffscreenBackBuffer:0,};\n    u = r.getContext(\"webgl2\", y);\n    if (!u) {\n      return null;\n    }\n    y = ka(u, y);\n    la(y);\n    const z = f(r.width, r.height);\n    z.La = y;\n    z.G = r;\n    z.Ma = r.width;\n    z.Za = r.height;\n    z.T = u;\n    var C = z.delete;\n    z.delete = function() {\n      C.call(this);\n      var F = this.La;\n      q === w[F] && (q = null);\n      \"object\" == typeof JSEvents && JSEvents.Kc(w[F].C.canvas);\n      w[F] && w[F].C.canvas && (w[F].C.canvas.zb = void 0);\n      this.La = this.G = this.Ma = this.T = w[F] = null;\n    };\n    return z;\n  }\n  function c() {\n    if (d) {\n      var r = d.Cb, u = 0, y = 0, z = 0, C = Array(e.size), F = 0;\n      for (var I of e) {\n        I.fa = Math.min(I.G.width, r), I.ea = Math.min(I.G.height, r), I.Ja = I.ea * I.fa, u = Math.max(u, I.fa), y = Math.max(y, I.ea), z += I.Ja, C[F++] = I;\n      }\n      e.clear();\n      if (!(0 >= z)) {\n        u = 1 << (0 >= u ? 0 : 32 - Math.clz32(u - 1));\n        for (y = 1 << (0 >= y ? 0 : 32 - Math.clz32(y - 1)); y * u < z;) {\n          u <= y ? u *= 2 : y *= 2;\n        }\n        u = Math.min(u, r);\n        u = Math.min(y, r);\n        C.sort((Z, mb) => mb.Ja - Z.Ja);\n        z = new l.DynamicRectanizer(r);\n        for (I = 0; I < C.length;) {\n          z.reset(u, y);\n          for (F = I; F < C.length; ++F) {\n            var J = C[F], H = z.addRect(J.fa, J.ea);\n            if (0 > H) {\n              console.assert(F > I);\n              break;\n            }\n            J.qa = H & 65535;\n            J.ra = H >> 16;\n          }\n          J = m.push(z.drawWidth());\n          H = n.push(z.drawHeight());\n          console.assert(J >= z.drawWidth());\n          console.assert(H >= z.drawHeight());\n          console.assert(J <= r);\n          console.assert(H <= r);\n          d.G.width != J && (d.G.width = J);\n          d.G.height != H && (d.G.height = H);\n          d.clear();\n          for (J = I; J < F; ++J) {\n            H = C[J];\n            d.saveClipRect(H.qa, H.ra, H.qa + H.fa, H.ra + H.ea);\n            let Z = new l.Mat2D();\n            Z.xx = H.fa / H.G.width;\n            Z.yy = H.ea / H.G.height;\n            Z.xy = Z.yx = 0;\n            Z.tx = H.qa;\n            Z.ty = H.ra;\n            d.transform(Z);\n            for (const mb of H.S) {\n              mb();\n            }\n            d.restoreClipRect();\n            H.S = [];\n          }\n          for (d.flush(); I < F; ++I) {\n            J = C[I], H = J.Ab, H.globalCompositeOperation = \"copy\", H.drawImage(d.G, J.qa, J.ra, J.fa, J.ea, 0, 0, J.G.width, J.G.height);\n          }\n          I = F;\n        }\n      }\n    }\n  }\n  ja && ja();\n  let d = null;\n  const e = new Set(), f = l.makeRenderer;\n  l.makeRenderer = function(r, u) {\n    if (!d) {\n      function y(z) {\n        var C = document.createElement(\"canvas\");\n        C.width = 1;\n        C.height = 1;\n        d = b(C, z);\n        d.Ya = !!d.T.getExtension(\"WEBGL_shader_pixel_local_storage\");\n        d.Cb = Math.min(d.T.getParameter(d.T.MAX_RENDERBUFFER_SIZE), d.T.getParameter(d.T.MAX_TEXTURE_SIZE));\n        d.Ka = !d.Ya;\n        if (z = d.T.getExtension(\"WEBGL_debug_renderer_info\")) {\n          C = d.T.getParameter(z.UNMASKED_RENDERER_WEBGL), d.T.getParameter(z.UNMASKED_VENDOR_WEBGL).includes(\"Google\") && C.includes(\"ANGLE Metal Renderer\") && (d.Ka = !1);\n        }\n        return d;\n      }\n      d = y(!0);\n      d.Ka || (d = y(!1));\n    }\n    return u ? new a(r) : b(r, d.Ka);\n  };\n  const g = l.Artboard.prototype[\"delete\"];\n  l.Artboard.prototype[\"delete\"] = function() {\n    this.Eb = !0;\n    g.call(this);\n  };\n  const k = l.Artboard.prototype.draw;\n  l.Artboard.prototype.draw = function(r) {\n    r.S ? r.S.push(() => {\n      this.Eb || k.call(this, r.Db);\n    }) : k.call(this, r);\n  };\n  const m = new ha(), n = new ha(), t = new fa();\n  l.requestAnimationFrame = t.requestAnimationFrame.bind(t);\n  l.cancelAnimationFrame = t.cancelAnimationFrame.bind(t);\n  l.enableFPSCounter = t.Kb.bind(t);\n  t.mb = c;\n  l.resolveAnimationFrame = c;\n  let v = l.load;\n  l.load = function(r, u, y = !0) {\n    const z = new l.FallbackFileAssetLoader();\n    void 0 !== u && z.addLoader(u);\n    y && (u = new l.CDNFileAssetLoader(), z.addLoader(u));\n    return Promise.resolve(v(r, z));\n  };\n  const x = l.WebGL2Renderer.prototype.clear;\n  l.WebGL2Renderer.prototype.clear = function() {\n    la(this.La);\n    const r = this.G;\n    if (this.Ma != r.width || this.Za != r.height) {\n      this.resize(r.width, r.height), this.Ma = r.width, this.Za = r.height;\n    }\n    x.call(this);\n  };\n  l.decodeImage = function(r, u) {\n    r = l.decodeWebGL2Image(r);\n    u(r);\n  };\n  let p = l.Renderer.prototype.align;\n  l.Renderer.prototype.align = function(r, u, y, z, C = 1.0) {\n    p.call(this, r, u, y, z, C);\n  };\n};\nvar ma = Object.assign({}, l), na = \"./this.program\", A = \"\", oa, pa;\nif (da || ea) {\n  ea ? A = self.location.href : \"undefined\" != typeof document && document.currentScript && (A = document.currentScript.src), _scriptName && (A = _scriptName), A.startsWith(\"blob:\") ? A = \"\" : A = A.substr(0, A.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1), ea && (pa = a => {\n    var b = new XMLHttpRequest();\n    b.open(\"GET\", a, !1);\n    b.responseType = \"arraybuffer\";\n    b.send(null);\n    return new Uint8Array(b.response);\n  }), oa = (a, b, c) => {\n    if (qa(a)) {\n      var d = new XMLHttpRequest();\n      d.open(\"GET\", a, !0);\n      d.responseType = \"arraybuffer\";\n      d.onload = () => {\n        200 == d.status || 0 == d.status && d.response ? b(d.response) : c();\n      };\n      d.onerror = c;\n      d.send(null);\n    } else {\n      fetch(a, {credentials:\"same-origin\"}).then(e => e.ok ? e.arrayBuffer() : Promise.reject(Error(e.status + \" : \" + e.url))).then(b, c);\n    }\n  };\n}\nvar ra = l.print || console.log.bind(console), sa = l.printErr || console.error.bind(console);\nObject.assign(l, ma);\nma = null;\nl.thisProgram && (na = l.thisProgram);\nvar ta;\nl.wasmBinary && (ta = l.wasmBinary);\nvar ua, va = !1, B, D, E, wa, G, K, xa, ya;\nfunction za() {\n  var a = ua.buffer;\n  l.HEAP8 = B = new Int8Array(a);\n  l.HEAP16 = E = new Int16Array(a);\n  l.HEAPU8 = D = new Uint8Array(a);\n  l.HEAPU16 = wa = new Uint16Array(a);\n  l.HEAP32 = G = new Int32Array(a);\n  l.HEAPU32 = K = new Uint32Array(a);\n  l.HEAPF32 = xa = new Float32Array(a);\n  l.HEAPF64 = ya = new Float64Array(a);\n}\nvar Aa = [], Ba = [], Ca = [];\nfunction Da() {\n  var a = l.preRun.shift();\n  Aa.unshift(a);\n}\nvar Ea = 0, Fa = null, Ga = null;\nfunction Ha(a) {\n  l.onAbort?.(a);\n  a = \"Aborted(\" + a + \")\";\n  sa(a);\n  va = !0;\n  a = new WebAssembly.RuntimeError(a + \". Build with -sASSERTIONS for more info.\");\n  ba(a);\n  throw a;\n}\nvar Ia = a => a.startsWith(\"data:application/octet-stream;base64,\"), qa = a => a.startsWith(\"file://\"), Ja;\nfunction Ka(a) {\n  if (a == Ja && ta) {\n    return new Uint8Array(ta);\n  }\n  if (pa) {\n    return pa(a);\n  }\n  throw \"both async and sync fetching of the wasm failed\";\n}\nfunction La(a) {\n  return ta ? Promise.resolve().then(() => Ka(a)) : new Promise((b, c) => {\n    oa(a, d => b(new Uint8Array(d)), () => {\n      try {\n        b(Ka(a));\n      } catch (d) {\n        c(d);\n      }\n    });\n  });\n}\nfunction Ma(a, b, c) {\n  return La(a).then(d => WebAssembly.instantiate(d, b)).then(c, d => {\n    sa(`failed to asynchronously prepare wasm: ${d}`);\n    Ha(d);\n  });\n}\nfunction Na(a, b) {\n  var c = Ja;\n  return ta || \"function\" != typeof WebAssembly.instantiateStreaming || Ia(c) || qa(c) || \"function\" != typeof fetch ? Ma(c, a, b) : fetch(c, {credentials:\"same-origin\"}).then(d => WebAssembly.instantiateStreaming(d, a).then(b, function(e) {\n    sa(`wasm streaming compile failed: ${e}`);\n    sa(\"falling back to ArrayBuffer instantiation\");\n    return Ma(c, a, b);\n  }));\n}\nvar Oa, Pa, Ta = {544671:(a, b, c, d, e) => {\n  if (\"undefined\" === typeof window || void 0 === (window.AudioContext || window.webkitAudioContext)) {\n    return 0;\n  }\n  if (\"undefined\" === typeof window.h) {\n    window.h = {Ea:0};\n    window.h.I = {};\n    window.h.I.Ca = a;\n    window.h.I.capture = b;\n    window.h.I.Pa = c;\n    window.h.ia = {};\n    window.h.ia.stopped = d;\n    window.h.ia.ub = e;\n    let f = window.h;\n    f.D = [];\n    f.lc = function(g) {\n      for (var k = 0; k < f.D.length; ++k) {\n        if (null == f.D[k]) {\n          return f.D[k] = g, k;\n        }\n      }\n      f.D.push(g);\n      return f.D.length - 1;\n    };\n    f.yb = function(g) {\n      for (f.D[g] = null; 0 < f.D.length;) {\n        if (null == f.D[f.D.length - 1]) {\n          f.D.pop();\n        } else {\n          break;\n        }\n      }\n    };\n    f.Mc = function(g) {\n      for (var k = 0; k < f.D.length; ++k) {\n        if (f.D[k] == g) {\n          return f.yb(k);\n        }\n      }\n    };\n    f.ta = function(g) {\n      return f.D[g];\n    };\n    f.Xa = [\"touchend\", \"click\"];\n    f.unlock = function() {\n      for (var g = 0; g < f.D.length; ++g) {\n        var k = f.D[g];\n        null != k && null != k.K && k.state === f.ia.ub && k.K.resume().then(() => {\n          Qa(k.nb);\n        }, m => {\n          console.error(\"Failed to resume audiocontext\", m);\n        });\n      }\n      f.Xa.map(function(m) {\n        document.removeEventListener(m, f.unlock, !0);\n      });\n    };\n    f.Xa.map(function(g) {\n      document.addEventListener(g, f.unlock, !0);\n    });\n  }\n  window.h.Ea += 1;\n  return 1;\n}, 546849:() => {\n  \"undefined\" !== typeof window.h && (window.h.Xa.map(function(a) {\n    document.removeEventListener(a, window.h.unlock, !0);\n  }), --window.h.Ea, 0 === window.h.Ea && delete window.h);\n}, 547153:() => void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia, 547257:() => {\n  try {\n    var a = new (window.AudioContext || window.webkitAudioContext)(), b = a.sampleRate;\n    a.close();\n    return b;\n  } catch (c) {\n    return 0;\n  }\n}, 547428:(a, b, c, d, e, f) => {\n  if (\"undefined\" === typeof window.h) {\n    return -1;\n  }\n  var g = {}, k = {};\n  a == window.h.I.Ca && 0 != c && (k.sampleRate = c);\n  g.K = new (window.AudioContext || window.webkitAudioContext)(k);\n  g.K.suspend();\n  g.state = window.h.ia.stopped;\n  c = 0;\n  a != window.h.I.Ca && (c = b);\n  g.Y = g.K.createScriptProcessor(d, c, b);\n  g.Y.onaudioprocess = function(m) {\n    if (null == g.ua || 0 == g.ua.length) {\n      g.ua = new Float32Array(xa.buffer, e, d * b);\n    }\n    if (a == window.h.I.capture || a == window.h.I.Pa) {\n      for (var n = 0; n < b; n += 1) {\n        for (var t = m.inputBuffer.getChannelData(n), v = g.ua, x = 0; x < d; x += 1) {\n          v[x * b + n] = t[x];\n        }\n      }\n      Ra(f, d, e);\n    }\n    if (a == window.h.I.Ca || a == window.h.I.Pa) {\n      for (Sa(f, d, e), n = 0; n < m.outputBuffer.numberOfChannels; ++n) {\n        for (t = m.outputBuffer.getChannelData(n), v = g.ua, x = 0; x < d; x += 1) {\n          t[x] = v[x * b + n];\n        }\n      }\n    } else {\n      for (n = 0; n < m.outputBuffer.numberOfChannels; ++n) {\n        m.outputBuffer.getChannelData(n).fill(0.0);\n      }\n    }\n  };\n  a != window.h.I.capture && a != window.h.I.Pa || navigator.mediaDevices.getUserMedia({audio:!0, video:!1}).then(function(m) {\n    g.Fa = g.K.createMediaStreamSource(m);\n    g.Fa.connect(g.Y);\n    g.Y.connect(g.K.destination);\n  }).catch(function(m) {\n    console.log(\"Failed to get user media: \" + m);\n  });\n  a == window.h.I.Ca && g.Y.connect(g.K.destination);\n  g.nb = f;\n  return window.h.lc(g);\n}, 550305:a => window.h.ta(a).K.sampleRate, 550378:a => {\n  a = window.h.ta(a);\n  void 0 !== a.Y && (a.Y.onaudioprocess = function() {\n  }, a.Y.disconnect(), a.Y = void 0);\n  void 0 !== a.Fa && (a.Fa.disconnect(), a.Fa = void 0);\n  a.K.close();\n  a.K = void 0;\n  a.nb = void 0;\n}, 550778:a => {\n  window.h.yb(a);\n}, 550828:a => {\n  a = window.h.ta(a);\n  a.K.resume();\n  a.state = window.h.ia.ub;\n}, 550967:a => {\n  a = window.h.ta(a);\n  a.K.suspend();\n  a.state = window.h.ia.stopped;\n}}, Ua = a => {\n  for (; 0 < a.length;) {\n    a.shift()(l);\n  }\n};\nfunction Va() {\n  var a = G[+Wa >> 2];\n  Wa += 4;\n  return a;\n}\nvar Xa = (a, b) => {\n  for (var c = 0, d = a.length - 1; 0 <= d; d--) {\n    var e = a[d];\n    \".\" === e ? a.splice(d, 1) : \"..\" === e ? (a.splice(d, 1), c++) : c && (a.splice(d, 1), c--);\n  }\n  if (b) {\n    for (; c; c--) {\n      a.unshift(\"..\");\n    }\n  }\n  return a;\n}, Ya = a => {\n  var b = \"/\" === a.charAt(0), c = \"/\" === a.substr(-1);\n  (a = Xa(a.split(\"/\").filter(d => !!d), !b).join(\"/\")) || b || (a = \".\");\n  a && c && (a += \"/\");\n  return (b ? \"/\" : \"\") + a;\n}, Za = a => {\n  var b = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);\n  a = b[0];\n  b = b[1];\n  if (!a && !b) {\n    return \".\";\n  }\n  b &&= b.substr(0, b.length - 1);\n  return a + b;\n}, $a = a => {\n  if (\"/\" === a) {\n    return \"/\";\n  }\n  a = Ya(a);\n  a = a.replace(/\\/$/, \"\");\n  var b = a.lastIndexOf(\"/\");\n  return -1 === b ? a : a.substr(b + 1);\n}, ab = () => {\n  if (\"object\" == typeof crypto && \"function\" == typeof crypto.getRandomValues) {\n    return a => crypto.getRandomValues(a);\n  }\n  Ha(\"initRandomDevice\");\n}, bb = a => (bb = ab())(a), cb = (...a) => {\n  for (var b = \"\", c = !1, d = a.length - 1; -1 <= d && !c; d--) {\n    c = 0 <= d ? a[d] : \"/\";\n    if (\"string\" != typeof c) {\n      throw new TypeError(\"Arguments to path.resolve must be strings\");\n    }\n    if (!c) {\n      return \"\";\n    }\n    b = c + \"/\" + b;\n    c = \"/\" === c.charAt(0);\n  }\n  b = Xa(b.split(\"/\").filter(e => !!e), !c).join(\"/\");\n  return (c ? \"/\" : \"\") + b || \".\";\n}, db = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf8\") : void 0, L = (a, b, c) => {\n  var d = b + c;\n  for (c = b; a[c] && !(c >= d);) {\n    ++c;\n  }\n  if (16 < c - b && a.buffer && db) {\n    return db.decode(a.subarray(b, c));\n  }\n  for (d = \"\"; b < c;) {\n    var e = a[b++];\n    if (e & 128) {\n      var f = a[b++] & 63;\n      if (192 == (e & 224)) {\n        d += String.fromCharCode((e & 31) << 6 | f);\n      } else {\n        var g = a[b++] & 63;\n        e = 224 == (e & 240) ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;\n        65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));\n      }\n    } else {\n      d += String.fromCharCode(e);\n    }\n  }\n  return d;\n}, eb = [], fb = a => {\n  for (var b = 0, c = 0; c < a.length; ++c) {\n    var d = a.charCodeAt(c);\n    127 >= d ? b++ : 2047 >= d ? b += 2 : 55296 <= d && 57343 >= d ? (b += 4, ++c) : b += 3;\n  }\n  return b;\n}, gb = (a, b, c, d) => {\n  if (!(0 < d)) {\n    return 0;\n  }\n  var e = c;\n  d = c + d - 1;\n  for (var f = 0; f < a.length; ++f) {\n    var g = a.charCodeAt(f);\n    if (55296 <= g && 57343 >= g) {\n      var k = a.charCodeAt(++f);\n      g = 65536 + ((g & 1023) << 10) | k & 1023;\n    }\n    if (127 >= g) {\n      if (c >= d) {\n        break;\n      }\n      b[c++] = g;\n    } else {\n      if (2047 >= g) {\n        if (c + 1 >= d) {\n          break;\n        }\n        b[c++] = 192 | g >> 6;\n      } else {\n        if (65535 >= g) {\n          if (c + 2 >= d) {\n            break;\n          }\n          b[c++] = 224 | g >> 12;\n        } else {\n          if (c + 3 >= d) {\n            break;\n          }\n          b[c++] = 240 | g >> 18;\n          b[c++] = 128 | g >> 12 & 63;\n        }\n        b[c++] = 128 | g >> 6 & 63;\n      }\n      b[c++] = 128 | g & 63;\n    }\n  }\n  b[c] = 0;\n  return c - e;\n};\nfunction hb(a, b) {\n  var c = Array(fb(a) + 1);\n  a = gb(a, c, 0, c.length);\n  b && (c.length = a);\n  return c;\n}\nvar ib = [];\nfunction jb(a, b) {\n  ib[a] = {input:[], H:[], V:b};\n  kb(a, lb);\n}\nvar lb = {open(a) {\n  var b = ib[a.node.Da];\n  if (!b) {\n    throw new M(43);\n  }\n  a.s = b;\n  a.seekable = !1;\n}, close(a) {\n  a.s.V.sa(a.s);\n}, sa(a) {\n  a.s.V.sa(a.s);\n}, read(a, b, c, d) {\n  if (!a.s || !a.s.V.hb) {\n    throw new M(60);\n  }\n  for (var e = 0, f = 0; f < d; f++) {\n    try {\n      var g = a.s.V.hb(a.s);\n    } catch (k) {\n      throw new M(29);\n    }\n    if (void 0 === g && 0 === e) {\n      throw new M(6);\n    }\n    if (null === g || void 0 === g) {\n      break;\n    }\n    e++;\n    b[c + f] = g;\n  }\n  e && (a.node.timestamp = Date.now());\n  return e;\n}, write(a, b, c, d) {\n  if (!a.s || !a.s.V.Sa) {\n    throw new M(60);\n  }\n  try {\n    for (var e = 0; e < d; e++) {\n      a.s.V.Sa(a.s, b[c + e]);\n    }\n  } catch (f) {\n    throw new M(29);\n  }\n  d && (a.node.timestamp = Date.now());\n  return e;\n},}, nb = {hb() {\n  a: {\n    if (!eb.length) {\n      var a = null;\n      \"undefined\" != typeof window && \"function\" == typeof window.prompt && (a = window.prompt(\"Input: \"), null !== a && (a += \"\\n\"));\n      if (!a) {\n        a = null;\n        break a;\n      }\n      eb = hb(a, !0);\n    }\n    a = eb.shift();\n  }\n  return a;\n}, Sa(a, b) {\n  null === b || 10 === b ? (ra(L(a.H, 0)), a.H = []) : 0 != b && a.H.push(b);\n}, sa(a) {\n  a.H && 0 < a.H.length && (ra(L(a.H, 0)), a.H = []);\n}, Vb() {\n  return {sc:25856, uc:5, rc:191, tc:35387, qc:[3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,]};\n}, Wb() {\n  return 0;\n}, Xb() {\n  return [24, 80];\n},}, ob = {Sa(a, b) {\n  null === b || 10 === b ? (sa(L(a.H, 0)), a.H = []) : 0 != b && a.H.push(b);\n}, sa(a) {\n  a.H && 0 < a.H.length && (sa(L(a.H, 0)), a.H = []);\n},};\nfunction pb(a, b) {\n  var c = a.l ? a.l.length : 0;\n  c >= b || (b = Math.max(b, c * (1048576 > c ? 2.0 : 1.125) >>> 0), 0 != c && (b = Math.max(b, 256)), c = a.l, a.l = new Uint8Array(b), 0 < a.v && a.l.set(c.subarray(0, a.v), 0));\n}\nvar N = {N:null, U() {\n  return N.createNode(null, \"/\", 16895, 0);\n}, createNode(a, b, c, d) {\n  if (24576 === (c & 61440) || 4096 === (c & 61440)) {\n    throw new M(63);\n  }\n  N.N || (N.N = {dir:{node:{X:N.j.X, P:N.j.P, la:N.j.la, Aa:N.j.Aa, sb:N.j.sb, xb:N.j.xb, tb:N.j.tb, rb:N.j.rb, Ga:N.j.Ga}, stream:{aa:N.m.aa}}, file:{node:{X:N.j.X, P:N.j.P}, stream:{aa:N.m.aa, read:N.m.read, write:N.m.write, $a:N.m.$a, jb:N.m.jb, lb:N.m.lb}}, link:{node:{X:N.j.X, P:N.j.P, ma:N.j.ma}, stream:{}}, ab:{node:{X:N.j.X, P:N.j.P}, stream:qb}});\n  c = rb(a, b, c, d);\n  16384 === (c.mode & 61440) ? (c.j = N.N.dir.node, c.m = N.N.dir.stream, c.l = {}) : 32768 === (c.mode & 61440) ? (c.j = N.N.file.node, c.m = N.N.file.stream, c.v = 0, c.l = null) : 40960 === (c.mode & 61440) ? (c.j = N.N.link.node, c.m = N.N.link.stream) : 8192 === (c.mode & 61440) && (c.j = N.N.ab.node, c.m = N.N.ab.stream);\n  c.timestamp = Date.now();\n  a && (a.l[b] = c, a.timestamp = c.timestamp);\n  return c;\n}, Ac(a) {\n  return a.l ? a.l.subarray ? a.l.subarray(0, a.v) : new Uint8Array(a.l) : new Uint8Array(0);\n}, j:{X(a) {\n  var b = {};\n  b.xc = 8192 === (a.mode & 61440) ? a.id : 1;\n  b.Cc = a.id;\n  b.mode = a.mode;\n  b.Hc = 1;\n  b.uid = 0;\n  b.Bc = 0;\n  b.Da = a.Da;\n  16384 === (a.mode & 61440) ? b.size = 4096 : 32768 === (a.mode & 61440) ? b.size = a.v : 40960 === (a.mode & 61440) ? b.size = a.link.length : b.size = 0;\n  b.oc = new Date(a.timestamp);\n  b.Gc = new Date(a.timestamp);\n  b.vc = new Date(a.timestamp);\n  b.Fb = 4096;\n  b.pc = Math.ceil(b.size / b.Fb);\n  return b;\n}, P(a, b) {\n  void 0 !== b.mode && (a.mode = b.mode);\n  void 0 !== b.timestamp && (a.timestamp = b.timestamp);\n  if (void 0 !== b.size && (b = b.size, a.v != b)) {\n    if (0 == b) {\n      a.l = null, a.v = 0;\n    } else {\n      var c = a.l;\n      a.l = new Uint8Array(b);\n      c && a.l.set(c.subarray(0, Math.min(b, a.v)));\n      a.v = b;\n    }\n  }\n}, la() {\n  throw sb[44];\n}, Aa(a, b, c, d) {\n  return N.createNode(a, b, c, d);\n}, sb(a, b, c) {\n  if (16384 === (a.mode & 61440)) {\n    try {\n      var d = tb(b, c);\n    } catch (f) {\n    }\n    if (d) {\n      for (var e in d.l) {\n        throw new M(55);\n      }\n    }\n  }\n  delete a.parent.l[a.name];\n  a.parent.timestamp = Date.now();\n  a.name = c;\n  b.l[c] = a;\n  b.timestamp = a.parent.timestamp;\n}, xb(a, b) {\n  delete a.l[b];\n  a.timestamp = Date.now();\n}, tb(a, b) {\n  var c = tb(a, b), d;\n  for (d in c.l) {\n    throw new M(55);\n  }\n  delete a.l[b];\n  a.timestamp = Date.now();\n}, rb(a) {\n  var b = [\".\", \"..\"], c;\n  for (c of Object.keys(a.l)) {\n    b.push(c);\n  }\n  return b;\n}, Ga(a, b, c) {\n  a = N.createNode(a, b, 41471, 0);\n  a.link = c;\n  return a;\n}, ma(a) {\n  if (40960 !== (a.mode & 61440)) {\n    throw new M(28);\n  }\n  return a.link;\n},}, m:{read(a, b, c, d, e) {\n  var f = a.node.l;\n  if (e >= a.node.v) {\n    return 0;\n  }\n  a = Math.min(a.node.v - e, d);\n  if (8 < a && f.subarray) {\n    b.set(f.subarray(e, e + a), c);\n  } else {\n    for (d = 0; d < a; d++) {\n      b[c + d] = f[e + d];\n    }\n  }\n  return a;\n}, write(a, b, c, d, e, f) {\n  b.buffer === B.buffer && (f = !1);\n  if (!d) {\n    return 0;\n  }\n  a = a.node;\n  a.timestamp = Date.now();\n  if (b.subarray && (!a.l || a.l.subarray)) {\n    if (f) {\n      return a.l = b.subarray(c, c + d), a.v = d;\n    }\n    if (0 === a.v && 0 === e) {\n      return a.l = b.slice(c, c + d), a.v = d;\n    }\n    if (e + d <= a.v) {\n      return a.l.set(b.subarray(c, c + d), e), d;\n    }\n  }\n  pb(a, e + d);\n  if (a.l.subarray && b.subarray) {\n    a.l.set(b.subarray(c, c + d), e);\n  } else {\n    for (f = 0; f < d; f++) {\n      a.l[e + f] = b[c + f];\n    }\n  }\n  a.v = Math.max(a.v, e + d);\n  return d;\n}, aa(a, b, c) {\n  1 === c ? b += a.position : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.v);\n  if (0 > b) {\n    throw new M(28);\n  }\n  return b;\n}, $a(a, b, c) {\n  pb(a.node, b + c);\n  a.node.v = Math.max(a.node.v, b + c);\n}, jb(a, b, c, d, e) {\n  if (32768 !== (a.node.mode & 61440)) {\n    throw new M(43);\n  }\n  a = a.node.l;\n  if (e & 2 || a.buffer !== B.buffer) {\n    if (0 < c || c + b < a.length) {\n      a.subarray ? a = a.subarray(c, c + b) : a = Array.prototype.slice.call(a, c, c + b);\n    }\n    c = !0;\n    Ha();\n    b = void 0;\n    if (!b) {\n      throw new M(48);\n    }\n    B.set(a, b);\n  } else {\n    c = !1, b = a.byteOffset;\n  }\n  return {o:b, nc:c};\n}, lb(a, b, c, d) {\n  N.m.write(a, b, 0, d, c, !1);\n  return 0;\n},},}, ub = (a, b) => {\n  var c = 0;\n  a && (c |= 365);\n  b && (c |= 146);\n  return c;\n}, vb = null, wb = {}, xb = [], yb = 1, zb = null, Ab = !0, M = class {\n  constructor(a) {\n    this.name = \"ErrnoError\";\n    this.$ = a;\n  }\n}, sb = {}, Bb = class {\n  constructor() {\n    this.h = {};\n    this.node = null;\n  }\n  get flags() {\n    return this.h.flags;\n  }\n  set flags(a) {\n    this.h.flags = a;\n  }\n  get position() {\n    return this.h.position;\n  }\n  set position(a) {\n    this.h.position = a;\n  }\n}, Cb = class {\n  constructor(a, b, c, d) {\n    a ||= this;\n    this.parent = a;\n    this.U = a.U;\n    this.Ba = null;\n    this.id = yb++;\n    this.name = b;\n    this.mode = c;\n    this.j = {};\n    this.m = {};\n    this.Da = d;\n  }\n  get read() {\n    return 365 === (this.mode & 365);\n  }\n  set read(a) {\n    a ? this.mode |= 365 : this.mode &= -366;\n  }\n  get write() {\n    return 146 === (this.mode & 146);\n  }\n  set write(a) {\n    a ? this.mode |= 146 : this.mode &= -147;\n  }\n};\nfunction Db(a, b = {}) {\n  a = cb(a);\n  if (!a) {\n    return {path:\"\", node:null};\n  }\n  b = Object.assign({gb:!0, Ua:0}, b);\n  if (8 < b.Ua) {\n    throw new M(32);\n  }\n  a = a.split(\"/\").filter(g => !!g);\n  for (var c = vb, d = \"/\", e = 0; e < a.length; e++) {\n    var f = e === a.length - 1;\n    if (f && b.parent) {\n      break;\n    }\n    c = tb(c, a[e]);\n    d = Ya(d + \"/\" + a[e]);\n    c.Ba && (!f || f && b.gb) && (c = c.Ba.root);\n    if (!f || b.fb) {\n      for (f = 0; 40960 === (c.mode & 61440);) {\n        if (c = Eb(d), d = cb(Za(d), c), c = Db(d, {Ua:b.Ua + 1}).node, 40 < f++) {\n          throw new M(32);\n        }\n      }\n    }\n  }\n  return {path:d, node:c};\n}\nfunction Fb(a) {\n  for (var b;;) {\n    if (a === a.parent) {\n      return a = a.U.kb, b ? \"/\" !== a[a.length - 1] ? `${a}/${b}` : a + b : a;\n    }\n    b = b ? `${a.name}/${b}` : a.name;\n    a = a.parent;\n  }\n}\nfunction Gb(a, b) {\n  for (var c = 0, d = 0; d < b.length; d++) {\n    c = (c << 5) - c + b.charCodeAt(d) | 0;\n  }\n  return (a + c >>> 0) % zb.length;\n}\nfunction tb(a, b) {\n  var c = 16384 === (a.mode & 61440) ? (c = Hb(a, \"x\")) ? c : a.j.la ? 0 : 2 : 54;\n  if (c) {\n    throw new M(c);\n  }\n  for (c = zb[Gb(a.id, b)]; c; c = c.$b) {\n    var d = c.name;\n    if (c.parent.id === a.id && d === b) {\n      return c;\n    }\n  }\n  return a.j.la(a, b);\n}\nfunction rb(a, b, c, d) {\n  a = new Cb(a, b, c, d);\n  b = Gb(a.parent.id, a.name);\n  a.$b = zb[b];\n  return zb[b] = a;\n}\nfunction Ib(a) {\n  var b = [\"r\", \"w\", \"rw\"][a & 3];\n  a & 512 && (b += \"w\");\n  return b;\n}\nfunction Hb(a, b) {\n  if (Ab) {\n    return 0;\n  }\n  if (!b.includes(\"r\") || a.mode & 292) {\n    if (b.includes(\"w\") && !(a.mode & 146) || b.includes(\"x\") && !(a.mode & 73)) {\n      return 2;\n    }\n  } else {\n    return 2;\n  }\n  return 0;\n}\nfunction Jb(a, b) {\n  try {\n    return tb(a, b), 20;\n  } catch (c) {\n  }\n  return Hb(a, \"wx\");\n}\nfunction Kb(a) {\n  a = xb[a];\n  if (!a) {\n    throw new M(8);\n  }\n  return a;\n}\nfunction Lb(a, b = -1) {\n  a = Object.assign(new Bb(), a);\n  if (-1 == b) {\n    a: {\n      for (b = 0; 4096 >= b; b++) {\n        if (!xb[b]) {\n          break a;\n        }\n      }\n      throw new M(33);\n    }\n  }\n  a.W = b;\n  return xb[b] = a;\n}\nfunction Mb(a, b = -1) {\n  a = Lb(a, b);\n  a.m?.zc?.(a);\n  return a;\n}\nvar qb = {open(a) {\n  a.m = wb[a.node.Da].m;\n  a.m.open?.(a);\n}, aa() {\n  throw new M(70);\n},};\nfunction kb(a, b) {\n  wb[a] = {m:b};\n}\nfunction Nb(a, b) {\n  var c = \"/\" === b;\n  if (c && vb) {\n    throw new M(10);\n  }\n  if (!c && b) {\n    var d = Db(b, {gb:!1});\n    b = d.path;\n    d = d.node;\n    if (d.Ba) {\n      throw new M(10);\n    }\n    if (16384 !== (d.mode & 61440)) {\n      throw new M(54);\n    }\n  }\n  b = {type:a, Jc:{}, kb:b, Yb:[]};\n  a = a.U(b);\n  a.U = b;\n  b.root = a;\n  c ? vb = a : d && (d.Ba = b, d.U && d.U.Yb.push(b));\n}\nfunction Ob(a, b, c) {\n  var d = Db(a, {parent:!0}).node;\n  a = $a(a);\n  if (!a || \".\" === a || \"..\" === a) {\n    throw new M(28);\n  }\n  var e = Jb(d, a);\n  if (e) {\n    throw new M(e);\n  }\n  if (!d.j.Aa) {\n    throw new M(63);\n  }\n  return d.j.Aa(d, a, b, c);\n}\nfunction Pb(a) {\n  return Ob(a, 16895, 0);\n}\nfunction Qb(a, b, c) {\n  \"undefined\" == typeof c && (c = b, b = 438);\n  Ob(a, b | 8192, c);\n}\nfunction Rb(a, b) {\n  if (!cb(a)) {\n    throw new M(44);\n  }\n  var c = Db(b, {parent:!0}).node;\n  if (!c) {\n    throw new M(44);\n  }\n  b = $a(b);\n  var d = Jb(c, b);\n  if (d) {\n    throw new M(d);\n  }\n  if (!c.j.Ga) {\n    throw new M(63);\n  }\n  c.j.Ga(c, b, a);\n}\nfunction Eb(a) {\n  a = Db(a).node;\n  if (!a) {\n    throw new M(44);\n  }\n  if (!a.j.ma) {\n    throw new M(28);\n  }\n  return cb(Fb(a.parent), a.j.ma(a));\n}\nfunction Sb(a, b, c) {\n  if (\"\" === a) {\n    throw new M(44);\n  }\n  if (\"string\" == typeof b) {\n    var d = {r:0, \"r+\":2, w:577, \"w+\":578, a:1089, \"a+\":1090,}[b];\n    if (\"undefined\" == typeof d) {\n      throw Error(`Unknown file open mode: ${b}`);\n    }\n    b = d;\n  }\n  c = b & 64 ? (\"undefined\" == typeof c ? 438 : c) & 4095 | 32768 : 0;\n  if (\"object\" == typeof a) {\n    var e = a;\n  } else {\n    a = Ya(a);\n    try {\n      e = Db(a, {fb:!(b & 131072)}).node;\n    } catch (f) {\n    }\n  }\n  d = !1;\n  if (b & 64) {\n    if (e) {\n      if (b & 128) {\n        throw new M(20);\n      }\n    } else {\n      e = Ob(a, c, 0), d = !0;\n    }\n  }\n  if (!e) {\n    throw new M(44);\n  }\n  8192 === (e.mode & 61440) && (b &= -513);\n  if (b & 65536 && 16384 !== (e.mode & 61440)) {\n    throw new M(54);\n  }\n  if (!d && (c = e ? 40960 === (e.mode & 61440) ? 32 : 16384 === (e.mode & 61440) && (\"r\" !== Ib(b) || b & 512) ? 31 : Hb(e, Ib(b)) : 44)) {\n    throw new M(c);\n  }\n  if (b & 512 && !d) {\n    c = e;\n    c = \"string\" == typeof c ? Db(c, {fb:!0}).node : c;\n    if (!c.j.P) {\n      throw new M(63);\n    }\n    if (16384 === (c.mode & 61440)) {\n      throw new M(31);\n    }\n    if (32768 !== (c.mode & 61440)) {\n      throw new M(28);\n    }\n    if (d = Hb(c, \"w\")) {\n      throw new M(d);\n    }\n    c.j.P(c, {size:0, timestamp:Date.now()});\n  }\n  b &= -131713;\n  e = Lb({node:e, path:Fb(e), flags:b, seekable:!0, position:0, m:e.m, mc:[], error:!1});\n  e.m.open && e.m.open(e);\n  !l.logReadFiles || b & 1 || (Tb ||= {}, a in Tb || (Tb[a] = 1));\n  return e;\n}\nfunction Ub(a, b, c) {\n  if (null === a.W) {\n    throw new M(8);\n  }\n  if (!a.seekable || !a.m.aa) {\n    throw new M(70);\n  }\n  if (0 != c && 1 != c && 2 != c) {\n    throw new M(28);\n  }\n  a.position = a.m.aa(a, b, c);\n  a.mc = [];\n}\nvar Vb;\nfunction Wb(a, b, c) {\n  a = Ya(\"/dev/\" + a);\n  var d = ub(!!b, !!c);\n  Xb ||= 64;\n  var e = Xb++ << 8 | 0;\n  kb(e, {open(f) {\n    f.seekable = !1;\n  }, close() {\n    c?.buffer?.length && c(10);\n  }, read(f, g, k, m) {\n    for (var n = 0, t = 0; t < m; t++) {\n      try {\n        var v = b();\n      } catch (x) {\n        throw new M(29);\n      }\n      if (void 0 === v && 0 === n) {\n        throw new M(6);\n      }\n      if (null === v || void 0 === v) {\n        break;\n      }\n      n++;\n      g[k + t] = v;\n    }\n    n && (f.node.timestamp = Date.now());\n    return n;\n  }, write(f, g, k, m) {\n    for (var n = 0; n < m; n++) {\n      try {\n        c(g[k + n]);\n      } catch (t) {\n        throw new M(29);\n      }\n    }\n    m && (f.node.timestamp = Date.now());\n    return n;\n  }});\n  Qb(a, d, e);\n}\nvar Xb, Yb = {}, Tb, Wa = void 0, Zb = (a, b) => Object.defineProperty(b, \"name\", {value:a}), $b = [], O = [], P, Q = a => {\n  if (!a) {\n    throw new P(\"Cannot use deleted val. handle = \" + a);\n  }\n  return O[a];\n}, ac = a => {\n  switch(a) {\n    case void 0:\n      return 2;\n    case null:\n      return 4;\n    case !0:\n      return 6;\n    case !1:\n      return 8;\n    default:\n      const b = $b.pop() || O.length;\n      O[b] = a;\n      O[b + 1] = 1;\n      return b;\n  }\n}, bc = a => {\n  var b = Error, c = Zb(a, function(d) {\n    this.name = a;\n    this.message = d;\n    d = Error(d).stack;\n    void 0 !== d && (this.stack = this.toString() + \"\\n\" + d.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n  });\n  c.prototype = Object.create(b.prototype);\n  c.prototype.constructor = c;\n  c.prototype.toString = function() {\n    return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n  };\n  return c;\n}, cc, dc, R = a => {\n  for (var b = \"\"; D[a];) {\n    b += dc[D[a++]];\n  }\n  return b;\n}, ec = [], fc = () => {\n  for (; ec.length;) {\n    var a = ec.pop();\n    a.g.ha = !1;\n    a[\"delete\"]();\n  }\n}, gc, hc = {}, ic = (a, b) => {\n  if (void 0 === b) {\n    throw new P(\"ptr should not be undefined\");\n  }\n  for (; a.B;) {\n    b = a.oa(b), a = a.B;\n  }\n  return b;\n}, jc = {}, mc = a => {\n  a = kc(a);\n  var b = R(a);\n  lc(a);\n  return b;\n}, nc = (a, b) => {\n  var c = jc[a];\n  if (void 0 === c) {\n    throw a = `${b} has unknown type ${mc(a)}`, new P(a);\n  }\n  return c;\n}, oc = () => {\n}, pc = !1, qc = (a, b, c) => {\n  if (b === c) {\n    return a;\n  }\n  if (void 0 === c.B) {\n    return null;\n  }\n  a = qc(a, b, c.B);\n  return null === a ? null : c.Ib(a);\n}, rc = {}, sc = (a, b) => {\n  b = ic(a, b);\n  return hc[b];\n}, tc, vc = (a, b) => {\n  if (!b.u || !b.o) {\n    throw new tc(\"makeClassHandle requires ptr and ptrType\");\n  }\n  if (!!b.J !== !!b.F) {\n    throw new tc(\"Both smartPtrType and smartPtr must be specified\");\n  }\n  b.count = {value:1};\n  return uc(Object.create(a, {g:{value:b, writable:!0,},}));\n}, uc = a => {\n  if (\"undefined\" === typeof FinalizationRegistry) {\n    return uc = b => b, a;\n  }\n  pc = new FinalizationRegistry(b => {\n    b = b.g;\n    --b.count.value;\n    0 === b.count.value && (b.F ? b.J.O(b.F) : b.u.i.O(b.o));\n  });\n  uc = b => {\n    var c = b.g;\n    c.F && pc.register(b, {g:c}, b);\n    return b;\n  };\n  oc = b => {\n    pc.unregister(b);\n  };\n  return uc(a);\n}, wc = {}, xc = a => {\n  for (; a.length;) {\n    var b = a.pop();\n    a.pop()(b);\n  }\n};\nfunction yc(a) {\n  return this.fromWireType(K[a >> 2]);\n}\nvar zc = {}, Ac = {}, T = (a, b, c) => {\n  function d(k) {\n    k = c(k);\n    if (k.length !== a.length) {\n      throw new tc(\"Mismatched type converter count\");\n    }\n    for (var m = 0; m < a.length; ++m) {\n      S(a[m], k[m]);\n    }\n  }\n  a.forEach(function(k) {\n    Ac[k] = b;\n  });\n  var e = Array(b.length), f = [], g = 0;\n  b.forEach((k, m) => {\n    jc.hasOwnProperty(k) ? e[m] = jc[k] : (f.push(k), zc.hasOwnProperty(k) || (zc[k] = []), zc[k].push(() => {\n      e[m] = jc[k];\n      ++g;\n      g === f.length && d(e);\n    }));\n  });\n  0 === f.length && d(e);\n};\nfunction Bc(a, b, c = {}) {\n  var d = b.name;\n  if (!a) {\n    throw new P(`type \"${d}\" must have a positive integer typeid pointer`);\n  }\n  if (jc.hasOwnProperty(a)) {\n    if (c.Sb) {\n      return;\n    }\n    throw new P(`Cannot register type '${d}' twice`);\n  }\n  jc[a] = b;\n  delete Ac[a];\n  zc.hasOwnProperty(a) && (b = zc[a], delete zc[a], b.forEach(e => e()));\n}\nfunction S(a, b, c = {}) {\n  if (!(\"argPackAdvance\" in b)) {\n    throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n  }\n  return Bc(a, b, c);\n}\nvar Cc = a => {\n  throw new P(a.g.u.i.name + \" instance already deleted\");\n};\nfunction Dc() {\n}\nvar Ec = (a, b, c) => {\n  if (void 0 === a[b].A) {\n    var d = a[b];\n    a[b] = function(...e) {\n      if (!a[b].A.hasOwnProperty(e.length)) {\n        throw new P(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].A})!`);\n      }\n      return a[b].A[e.length].apply(this, e);\n    };\n    a[b].A = [];\n    a[b].A[d.ga] = d;\n  }\n}, Fc = (a, b, c) => {\n  if (l.hasOwnProperty(a)) {\n    if (void 0 === c || void 0 !== l[a].A && void 0 !== l[a].A[c]) {\n      throw new P(`Cannot register public name '${a}' twice`);\n    }\n    Ec(l, a, a);\n    if (l.hasOwnProperty(c)) {\n      throw new P(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);\n    }\n    l[a].A[c] = b;\n  } else {\n    l[a] = b, void 0 !== c && (l[a].Ic = c);\n  }\n}, Gc = a => {\n  if (void 0 === a) {\n    return \"_unknown\";\n  }\n  a = a.replace(/[^a-zA-Z0-9_]/g, \"$\");\n  var b = a.charCodeAt(0);\n  return 48 <= b && 57 >= b ? `_${a}` : a;\n};\nfunction Hc(a, b, c, d, e, f, g, k) {\n  this.name = a;\n  this.constructor = b;\n  this.M = c;\n  this.O = d;\n  this.B = e;\n  this.Nb = f;\n  this.oa = g;\n  this.Ib = k;\n  this.ob = [];\n}\nvar Ic = (a, b, c) => {\n  for (; b !== c;) {\n    if (!b.oa) {\n      throw new P(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);\n    }\n    a = b.oa(a);\n    b = b.B;\n  }\n  return a;\n};\nfunction Jc(a, b) {\n  if (null === b) {\n    if (this.Ra) {\n      throw new P(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!b.g) {\n    throw new P(`Cannot pass \"${Kc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new P(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  return Ic(b.g.o, b.g.u.i, this.i);\n}\nfunction Lc(a, b) {\n  if (null === b) {\n    if (this.Ra) {\n      throw new P(`null is not a valid ${this.name}`);\n    }\n    if (this.wa) {\n      var c = this.Ta();\n      null !== a && a.push(this.O, c);\n      return c;\n    }\n    return 0;\n  }\n  if (!b || !b.g) {\n    throw new P(`Cannot pass \"${Kc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new P(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (!this.va && b.g.u.va) {\n    throw new P(`Cannot convert argument of type ${b.g.J ? b.g.J.name : b.g.u.name} to parameter type ${this.name}`);\n  }\n  c = Ic(b.g.o, b.g.u.i, this.i);\n  if (this.wa) {\n    if (void 0 === b.g.F) {\n      throw new P(\"Passing raw pointer to smart pointer is illegal\");\n    }\n    switch(this.fc) {\n      case 0:\n        if (b.g.J === this) {\n          c = b.g.F;\n        } else {\n          throw new P(`Cannot convert argument of type ${b.g.J ? b.g.J.name : b.g.u.name} to parameter type ${this.name}`);\n        }\n        break;\n      case 1:\n        c = b.g.F;\n        break;\n      case 2:\n        if (b.g.J === this) {\n          c = b.g.F;\n        } else {\n          var d = b.clone();\n          c = this.bc(c, ac(() => d[\"delete\"]()));\n          null !== a && a.push(this.O, c);\n        }\n        break;\n      default:\n        throw new P(\"Unsupporting sharing policy\");\n    }\n  }\n  return c;\n}\nfunction Mc(a, b) {\n  if (null === b) {\n    if (this.Ra) {\n      throw new P(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!b.g) {\n    throw new P(`Cannot pass \"${Kc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new P(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (b.g.u.va) {\n    throw new P(`Cannot convert argument of type ${b.g.u.name} to parameter type ${this.name}`);\n  }\n  return Ic(b.g.o, b.g.u.i, this.i);\n}\nfunction Nc(a, b, c, d, e, f, g, k, m, n, t) {\n  this.name = a;\n  this.i = b;\n  this.Ra = c;\n  this.va = d;\n  this.wa = e;\n  this.ac = f;\n  this.fc = g;\n  this.qb = k;\n  this.Ta = m;\n  this.bc = n;\n  this.O = t;\n  e || void 0 !== b.B ? this.toWireType = Lc : (this.toWireType = d ? Jc : Mc, this.L = null);\n}\nvar Oc = (a, b, c) => {\n  if (!l.hasOwnProperty(a)) {\n    throw new tc(\"Replacing nonexistent public symbol\");\n  }\n  void 0 !== l[a].A && void 0 !== c ? l[a].A[c] = b : (l[a] = b, l[a].ga = c);\n}, Pc = [], Qc, Rc = a => {\n  var b = Pc[a];\n  b || (a >= Pc.length && (Pc.length = a + 1), Pc[a] = b = Qc.get(a));\n  return b;\n}, Sc = (a, b, c = []) => {\n  a.includes(\"j\") ? (a = a.replace(/p/g, \"i\"), b = (0,l[\"dynCall_\" + a])(b, ...c)) : b = Rc(b)(...c);\n  return b;\n}, Tc = (a, b) => (...c) => Sc(a, b, c), U = (a, b) => {\n  a = R(a);\n  var c = a.includes(\"j\") ? Tc(a, b) : Rc(b);\n  if (\"function\" != typeof c) {\n    throw new P(`unknown function pointer with signature ${a}: ${b}`);\n  }\n  return c;\n}, Uc, Vc = (a, b) => {\n  function c(f) {\n    e[f] || jc[f] || (Ac[f] ? Ac[f].forEach(c) : (d.push(f), e[f] = !0));\n  }\n  var d = [], e = {};\n  b.forEach(c);\n  throw new Uc(`${a}: ` + d.map(mc).join([\", \"]));\n};\nfunction Wc(a) {\n  for (var b = 1; b < a.length; ++b) {\n    if (null !== a[b] && void 0 === a[b].L) {\n      return !0;\n    }\n  }\n  return !1;\n}\nfunction Xc(a, b, c, d, e) {\n  var f = b.length;\n  if (2 > f) {\n    throw new P(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n  }\n  var g = null !== b[1] && null !== c, k = Wc(b), m = \"void\" !== b[0].name, n = f - 2, t = Array(n), v = [], x = [];\n  return Zb(a, function(...p) {\n    if (p.length !== n) {\n      throw new P(`function ${a} called with ${p.length} arguments, expected ${n}`);\n    }\n    x.length = 0;\n    v.length = g ? 2 : 1;\n    v[0] = e;\n    if (g) {\n      var r = b[1].toWireType(x, this);\n      v[1] = r;\n    }\n    for (var u = 0; u < n; ++u) {\n      t[u] = b[u + 2].toWireType(x, p[u]), v.push(t[u]);\n    }\n    p = d(...v);\n    if (k) {\n      xc(x);\n    } else {\n      for (u = g ? 1 : 2; u < b.length; u++) {\n        var y = 1 === u ? r : t[u - 2];\n        null !== b[u].L && b[u].L(y);\n      }\n    }\n    r = m ? b[0].fromWireType(p) : void 0;\n    return r;\n  });\n}\nvar Yc = (a, b) => {\n  for (var c = [], d = 0; d < a; d++) {\n    c.push(K[b + 4 * d >> 2]);\n  }\n  return c;\n}, Zc = a => {\n  a = a.trim();\n  const b = a.indexOf(\"(\");\n  return -1 !== b ? a.substr(0, b) : a;\n}, $c = (a, b, c) => {\n  if (!(a instanceof Object)) {\n    throw new P(`${c} with invalid \"this\": ${a}`);\n  }\n  if (!(a instanceof b.i.constructor)) {\n    throw new P(`${c} incompatible with \"this\" of type ${a.constructor.name}`);\n  }\n  if (!a.g.o) {\n    throw new P(`cannot call emscripten binding method ${c} on deleted object`);\n  }\n  return Ic(a.g.o, a.g.u.i, b.i);\n}, ad = a => {\n  9 < a && 0 === --O[a + 1] && (O[a] = void 0, $b.push(a));\n}, bd = {name:\"emscripten::val\", fromWireType:a => {\n  var b = Q(a);\n  ad(a);\n  return b;\n}, toWireType:(a, b) => ac(b), argPackAdvance:8, readValueFromPointer:yc, L:null,}, cd = (a, b, c) => {\n  switch(b) {\n    case 1:\n      return c ? function(d) {\n        return this.fromWireType(B[d]);\n      } : function(d) {\n        return this.fromWireType(D[d]);\n      };\n    case 2:\n      return c ? function(d) {\n        return this.fromWireType(E[d >> 1]);\n      } : function(d) {\n        return this.fromWireType(wa[d >> 1]);\n      };\n    case 4:\n      return c ? function(d) {\n        return this.fromWireType(G[d >> 2]);\n      } : function(d) {\n        return this.fromWireType(K[d >> 2]);\n      };\n    default:\n      throw new TypeError(`invalid integer width (${b}): ${a}`);\n  }\n}, Kc = a => {\n  if (null === a) {\n    return \"null\";\n  }\n  var b = typeof a;\n  return \"object\" === b || \"array\" === b || \"function\" === b ? a.toString() : \"\" + a;\n}, dd = (a, b) => {\n  switch(b) {\n    case 4:\n      return function(c) {\n        return this.fromWireType(xa[c >> 2]);\n      };\n    case 8:\n      return function(c) {\n        return this.fromWireType(ya[c >> 3]);\n      };\n    default:\n      throw new TypeError(`invalid float width (${b}): ${a}`);\n  }\n}, ed = (a, b, c) => {\n  switch(b) {\n    case 1:\n      return c ? d => B[d] : d => D[d];\n    case 2:\n      return c ? d => E[d >> 1] : d => wa[d >> 1];\n    case 4:\n      return c ? d => G[d >> 2] : d => K[d >> 2];\n    default:\n      throw new TypeError(`invalid integer width (${b}): ${a}`);\n  }\n}, fd = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-16le\") : void 0, gd = (a, b) => {\n  var c = a >> 1;\n  for (var d = c + b / 2; !(c >= d) && wa[c];) {\n    ++c;\n  }\n  c <<= 1;\n  if (32 < c - a && fd) {\n    return fd.decode(D.subarray(a, c));\n  }\n  c = \"\";\n  for (d = 0; !(d >= b / 2); ++d) {\n    var e = E[a + 2 * d >> 1];\n    if (0 == e) {\n      break;\n    }\n    c += String.fromCharCode(e);\n  }\n  return c;\n}, hd = (a, b, c) => {\n  c ??= 2147483647;\n  if (2 > c) {\n    return 0;\n  }\n  c -= 2;\n  var d = b;\n  c = c < 2 * a.length ? c / 2 : a.length;\n  for (var e = 0; e < c; ++e) {\n    E[b >> 1] = a.charCodeAt(e), b += 2;\n  }\n  E[b >> 1] = 0;\n  return b - d;\n}, jd = a => 2 * a.length, kd = (a, b) => {\n  for (var c = 0, d = \"\"; !(c >= b / 4);) {\n    var e = G[a + 4 * c >> 2];\n    if (0 == e) {\n      break;\n    }\n    ++c;\n    65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);\n  }\n  return d;\n}, ld = (a, b, c) => {\n  c ??= 2147483647;\n  if (4 > c) {\n    return 0;\n  }\n  var d = b;\n  c = d + c - 4;\n  for (var e = 0; e < a.length; ++e) {\n    var f = a.charCodeAt(e);\n    if (55296 <= f && 57343 >= f) {\n      var g = a.charCodeAt(++e);\n      f = 65536 + ((f & 1023) << 10) | g & 1023;\n    }\n    G[b >> 2] = f;\n    b += 4;\n    if (b + 4 > c) {\n      break;\n    }\n  }\n  G[b >> 2] = 0;\n  return b - d;\n}, md = a => {\n  for (var b = 0, c = 0; c < a.length; ++c) {\n    var d = a.charCodeAt(c);\n    55296 <= d && 57343 >= d && ++c;\n    b += 4;\n  }\n  return b;\n}, nd = (a, b, c) => {\n  var d = [];\n  a = a.toWireType(d, c);\n  d.length && (K[b >> 2] = ac(d));\n  return a;\n}, od = {}, pd = a => {\n  var b = od[a];\n  return void 0 === b ? R(a) : b;\n}, qd = [], rd = a => {\n  var b = qd.length;\n  qd.push(a);\n  return b;\n}, sd = (a, b) => {\n  for (var c = Array(a), d = 0; d < a; ++d) {\n    c[d] = nc(K[b + 4 * d >> 2], \"parameter \" + d);\n  }\n  return c;\n}, td = Reflect.construct, ud = [], vd = a => {\n  a.yc = a.getExtension(\"WEBGL_draw_instanced_base_vertex_base_instance\");\n}, wd = a => {\n  a.Fc = a.getExtension(\"WEBGL_multi_draw_instanced_base_vertex_base_instance\");\n}, xd = a => {\n  var b = \"EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw\".split(\" \");\n  return (a.getSupportedExtensions() || []).filter(c => b.includes(c));\n}, yd = 1, zd = [], V = [], Ad = [], Bd = [], Cd = [], Dd = [], Ed = [], w = [], Fd = {}, Gd = 4, Hd = 0, Id = a => {\n  for (var b = yd++, c = a.length; c < b; c++) {\n    a[c] = null;\n  }\n  return b;\n}, Jd = (a, b, c, d) => {\n  for (var e = 0; e < a; e++) {\n    var f = W[c](), g = f && Id(d);\n    f ? (f.name = g, d[g] = f) : X ||= 1282;\n    G[b + 4 * e >> 2] = g;\n  }\n}, ka = (a, b) => {\n  var c = Id(w), d = {handle:c, attributes:b, version:b.Ec, C:a};\n  a.canvas && (a.canvas.zb = d);\n  w[c] = d;\n  (\"undefined\" == typeof b.Jb || b.Jb) && Kd(d);\n  return c;\n}, la = a => {\n  q = w[a];\n  l.wc = W = q?.C;\n  return !(a && !W);\n}, Kd = a => {\n  a ||= q;\n  if (!a.Tb) {\n    a.Tb = !0;\n    var b = a.C;\n    vd(b);\n    wd(b);\n    2 <= a.version && (b.cb = b.getExtension(\"EXT_disjoint_timer_query_webgl2\"));\n    if (2 > a.version || !b.cb) {\n      b.cb = b.getExtension(\"EXT_disjoint_timer_query\");\n    }\n    b.Zb = b.getExtension(\"WEBGL_multi_draw\");\n    xd(b).forEach(c => {\n      c.includes(\"lose_context\") || c.includes(\"debug\") || b.getExtension(c);\n    });\n  }\n}, X, q, Ld = {}, Nd = () => {\n  if (!Md) {\n    var a = {USER:\"web_user\", LOGNAME:\"web_user\", PATH:\"/\", PWD:\"/\", HOME:\"/home/web_user\", LANG:(\"object\" == typeof navigator && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", _:na || \"./this.program\"}, b;\n    for (b in Ld) {\n      void 0 === Ld[b] ? delete a[b] : a[b] = Ld[b];\n    }\n    var c = [];\n    for (b in a) {\n      c.push(`${b}=${a[b]}`);\n    }\n    Md = c;\n  }\n  return Md;\n}, Md, Od = [];\nfunction Pd() {\n  var a = xd(W);\n  return a = a.concat(a.map(b => \"GL_\" + b));\n}\nvar Qd = (a, b) => {\n  if (b) {\n    var c = void 0;\n    switch(a) {\n      case 36346:\n        c = 1;\n        break;\n      case 36344:\n        return;\n      case 34814:\n      case 36345:\n        c = 0;\n        break;\n      case 34466:\n        var d = W.getParameter(34467);\n        c = d ? d.length : 0;\n        break;\n      case 33309:\n        if (2 > q.version) {\n          X ||= 1282;\n          return;\n        }\n        c = Pd().length;\n        break;\n      case 33307:\n      case 33308:\n        if (2 > q.version) {\n          X ||= 1280;\n          return;\n        }\n        c = 33307 == a ? 3 : 0;\n    }\n    if (void 0 === c) {\n      switch(d = W.getParameter(a), typeof d) {\n        case \"number\":\n          c = d;\n          break;\n        case \"boolean\":\n          c = d ? 1 : 0;\n          break;\n        case \"string\":\n          X ||= 1280;\n          return;\n        case \"object\":\n          if (null === d) {\n            switch(a) {\n              case 34964:\n              case 35725:\n              case 34965:\n              case 36006:\n              case 36007:\n              case 32873:\n              case 34229:\n              case 36662:\n              case 36663:\n              case 35053:\n              case 35055:\n              case 36010:\n              case 35097:\n              case 35869:\n              case 32874:\n              case 36389:\n              case 35983:\n              case 35368:\n              case 34068:\n                c = 0;\n                break;\n              default:\n                X ||= 1280;\n                return;\n            }\n          } else {\n            if (d instanceof Float32Array || d instanceof Uint32Array || d instanceof Int32Array || d instanceof Array) {\n              for (a = 0; a < d.length; ++a) {\n                G[b + 4 * a >> 2] = d[a];\n              }\n              return;\n            }\n            try {\n              c = d.name | 0;\n            } catch (e) {\n              X ||= 1280;\n              sa(`GL_INVALID_ENUM in glGet${0}v: Unknown object returned from WebGL getParameter(${a})! (error: ${e})`);\n              return;\n            }\n          }\n          break;\n        default:\n          X ||= 1280;\n          sa(`GL_INVALID_ENUM in glGet${0}v: Native code calling glGet${0}v(${a}) and it returns ${d} of type ${typeof d}!`);\n          return;\n      }\n    }\n    G[b >> 2] = c;\n  } else {\n    X ||= 1281;\n  }\n}, Sd = a => {\n  var b = fb(a) + 1, c = Rd(b);\n  c && gb(a, D, c, b);\n  return c;\n}, Td = a => \"]\" == a.slice(-1) && a.lastIndexOf(\"[\"), Ud = a => {\n  a -= 5120;\n  return 0 == a ? B : 1 == a ? D : 2 == a ? E : 4 == a ? G : 6 == a ? xa : 5 == a || 28922 == a || 28520 == a || 30779 == a || 30782 == a ? K : wa;\n}, Vd = a => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400), Wd = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Xd = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Yd = (a, b, c, d) => {\n  function e(p, r, u) {\n    for (p = \"number\" == typeof p ? p.toString() : p || \"\"; p.length < r;) {\n      p = u[0] + p;\n    }\n    return p;\n  }\n  function f(p, r) {\n    return e(p, r, \"0\");\n  }\n  function g(p, r) {\n    function u(z) {\n      return 0 > z ? -1 : 0 < z ? 1 : 0;\n    }\n    var y;\n    0 === (y = u(p.getFullYear() - r.getFullYear())) && 0 === (y = u(p.getMonth() - r.getMonth())) && (y = u(p.getDate() - r.getDate()));\n    return y;\n  }\n  function k(p) {\n    switch(p.getDay()) {\n      case 0:\n        return new Date(p.getFullYear() - 1, 11, 29);\n      case 1:\n        return p;\n      case 2:\n        return new Date(p.getFullYear(), 0, 3);\n      case 3:\n        return new Date(p.getFullYear(), 0, 2);\n      case 4:\n        return new Date(p.getFullYear(), 0, 1);\n      case 5:\n        return new Date(p.getFullYear() - 1, 11, 31);\n      case 6:\n        return new Date(p.getFullYear() - 1, 11, 30);\n    }\n  }\n  function m(p) {\n    var r = p.ca;\n    for (p = new Date((new Date(p.da + 1900, 0, 1)).getTime()); 0 < r;) {\n      var u = p.getMonth(), y = (Vd(p.getFullYear()) ? Wd : Xd)[u];\n      if (r > y - p.getDate()) {\n        r -= y - p.getDate() + 1, p.setDate(1), 11 > u ? p.setMonth(u + 1) : (p.setMonth(0), p.setFullYear(p.getFullYear() + 1));\n      } else {\n        p.setDate(p.getDate() + r);\n        break;\n      }\n    }\n    u = new Date(p.getFullYear() + 1, 0, 4);\n    r = k(new Date(p.getFullYear(), 0, 4));\n    u = k(u);\n    return 0 >= g(r, p) ? 0 >= g(u, p) ? p.getFullYear() + 1 : p.getFullYear() : p.getFullYear() - 1;\n  }\n  var n = K[d + 40 >> 2];\n  d = {jc:G[d >> 2], ic:G[d + 4 >> 2], Ha:G[d + 8 >> 2], Va:G[d + 12 >> 2], Ia:G[d + 16 >> 2], da:G[d + 20 >> 2], R:G[d + 24 >> 2], ca:G[d + 28 >> 2], Lc:G[d + 32 >> 2], hc:G[d + 36 >> 2], kc:n ? n ? L(D, n) : \"\" : \"\"};\n  c = c ? L(D, c) : \"\";\n  n = {\"%c\":\"%a %b %d %H:%M:%S %Y\", \"%D\":\"%m/%d/%y\", \"%F\":\"%Y-%m-%d\", \"%h\":\"%b\", \"%r\":\"%I:%M:%S %p\", \"%R\":\"%H:%M\", \"%T\":\"%H:%M:%S\", \"%x\":\"%m/%d/%y\", \"%X\":\"%H:%M:%S\", \"%Ec\":\"%c\", \"%EC\":\"%C\", \"%Ex\":\"%m/%d/%y\", \"%EX\":\"%H:%M:%S\", \"%Ey\":\"%y\", \"%EY\":\"%Y\", \"%Od\":\"%d\", \"%Oe\":\"%e\", \"%OH\":\"%H\", \"%OI\":\"%I\", \"%Om\":\"%m\", \"%OM\":\"%M\", \"%OS\":\"%S\", \"%Ou\":\"%u\", \"%OU\":\"%U\", \"%OV\":\"%V\", \"%Ow\":\"%w\", \"%OW\":\"%W\", \"%Oy\":\"%y\",};\n  for (var t in n) {\n    c = c.replace(new RegExp(t, \"g\"), n[t]);\n  }\n  var v = \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"), x = \"January February March April May June July August September October November December\".split(\" \");\n  n = {\"%a\":p => v[p.R].substring(0, 3), \"%A\":p => v[p.R], \"%b\":p => x[p.Ia].substring(0, 3), \"%B\":p => x[p.Ia], \"%C\":p => f((p.da + 1900) / 100 | 0, 2), \"%d\":p => f(p.Va, 2), \"%e\":p => e(p.Va, 2, \" \"), \"%g\":p => m(p).toString().substring(2), \"%G\":m, \"%H\":p => f(p.Ha, 2), \"%I\":p => {\n    p = p.Ha;\n    0 == p ? p = 12 : 12 < p && (p -= 12);\n    return f(p, 2);\n  }, \"%j\":p => {\n    for (var r = 0, u = 0; u <= p.Ia - 1; r += (Vd(p.da + 1900) ? Wd : Xd)[u++]) {\n    }\n    return f(p.Va + r, 3);\n  }, \"%m\":p => f(p.Ia + 1, 2), \"%M\":p => f(p.ic, 2), \"%n\":() => \"\\n\", \"%p\":p => 0 <= p.Ha && 12 > p.Ha ? \"AM\" : \"PM\", \"%S\":p => f(p.jc, 2), \"%t\":() => \"\\t\", \"%u\":p => p.R || 7, \"%U\":p => f(Math.floor((p.ca + 7 - p.R) / 7), 2), \"%V\":p => {\n    var r = Math.floor((p.ca + 7 - (p.R + 6) % 7) / 7);\n    2 >= (p.R + 371 - p.ca - 2) % 7 && r++;\n    if (r) {\n      53 == r && (u = (p.R + 371 - p.ca) % 7, 4 == u || 3 == u && Vd(p.da) || (r = 1));\n    } else {\n      r = 52;\n      var u = (p.R + 7 - p.ca - 1) % 7;\n      (4 == u || 5 == u && Vd(p.da % 400 - 1)) && r++;\n    }\n    return f(r, 2);\n  }, \"%w\":p => p.R, \"%W\":p => f(Math.floor((p.ca + 7 - (p.R + 6) % 7) / 7), 2), \"%y\":p => (p.da + 1900).toString().substring(2), \"%Y\":p => p.da + 1900, \"%z\":p => {\n    p = p.hc;\n    var r = 0 <= p;\n    p = Math.abs(p) / 60;\n    return (r ? \"+\" : \"-\") + String(\"0000\" + (p / 60 * 100 + p % 60)).slice(-4);\n  }, \"%Z\":p => p.kc, \"%%\":() => \"%\"};\n  c = c.replace(/%%/g, \"\\x00\\x00\");\n  for (t in n) {\n    c.includes(t) && (c = c.replace(new RegExp(t, \"g\"), n[t](d)));\n  }\n  c = c.replace(/\\0\\0/g, \"%\");\n  t = hb(c, !1);\n  if (t.length > b) {\n    return 0;\n  }\n  B.set(t, a);\n  return t.length - 1;\n};\n[44].forEach(a => {\n  sb[a] = new M(a);\n  sb[a].stack = \"<generic error, no stack>\";\n});\nzb = Array(4096);\nNb(N, \"/\");\nPb(\"/tmp\");\nPb(\"/home\");\nPb(\"/home/web_user\");\n(function() {\n  Pb(\"/dev\");\n  kb(259, {read:() => 0, write:(d, e, f, g) => g,});\n  Qb(\"/dev/null\", 259);\n  jb(1280, nb);\n  jb(1536, ob);\n  Qb(\"/dev/tty\", 1280);\n  Qb(\"/dev/tty1\", 1536);\n  var a = new Uint8Array(1024), b = 0, c = () => {\n    0 === b && (b = bb(a).byteLength);\n    return a[--b];\n  };\n  Wb(\"random\", c);\n  Wb(\"urandom\", c);\n  Pb(\"/dev/shm\");\n  Pb(\"/dev/shm/tmp\");\n})();\n(function() {\n  Pb(\"/proc\");\n  var a = Pb(\"/proc/self\");\n  Pb(\"/proc/self/fd\");\n  Nb({U() {\n    var b = rb(a, \"fd\", 16895, 73);\n    b.j = {la(c, d) {\n      var e = Kb(+d);\n      c = {parent:null, U:{kb:\"fake\"}, j:{ma:() => e.path},};\n      return c.parent = c;\n    }};\n    return b;\n  }}, \"/proc/self/fd\");\n})();\nP = l.BindingError = class extends Error {\n  constructor(a) {\n    super(a);\n    this.name = \"BindingError\";\n  }\n};\nO.push(0, 1, void 0, 1, null, 1, !0, 1, !1, 1,);\nl.count_emval_handles = () => O.length / 2 - 5 - $b.length;\ncc = l.PureVirtualError = bc(\"PureVirtualError\");\nfor (var Zd = Array(256), $d = 0; 256 > $d; ++$d) {\n  Zd[$d] = String.fromCharCode($d);\n}\ndc = Zd;\nl.getInheritedInstanceCount = () => Object.keys(hc).length;\nl.getLiveInheritedInstances = () => {\n  var a = [], b;\n  for (b in hc) {\n    hc.hasOwnProperty(b) && a.push(hc[b]);\n  }\n  return a;\n};\nl.flushPendingDeletes = fc;\nl.setDelayFunction = a => {\n  gc = a;\n  ec.length && gc && gc(fc);\n};\ntc = l.InternalError = class extends Error {\n  constructor(a) {\n    super(a);\n    this.name = \"InternalError\";\n  }\n};\nObject.assign(Dc.prototype, {isAliasOf:function(a) {\n  if (!(this instanceof Dc && a instanceof Dc)) {\n    return !1;\n  }\n  var b = this.g.u.i, c = this.g.o;\n  a.g = a.g;\n  var d = a.g.u.i;\n  for (a = a.g.o; b.B;) {\n    c = b.oa(c), b = b.B;\n  }\n  for (; d.B;) {\n    a = d.oa(a), d = d.B;\n  }\n  return b === d && c === a;\n}, clone:function() {\n  this.g.o || Cc(this);\n  if (this.g.ja) {\n    return this.g.count.value += 1, this;\n  }\n  var a = uc, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.g;\n  a = a(c.call(b, d, {g:{value:{count:e.count, ha:e.ha, ja:e.ja, o:e.o, u:e.u, F:e.F, J:e.J,},}}));\n  a.g.count.value += 1;\n  a.g.ha = !1;\n  return a;\n}, [\"delete\"]() {\n  this.g.o || Cc(this);\n  if (this.g.ha && !this.g.ja) {\n    throw new P(\"Object already scheduled for deletion\");\n  }\n  oc(this);\n  var a = this.g;\n  --a.count.value;\n  0 === a.count.value && (a.F ? a.J.O(a.F) : a.u.i.O(a.o));\n  this.g.ja || (this.g.F = void 0, this.g.o = void 0);\n}, isDeleted:function() {\n  return !this.g.o;\n}, deleteLater:function() {\n  this.g.o || Cc(this);\n  if (this.g.ha && !this.g.ja) {\n    throw new P(\"Object already scheduled for deletion\");\n  }\n  ec.push(this);\n  1 === ec.length && gc && gc(fc);\n  this.g.ha = !0;\n  return this;\n},});\nObject.assign(Nc.prototype, {Ob(a) {\n  this.qb && (a = this.qb(a));\n  return a;\n}, bb(a) {\n  this.O?.(a);\n}, argPackAdvance:8, readValueFromPointer:yc, fromWireType:function(a) {\n  function b() {\n    return this.wa ? vc(this.i.M, {u:this.ac, o:c, J:this, F:a,}) : vc(this.i.M, {u:this, o:a,});\n  }\n  var c = this.Ob(a);\n  if (!c) {\n    return this.bb(a), null;\n  }\n  var d = sc(this.i, c);\n  if (void 0 !== d) {\n    if (0 === d.g.count.value) {\n      return d.g.o = c, d.g.F = a, d.clone();\n    }\n    d = d.clone();\n    this.bb(a);\n    return d;\n  }\n  d = this.i.Nb(c);\n  d = rc[d];\n  if (!d) {\n    return b.call(this);\n  }\n  d = this.va ? d.Gb : d.pointerType;\n  var e = qc(c, this.i, d.i);\n  return null === e ? b.call(this) : this.wa ? vc(d.i.M, {u:d, o:e, J:this, F:a,}) : vc(d.i.M, {u:d, o:e,});\n},});\nUc = l.UnboundTypeError = bc(\"UnboundTypeError\");\nfor (var W, ae = 0; 32 > ae; ++ae) {\n  Od.push(Array(ae));\n}\nvar be = {__syscall_fcntl64:function(a, b, c) {\n  Wa = c;\n  try {\n    var d = Kb(a);\n    switch(b) {\n      case 0:\n        var e = Va();\n        if (0 > e) {\n          break;\n        }\n        for (; xb[e];) {\n          e++;\n        }\n        return Mb(d, e).W;\n      case 1:\n      case 2:\n        return 0;\n      case 3:\n        return d.flags;\n      case 4:\n        return e = Va(), d.flags |= e, 0;\n      case 12:\n        return e = Va(), E[e + 0 >> 1] = 2, 0;\n      case 13:\n      case 14:\n        return 0;\n    }\n    return -28;\n  } catch (f) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== f.name) {\n      throw f;\n    }\n    return -f.$;\n  }\n}, __syscall_ioctl:function(a, b, c) {\n  Wa = c;\n  try {\n    var d = Kb(a);\n    switch(b) {\n      case 21509:\n        return d.s ? 0 : -59;\n      case 21505:\n        if (!d.s) {\n          return -59;\n        }\n        if (d.s.V.Vb) {\n          a = [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,];\n          var e = Va();\n          G[e >> 2] = 25856;\n          G[e + 4 >> 2] = 5;\n          G[e + 8 >> 2] = 191;\n          G[e + 12 >> 2] = 35387;\n          for (var f = 0; 32 > f; f++) {\n            B[e + f + 17] = a[f] || 0;\n          }\n        }\n        return 0;\n      case 21510:\n      case 21511:\n      case 21512:\n        return d.s ? 0 : -59;\n      case 21506:\n      case 21507:\n      case 21508:\n        if (!d.s) {\n          return -59;\n        }\n        if (d.s.V.Wb) {\n          for (e = Va(), a = [], f = 0; 32 > f; f++) {\n            a.push(B[e + f + 17]);\n          }\n        }\n        return 0;\n      case 21519:\n        if (!d.s) {\n          return -59;\n        }\n        e = Va();\n        return G[e >> 2] = 0;\n      case 21520:\n        return d.s ? -28 : -59;\n      case 21531:\n        e = Va();\n        if (!d.m.Ub) {\n          throw new M(59);\n        }\n        return d.m.Ub(d, b, e);\n      case 21523:\n        if (!d.s) {\n          return -59;\n        }\n        d.s.V.Xb && (f = [24, 80], e = Va(), E[e >> 1] = f[0], E[e + 2 >> 1] = f[1]);\n        return 0;\n      case 21524:\n        return d.s ? 0 : -59;\n      case 21515:\n        return d.s ? 0 : -59;\n      default:\n        return -28;\n    }\n  } catch (g) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== g.name) {\n      throw g;\n    }\n    return -g.$;\n  }\n}, __syscall_openat:function(a, b, c, d) {\n  Wa = d;\n  try {\n    b = b ? L(D, b) : \"\";\n    var e = b;\n    if (\"/\" === e.charAt(0)) {\n      b = e;\n    } else {\n      var f = -100 === a ? \"/\" : Kb(a).path;\n      if (0 == e.length) {\n        throw new M(44);\n      }\n      b = Ya(f + \"/\" + e);\n    }\n    var g = d ? Va() : 0;\n    return Sb(b, c, g).W;\n  } catch (k) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== k.name) {\n      throw k;\n    }\n    return -k.$;\n  }\n}, _abort_js:() => {\n  Ha(\"\");\n}, _embind_create_inheriting_constructor:(a, b, c) => {\n  a = R(a);\n  b = nc(b, \"wrapper\");\n  c = Q(c);\n  var d = b.i, e = d.M, f = d.B.M, g = d.B.constructor;\n  a = Zb(a, function(...k) {\n    d.B.ob.forEach(function(m) {\n      if (this[m] === f[m]) {\n        throw new cc(`Pure virtual function ${m} must be implemented in JavaScript`);\n      }\n    }.bind(this));\n    Object.defineProperty(this, \"__parent\", {value:e});\n    this.__construct(...k);\n  });\n  e.__construct = function(...k) {\n    if (this === e) {\n      throw new P(\"Pass correct 'this' to __construct\");\n    }\n    k = g.implement(this, ...k);\n    oc(k);\n    var m = k.g;\n    k.notifyOnDestruction();\n    m.ja = !0;\n    Object.defineProperties(this, {g:{value:m}});\n    uc(this);\n    k = m.o;\n    k = ic(d, k);\n    if (hc.hasOwnProperty(k)) {\n      throw new P(`Tried to register registered instance: ${k}`);\n    }\n    hc[k] = this;\n  };\n  e.__destruct = function() {\n    if (this === e) {\n      throw new P(\"Pass correct 'this' to __destruct\");\n    }\n    oc(this);\n    var k = this.g.o;\n    k = ic(d, k);\n    if (hc.hasOwnProperty(k)) {\n      delete hc[k];\n    } else {\n      throw new P(`Tried to unregister unregistered instance: ${k}`);\n    }\n  };\n  a.prototype = Object.create(e);\n  Object.assign(a.prototype, c);\n  return ac(a);\n}, _embind_finalize_value_object:a => {\n  var b = wc[a];\n  delete wc[a];\n  var c = b.Ta, d = b.O, e = b.eb, f = e.map(g => g.Rb).concat(e.map(g => g.dc));\n  T([a], f, g => {\n    var k = {};\n    e.forEach((m, n) => {\n      var t = g[n], v = m.Pb, x = m.Qb, p = g[n + e.length], r = m.cc, u = m.ec;\n      k[m.Lb] = {read:y => t.fromWireType(v(x, y)), write:(y, z) => {\n        var C = [];\n        r(u, y, p.toWireType(C, z));\n        xc(C);\n      }};\n    });\n    return [{name:b.name, fromWireType:m => {\n      var n = {}, t;\n      for (t in k) {\n        n[t] = k[t].read(m);\n      }\n      d(m);\n      return n;\n    }, toWireType:(m, n) => {\n      for (var t in k) {\n        if (!(t in n)) {\n          throw new TypeError(`Missing field: \"${t}\"`);\n        }\n      }\n      var v = c();\n      for (t in k) {\n        k[t].write(v, n[t]);\n      }\n      null !== m && m.push(d, v);\n      return v;\n    }, argPackAdvance:8, readValueFromPointer:yc, L:d,}];\n  });\n}, _embind_register_bigint:() => {\n}, _embind_register_bool:(a, b, c, d) => {\n  b = R(b);\n  S(a, {name:b, fromWireType:function(e) {\n    return !!e;\n  }, toWireType:function(e, f) {\n    return f ? c : d;\n  }, argPackAdvance:8, readValueFromPointer:function(e) {\n    return this.fromWireType(D[e]);\n  }, L:null,});\n}, _embind_register_class:(a, b, c, d, e, f, g, k, m, n, t, v, x) => {\n  t = R(t);\n  f = U(e, f);\n  k &&= U(g, k);\n  n &&= U(m, n);\n  x = U(v, x);\n  var p = Gc(t);\n  Fc(p, function() {\n    Vc(`Cannot construct ${t} due to unbound types`, [d]);\n  });\n  T([a, b, c], d ? [d] : [], r => {\n    r = r[0];\n    if (d) {\n      var u = r.i;\n      var y = u.M;\n    } else {\n      y = Dc.prototype;\n    }\n    r = Zb(t, function(...I) {\n      if (Object.getPrototypeOf(this) !== z) {\n        throw new P(\"Use 'new' to construct \" + t);\n      }\n      if (void 0 === C.Z) {\n        throw new P(t + \" has no accessible constructor\");\n      }\n      var J = C.Z[I.length];\n      if (void 0 === J) {\n        throw new P(`Tried to invoke ctor of ${t} with invalid number of parameters (${I.length}) - expected (${Object.keys(C.Z).toString()}) parameters instead!`);\n      }\n      return J.apply(this, I);\n    });\n    var z = Object.create(y, {constructor:{value:r},});\n    r.prototype = z;\n    var C = new Hc(t, r, z, x, u, f, k, n);\n    if (C.B) {\n      var F;\n      (F = C.B).pa ?? (F.pa = []);\n      C.B.pa.push(C);\n    }\n    u = new Nc(t, C, !0, !1, !1);\n    F = new Nc(t + \"*\", C, !1, !1, !1);\n    y = new Nc(t + \" const*\", C, !1, !0, !1);\n    rc[a] = {pointerType:F, Gb:y};\n    Oc(p, r);\n    return [u, F, y];\n  });\n}, _embind_register_class_class_function:(a, b, c, d, e, f, g) => {\n  var k = Yc(c, d);\n  b = R(b);\n  b = Zc(b);\n  f = U(e, f);\n  T([], [a], m => {\n    function n() {\n      Vc(`Cannot call ${t} due to unbound types`, k);\n    }\n    m = m[0];\n    var t = `${m.name}.${b}`;\n    b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n    var v = m.i.constructor;\n    void 0 === v[b] ? (n.ga = c - 1, v[b] = n) : (Ec(v, b, t), v[b].A[c - 1] = n);\n    T([], k, x => {\n      x = Xc(t, [x[0], null].concat(x.slice(1)), null, f, g);\n      void 0 === v[b].A ? (x.ga = c - 1, v[b] = x) : v[b].A[c - 1] = x;\n      if (m.i.pa) {\n        for (const p of m.i.pa) {\n          p.constructor.hasOwnProperty(b) || (p.constructor[b] = x);\n        }\n      }\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_class_property:(a, b, c, d, e, f, g, k) => {\n  b = R(b);\n  f = U(e, f);\n  T([], [a], m => {\n    m = m[0];\n    var n = `${m.name}.${b}`, t = {get() {\n      Vc(`Cannot access ${n} due to unbound types`, [c]);\n    }, enumerable:!0, configurable:!0};\n    t.set = k ? () => {\n      Vc(`Cannot access ${n} due to unbound types`, [c]);\n    } : () => {\n      throw new P(`${n} is a read-only property`);\n    };\n    Object.defineProperty(m.i.constructor, b, t);\n    T([], [c], v => {\n      v = v[0];\n      var x = {get() {\n        return v.fromWireType(f(d));\n      }, enumerable:!0};\n      k && (k = U(g, k), x.set = p => {\n        var r = [];\n        k(d, v.toWireType(r, p));\n        xc(r);\n      });\n      Object.defineProperty(m.i.constructor, b, x);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_constructor:(a, b, c, d, e, f) => {\n  var g = Yc(b, c);\n  e = U(d, e);\n  T([], [a], k => {\n    k = k[0];\n    var m = `constructor ${k.name}`;\n    void 0 === k.i.Z && (k.i.Z = []);\n    if (void 0 !== k.i.Z[b - 1]) {\n      throw new P(`Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${k.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n    }\n    k.i.Z[b - 1] = () => {\n      Vc(`Cannot construct ${k.name} due to unbound types`, g);\n    };\n    T([], g, n => {\n      n.splice(1, 0, null);\n      k.i.Z[b - 1] = Xc(m, n, null, e, f);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_function:(a, b, c, d, e, f, g, k) => {\n  var m = Yc(c, d);\n  b = R(b);\n  b = Zc(b);\n  f = U(e, f);\n  T([], [a], n => {\n    function t() {\n      Vc(`Cannot call ${v} due to unbound types`, m);\n    }\n    n = n[0];\n    var v = `${n.name}.${b}`;\n    b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n    k && n.i.ob.push(b);\n    var x = n.i.M, p = x[b];\n    void 0 === p || void 0 === p.A && p.className !== n.name && p.ga === c - 2 ? (t.ga = c - 2, t.className = n.name, x[b] = t) : (Ec(x, b, v), x[b].A[c - 2] = t);\n    T([], m, r => {\n      r = Xc(v, r, n, f, g);\n      void 0 === x[b].A ? (r.ga = c - 2, x[b] = r) : x[b].A[c - 2] = r;\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_property:(a, b, c, d, e, f, g, k, m, n) => {\n  b = R(b);\n  e = U(d, e);\n  T([], [a], t => {\n    t = t[0];\n    var v = `${t.name}.${b}`, x = {get() {\n      Vc(`Cannot access ${v} due to unbound types`, [c, g]);\n    }, enumerable:!0, configurable:!0};\n    x.set = m ? () => Vc(`Cannot access ${v} due to unbound types`, [c, g]) : () => {\n      throw new P(v + \" is a read-only property\");\n    };\n    Object.defineProperty(t.i.M, b, x);\n    T([], m ? [c, g] : [c], p => {\n      var r = p[0], u = {get() {\n        var z = $c(this, t, v + \" getter\");\n        return r.fromWireType(e(f, z));\n      }, enumerable:!0};\n      if (m) {\n        m = U(k, m);\n        var y = p[1];\n        u.set = function(z) {\n          var C = $c(this, t, v + \" setter\"), F = [];\n          m(n, C, y.toWireType(F, z));\n          xc(F);\n        };\n      }\n      Object.defineProperty(t.i.M, b, u);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_emval:a => S(a, bd), _embind_register_enum:(a, b, c, d) => {\n  function e() {\n  }\n  b = R(b);\n  e.values = {};\n  S(a, {name:b, constructor:e, fromWireType:function(f) {\n    return this.constructor.values[f];\n  }, toWireType:(f, g) => g.value, argPackAdvance:8, readValueFromPointer:cd(b, c, d), L:null,});\n  Fc(b, e);\n}, _embind_register_enum_value:(a, b, c) => {\n  var d = nc(a, \"enum\");\n  b = R(b);\n  a = d.constructor;\n  d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:Zb(`${d.name}_${b}`, function() {\n  })},});\n  a.values[c] = d;\n  a[b] = d;\n}, _embind_register_float:(a, b, c) => {\n  b = R(b);\n  S(a, {name:b, fromWireType:d => d, toWireType:(d, e) => e, argPackAdvance:8, readValueFromPointer:dd(b, c), L:null,});\n}, _embind_register_function:(a, b, c, d, e, f) => {\n  var g = Yc(b, c);\n  a = R(a);\n  a = Zc(a);\n  e = U(d, e);\n  Fc(a, function() {\n    Vc(`Cannot call ${a} due to unbound types`, g);\n  }, b - 1);\n  T([], g, k => {\n    Oc(a, Xc(a, [k[0], null].concat(k.slice(1)), null, e, f), b - 1);\n    return [];\n  });\n}, _embind_register_integer:(a, b, c, d, e) => {\n  b = R(b);\n  -1 === e && (e = 4294967295);\n  e = k => k;\n  if (0 === d) {\n    var f = 32 - 8 * c;\n    e = k => k << f >>> f;\n  }\n  var g = b.includes(\"unsigned\") ? function(k, m) {\n    return m >>> 0;\n  } : function(k, m) {\n    return m;\n  };\n  S(a, {name:b, fromWireType:e, toWireType:g, argPackAdvance:8, readValueFromPointer:ed(b, c, 0 !== d), L:null,});\n}, _embind_register_memory_view:(a, b, c) => {\n  function d(f) {\n    return new e(B.buffer, K[f + 4 >> 2], K[f >> 2]);\n  }\n  var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array,][b];\n  c = R(c);\n  S(a, {name:c, fromWireType:d, argPackAdvance:8, readValueFromPointer:d,}, {Sb:!0,});\n}, _embind_register_std_string:(a, b) => {\n  b = R(b);\n  var c = \"std::string\" === b;\n  S(a, {name:b, fromWireType:function(d) {\n    var e = K[d >> 2], f = d + 4;\n    if (c) {\n      for (var g = f, k = 0; k <= e; ++k) {\n        var m = f + k;\n        if (k == e || 0 == D[m]) {\n          g = g ? L(D, g, m - g) : \"\";\n          if (void 0 === n) {\n            var n = g;\n          } else {\n            n += String.fromCharCode(0), n += g;\n          }\n          g = m + 1;\n        }\n      }\n    } else {\n      n = Array(e);\n      for (k = 0; k < e; ++k) {\n        n[k] = String.fromCharCode(D[f + k]);\n      }\n      n = n.join(\"\");\n    }\n    lc(d);\n    return n;\n  }, toWireType:function(d, e) {\n    e instanceof ArrayBuffer && (e = new Uint8Array(e));\n    var f = \"string\" == typeof e;\n    if (!(f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array)) {\n      throw new P(\"Cannot pass non-string to std::string\");\n    }\n    var g = c && f ? fb(e) : e.length;\n    var k = Rd(4 + g + 1), m = k + 4;\n    K[k >> 2] = g;\n    if (c && f) {\n      gb(e, D, m, g + 1);\n    } else {\n      if (f) {\n        for (f = 0; f < g; ++f) {\n          var n = e.charCodeAt(f);\n          if (255 < n) {\n            throw lc(m), new P(\"String has UTF-16 code units that do not fit in 8 bits\");\n          }\n          D[m + f] = n;\n        }\n      } else {\n        for (f = 0; f < g; ++f) {\n          D[m + f] = e[f];\n        }\n      }\n    }\n    null !== d && d.push(lc, k);\n    return k;\n  }, argPackAdvance:8, readValueFromPointer:yc, L(d) {\n    lc(d);\n  },});\n}, _embind_register_std_wstring:(a, b, c) => {\n  c = R(c);\n  if (2 === b) {\n    var d = gd;\n    var e = hd;\n    var f = jd;\n    var g = k => wa[k >> 1];\n  } else {\n    4 === b && (d = kd, e = ld, f = md, g = k => K[k >> 2]);\n  }\n  S(a, {name:c, fromWireType:k => {\n    for (var m = K[k >> 2], n, t = k + 4, v = 0; v <= m; ++v) {\n      var x = k + 4 + v * b;\n      if (v == m || 0 == g(x)) {\n        t = d(t, x - t), void 0 === n ? n = t : (n += String.fromCharCode(0), n += t), t = x + b;\n      }\n    }\n    lc(k);\n    return n;\n  }, toWireType:(k, m) => {\n    if (\"string\" != typeof m) {\n      throw new P(`Cannot pass non-string to C++ string type ${c}`);\n    }\n    var n = f(m), t = Rd(4 + n + b);\n    K[t >> 2] = n / b;\n    e(m, t + 4, n + b);\n    null !== k && k.push(lc, t);\n    return t;\n  }, argPackAdvance:8, readValueFromPointer:yc, L(k) {\n    lc(k);\n  }});\n}, _embind_register_value_object:(a, b, c, d, e, f) => {\n  wc[a] = {name:R(b), Ta:U(c, d), O:U(e, f), eb:[],};\n}, _embind_register_value_object_field:(a, b, c, d, e, f, g, k, m, n) => {\n  wc[a].eb.push({Lb:R(b), Rb:c, Pb:U(d, e), Qb:f, dc:g, cc:U(k, m), ec:n,});\n}, _embind_register_void:(a, b) => {\n  b = R(b);\n  S(a, {Dc:!0, name:b, argPackAdvance:0, fromWireType:() => {\n  }, toWireType:() => {\n  },});\n}, _emscripten_get_now_is_monotonic:() => 1, _emscripten_memcpy_js:(a, b, c) => D.copyWithin(a, b, b + c), _emval_as:(a, b, c) => {\n  a = Q(a);\n  b = nc(b, \"emval::as\");\n  return nd(b, c, a);\n}, _emval_call_method:(a, b, c, d, e) => {\n  a = qd[a];\n  b = Q(b);\n  c = pd(c);\n  return a(b, b[c], d, e);\n}, _emval_decref:ad, _emval_get_method_caller:(a, b, c) => {\n  var d = sd(a, b), e = d.shift();\n  a--;\n  var f = Array(a);\n  b = `methodCaller<(${d.map(g => g.name).join(\", \")}) => ${e.name}>`;\n  return rd(Zb(b, (g, k, m, n) => {\n    for (var t = 0, v = 0; v < a; ++v) {\n      f[v] = d[v].readValueFromPointer(n + t), t += d[v].argPackAdvance;\n    }\n    g = 1 === c ? td(k, f) : k.apply(g, f);\n    return nd(e, m, g);\n  }));\n}, _emval_get_property:(a, b) => {\n  a = Q(a);\n  b = Q(b);\n  return ac(a[b]);\n}, _emval_incref:a => {\n  9 < a && (O[a + 1] += 1);\n}, _emval_new_array:() => ac([]), _emval_new_cstring:a => ac(pd(a)), _emval_new_object:() => ac({}), _emval_run_destructors:a => {\n  var b = Q(a);\n  xc(b);\n  ad(a);\n}, _emval_set_property:(a, b, c) => {\n  a = Q(a);\n  b = Q(b);\n  c = Q(c);\n  a[b] = c;\n}, _emval_take_value:(a, b) => {\n  a = nc(a, \"_emval_take_value\");\n  a = a.readValueFromPointer(b);\n  return ac(a);\n}, beginPixelLocalStorageWEBGL:function(a, b, c) {\n  (a = w[a].C.ba) && a.beginPixelLocalStorageWEBGL(l.HEAPU32.subarray(c, c + b));\n}, decode_image:function(a, b, c) {\n  var d = l.images;\n  d || (d = new Map(), l.images = d);\n  var e = new Image();\n  d.set(a, e);\n  b = l.HEAP8.subarray(b, b + c);\n  c = new Uint8Array(c);\n  c.set(b);\n  e.src = URL.createObjectURL(new Blob([c], {type:\"image/png\"}));\n  e.onload = function() {\n    l._setWebImage(a, e.width, e.height);\n  };\n}, delete_image:function(a) {\n  var b = l.images;\n  b && b.get(a) && b.delete(a);\n}, emscripten_asm_const_int:(a, b, c) => {\n  ud.length = 0;\n  for (var d; d = D[b++];) {\n    var e = 105 != d;\n    e &= 112 != d;\n    c += e && c % 8 ? 4 : 0;\n    ud.push(112 == d ? K[c >> 2] : 105 == d ? G[c >> 2] : ya[c >> 3]);\n    c += e ? 8 : 4;\n  }\n  return Ta[a](...ud);\n}, emscripten_date_now:() => Date.now(), emscripten_get_now:() => performance.now(), emscripten_resize_heap:a => {\n  var b = D.length;\n  a >>>= 0;\n  if (2147483648 < a) {\n    return !1;\n  }\n  for (var c = 1; 4 >= c; c *= 2) {\n    var d = b * (1 + 0.2 / c);\n    d = Math.min(d, a + 100663296);\n    var e = Math;\n    d = Math.max(a, d);\n    a: {\n      e = (e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - ua.buffer.byteLength + 65535) / 65536;\n      try {\n        ua.grow(e);\n        za();\n        var f = 1;\n        break a;\n      } catch (g) {\n      }\n      f = void 0;\n    }\n    if (f) {\n      return !0;\n    }\n  }\n  return !1;\n}, emscripten_webgl_enable_extension:(a, b) => {\n  a = w[a];\n  b = b ? L(D, b) : \"\";\n  b.startsWith(\"GL_\") && (b = b.substr(3));\n  \"WEBGL_draw_instanced_base_vertex_base_instance\" == b && vd(W);\n  \"WEBGL_multi_draw_instanced_base_vertex_base_instance\" == b && wd(W);\n  \"WEBGL_multi_draw\" == b && (W.Zb = W.getExtension(\"WEBGL_multi_draw\"));\n  return !!a.C.getExtension(b);\n}, emscripten_webgl_get_current_context:() => q ? q.handle : 0, emscripten_webgl_make_context_current:a => la(a) ? 0 : -5, enable_WEBGL_provoking_vertex:function(a) {\n  a = w[a].C;\n  a.pb = a.getExtension(\"WEBGL_provoking_vertex\");\n  return !!a.pb;\n}, enable_WEBGL_shader_pixel_local_storage_coherent:function(a) {\n  a = w[a].C;\n  a.ba = a.getExtension(\"WEBGL_shader_pixel_local_storage\");\n  return !(!a.ba || !a.ba.isCoherent());\n}, endPixelLocalStorageWEBGL:function(a, b, c) {\n  (a = w[a].C.ba) && a.endPixelLocalStorageWEBGL(l.HEAPU32.subarray(c, c + b));\n}, environ_get:(a, b) => {\n  var c = 0;\n  Nd().forEach((d, e) => {\n    var f = b + c;\n    e = K[a + 4 * e >> 2] = f;\n    for (f = 0; f < d.length; ++f) {\n      B[e++] = d.charCodeAt(f);\n    }\n    B[e] = 0;\n    c += d.length + 1;\n  });\n  return 0;\n}, environ_sizes_get:(a, b) => {\n  var c = Nd();\n  K[a >> 2] = c.length;\n  var d = 0;\n  c.forEach(e => d += e.length + 1);\n  K[b >> 2] = d;\n  return 0;\n}, fd_close:function(a) {\n  try {\n    var b = Kb(a);\n    if (null === b.W) {\n      throw new M(8);\n    }\n    b.Qa && (b.Qa = null);\n    try {\n      b.m.close && b.m.close(b);\n    } catch (c) {\n      throw c;\n    } finally {\n      xb[b.W] = null;\n    }\n    b.W = null;\n    return 0;\n  } catch (c) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== c.name) {\n      throw c;\n    }\n    return c.$;\n  }\n}, fd_read:function(a, b, c, d) {\n  try {\n    a: {\n      var e = Kb(a);\n      a = b;\n      for (var f, g = b = 0; g < c; g++) {\n        var k = K[a >> 2], m = K[a + 4 >> 2];\n        a += 8;\n        var n = e, t = f, v = B;\n        if (0 > m || 0 > t) {\n          throw new M(28);\n        }\n        if (null === n.W) {\n          throw new M(8);\n        }\n        if (1 === (n.flags & 2097155)) {\n          throw new M(8);\n        }\n        if (16384 === (n.node.mode & 61440)) {\n          throw new M(31);\n        }\n        if (!n.m.read) {\n          throw new M(28);\n        }\n        var x = \"undefined\" != typeof t;\n        if (!x) {\n          t = n.position;\n        } else if (!n.seekable) {\n          throw new M(70);\n        }\n        var p = n.m.read(n, v, k, m, t);\n        x || (n.position += p);\n        var r = p;\n        if (0 > r) {\n          var u = -1;\n          break a;\n        }\n        b += r;\n        if (r < m) {\n          break;\n        }\n        \"undefined\" != typeof f && (f += r);\n      }\n      u = b;\n    }\n    K[d >> 2] = u;\n    return 0;\n  } catch (y) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== y.name) {\n      throw y;\n    }\n    return y.$;\n  }\n}, fd_seek:function(a, b, c, d, e) {\n  b = c + 2097152 >>> 0 < 4194305 - !!b ? (b >>> 0) + 4294967296 * c : NaN;\n  try {\n    if (isNaN(b)) {\n      return 61;\n    }\n    var f = Kb(a);\n    Ub(f, b, d);\n    Pa = [f.position >>> 0, (Oa = f.position, 1.0 <= +Math.abs(Oa) ? 0.0 < Oa ? +Math.floor(Oa / 4294967296.0) >>> 0 : ~~+Math.ceil((Oa - +(~~Oa >>> 0)) / 4294967296.0) >>> 0 : 0)];\n    G[e >> 2] = Pa[0];\n    G[e + 4 >> 2] = Pa[1];\n    f.Qa && 0 === b && 0 === d && (f.Qa = null);\n    return 0;\n  } catch (g) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== g.name) {\n      throw g;\n    }\n    return g.$;\n  }\n}, fd_write:function(a, b, c, d) {\n  try {\n    a: {\n      var e = Kb(a);\n      a = b;\n      for (var f, g = b = 0; g < c; g++) {\n        var k = K[a >> 2], m = K[a + 4 >> 2];\n        a += 8;\n        var n = e, t = k, v = m, x = f, p = B;\n        if (0 > v || 0 > x) {\n          throw new M(28);\n        }\n        if (null === n.W) {\n          throw new M(8);\n        }\n        if (0 === (n.flags & 2097155)) {\n          throw new M(8);\n        }\n        if (16384 === (n.node.mode & 61440)) {\n          throw new M(31);\n        }\n        if (!n.m.write) {\n          throw new M(28);\n        }\n        n.seekable && n.flags & 1024 && Ub(n, 0, 2);\n        var r = \"undefined\" != typeof x;\n        if (!r) {\n          x = n.position;\n        } else if (!n.seekable) {\n          throw new M(70);\n        }\n        var u = n.m.write(n, p, t, v, x, void 0);\n        r || (n.position += u);\n        var y = u;\n        if (0 > y) {\n          var z = -1;\n          break a;\n        }\n        b += y;\n        \"undefined\" != typeof f && (f += y);\n      }\n      z = b;\n    }\n    K[d >> 2] = z;\n    return 0;\n  } catch (C) {\n    if (\"undefined\" == typeof Yb || \"ErrnoError\" !== C.name) {\n      throw C;\n    }\n    return C.$;\n  }\n}, framebufferPixelLocalClearValuefvWEBGL:function(a, b, c, d, e, f) {\n  (a = w[a].C.ba) && a.framebufferPixelLocalClearValuefvWEBGL(b, [c, d, e, f]);\n}, framebufferTexturePixelLocalStorageWEBGL:function(a, b, c, d, e) {\n  (a = w[a].C.ba) && a.framebufferTexturePixelLocalStorageWEBGL(b, Cd[c], d, e);\n}, getFramebufferPixelLocalStorageParameterivWEBGL:function(a, b, c) {\n  return (a = w[a].C.ba) ? a.getFramebufferPixelLocalStorageParameterWEBGL(b, c) : 0;\n}, glActiveTexture:a => W.activeTexture(a), glAttachShader:(a, b) => {\n  W.attachShader(V[a], Dd[b]);\n}, glBindBuffer:(a, b) => {\n  35051 == a ? W.Na = b : 35052 == a && (W.Oa = b);\n  W.bindBuffer(a, zd[b]);\n}, glBindBufferRange:(a, b, c, d, e) => {\n  W.bindBufferRange(a, b, zd[c], d, e);\n}, glBindFramebuffer:(a, b) => {\n  W.bindFramebuffer(a, Ad[b]);\n}, glBindRenderbuffer:(a, b) => {\n  W.bindRenderbuffer(a, Bd[b]);\n}, glBindTexture:(a, b) => {\n  W.bindTexture(a, Cd[b]);\n}, glBindVertexArray:a => {\n  W.bindVertexArray(Ed[a]);\n}, glBlendEquation:a => W.blendEquation(a), glBlendFunc:(a, b) => W.blendFunc(a, b), glBlitFramebuffer:(a, b, c, d, e, f, g, k, m, n) => W.blitFramebuffer(a, b, c, d, e, f, g, k, m, n), glBufferData:(a, b, c, d) => {\n  c && b ? W.bufferData(a, D, d, c, b) : W.bufferData(a, b, d);\n}, glBufferSubData:(a, b, c, d) => {\n  c && W.bufferSubData(a, b, D, d, c);\n}, glClear:a => W.clear(a), glClearBufferfv:(a, b, c) => {\n  W.clearBufferfv(a, b, xa, c >> 2);\n}, glClearBufferuiv:(a, b, c) => {\n  W.clearBufferuiv(a, b, K, c >> 2);\n}, glClearColor:(a, b, c, d) => W.clearColor(a, b, c, d), glClearDepthf:a => W.clearDepth(a), glClearStencil:a => W.clearStencil(a), glColorMask:(a, b, c, d) => {\n  W.colorMask(!!a, !!b, !!c, !!d);\n}, glCompileShader:a => {\n  W.compileShader(Dd[a]);\n}, glCreateProgram:() => {\n  var a = Id(V), b = W.createProgram();\n  b.name = a;\n  b.za = b.xa = b.ya = 0;\n  b.Wa = 1;\n  V[a] = b;\n  return a;\n}, glCreateShader:a => {\n  var b = Id(Dd);\n  Dd[b] = W.createShader(a);\n  return b;\n}, glCullFace:a => W.cullFace(a), glDeleteBuffers:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = G[b + 4 * c >> 2], e = zd[d];\n    e && (W.deleteBuffer(e), e.name = 0, zd[d] = null, d == W.Na && (W.Na = 0), d == W.Oa && (W.Oa = 0));\n  }\n}, glDeleteFramebuffers:(a, b) => {\n  for (var c = 0; c < a; ++c) {\n    var d = G[b + 4 * c >> 2], e = Ad[d];\n    e && (W.deleteFramebuffer(e), e.name = 0, Ad[d] = null);\n  }\n}, glDeleteProgram:a => {\n  if (a) {\n    var b = V[a];\n    b ? (W.deleteProgram(b), b.name = 0, V[a] = null) : X ||= 1281;\n  }\n}, glDeleteRenderbuffers:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = G[b + 4 * c >> 2], e = Bd[d];\n    e && (W.deleteRenderbuffer(e), e.name = 0, Bd[d] = null);\n  }\n}, glDeleteShader:a => {\n  if (a) {\n    var b = Dd[a];\n    b ? (W.deleteShader(b), Dd[a] = null) : X ||= 1281;\n  }\n}, glDeleteTextures:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = G[b + 4 * c >> 2], e = Cd[d];\n    e && (W.deleteTexture(e), e.name = 0, Cd[d] = null);\n  }\n}, glDeleteVertexArrays:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = G[b + 4 * c >> 2];\n    W.deleteVertexArray(Ed[d]);\n    Ed[d] = null;\n  }\n}, glDepthFunc:a => W.depthFunc(a), glDepthMask:a => {\n  W.depthMask(!!a);\n}, glDepthRangef:(a, b) => W.depthRange(a, b), glDisable:a => W.disable(a), glDrawArrays:(a, b, c) => {\n  W.drawArrays(a, b, c);\n}, glDrawArraysInstanced:(a, b, c, d) => {\n  W.drawArraysInstanced(a, b, c, d);\n}, glDrawBuffers:(a, b) => {\n  for (var c = Od[a], d = 0; d < a; d++) {\n    c[d] = G[b + 4 * d >> 2];\n  }\n  W.drawBuffers(c);\n}, glDrawElements:(a, b, c, d) => {\n  W.drawElements(a, b, c, d);\n}, glDrawElementsInstanced:(a, b, c, d, e) => {\n  W.drawElementsInstanced(a, b, c, d, e);\n}, glEnable:a => W.enable(a), glEnableVertexAttribArray:a => {\n  W.enableVertexAttribArray(a);\n}, glFlush:() => W.flush(), glFramebufferRenderbuffer:(a, b, c, d) => {\n  W.framebufferRenderbuffer(a, b, c, Bd[d]);\n}, glFramebufferTexture2D:(a, b, c, d, e) => {\n  W.framebufferTexture2D(a, b, c, Cd[d], e);\n}, glFrontFace:a => W.frontFace(a), glGenBuffers:(a, b) => {\n  Jd(a, b, \"createBuffer\", zd);\n}, glGenFramebuffers:(a, b) => {\n  Jd(a, b, \"createFramebuffer\", Ad);\n}, glGenRenderbuffers:(a, b) => {\n  Jd(a, b, \"createRenderbuffer\", Bd);\n}, glGenTextures:(a, b) => {\n  Jd(a, b, \"createTexture\", Cd);\n}, glGenVertexArrays:(a, b) => {\n  Jd(a, b, \"createVertexArray\", Ed);\n}, glGenerateMipmap:a => W.generateMipmap(a), glGetError:() => {\n  var a = W.getError() || X;\n  X = 0;\n  return a;\n}, glGetIntegerv:(a, b) => Qd(a, b), glGetProgramiv:(a, b, c) => {\n  if (c) {\n    if (a >= yd) {\n      X ||= 1281;\n    } else {\n      if (a = V[a], 35716 == b) {\n        a = W.getProgramInfoLog(a), null === a && (a = \"(unknown error)\"), G[c >> 2] = a.length + 1;\n      } else if (35719 == b) {\n        if (!a.za) {\n          for (b = 0; b < W.getProgramParameter(a, 35718); ++b) {\n            a.za = Math.max(a.za, W.getActiveUniform(a, b).name.length + 1);\n          }\n        }\n        G[c >> 2] = a.za;\n      } else if (35722 == b) {\n        if (!a.xa) {\n          for (b = 0; b < W.getProgramParameter(a, 35721); ++b) {\n            a.xa = Math.max(a.xa, W.getActiveAttrib(a, b).name.length + 1);\n          }\n        }\n        G[c >> 2] = a.xa;\n      } else if (35381 == b) {\n        if (!a.ya) {\n          for (b = 0; b < W.getProgramParameter(a, 35382); ++b) {\n            a.ya = Math.max(a.ya, W.getActiveUniformBlockName(a, b).length + 1);\n          }\n        }\n        G[c >> 2] = a.ya;\n      } else {\n        G[c >> 2] = W.getProgramParameter(a, b);\n      }\n    }\n  } else {\n    X ||= 1281;\n  }\n}, glGetString:a => {\n  var b = Fd[a];\n  if (!b) {\n    switch(a) {\n      case 7939:\n        b = Sd(Pd().join(\" \"));\n        break;\n      case 7936:\n      case 7937:\n      case 37445:\n      case 37446:\n        (b = W.getParameter(a)) || (X ||= 1280);\n        b = b ? Sd(b) : 0;\n        break;\n      case 7938:\n        b = Sd(`OpenGL ES 3.0 (${W.getParameter(7938)})`);\n        break;\n      case 35724:\n        b = W.getParameter(35724);\n        var c = b.match(/^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/);\n        null !== c && (3 == c[1].length && (c[1] += \"0\"), b = `OpenGL ES GLSL ES ${c[1]} (${b})`);\n        b = Sd(b);\n        break;\n      default:\n        X ||= 1280;\n    }\n    Fd[a] = b;\n  }\n  return b;\n}, glGetUniformBlockIndex:(a, b) => W.getUniformBlockIndex(V[a], b ? L(D, b) : \"\"), glGetUniformLocation:(a, b) => {\n  b = b ? L(D, b) : \"\";\n  if (a = V[a]) {\n    var c = a, d = c.na, e = c.wb, f;\n    if (!d) {\n      for (c.na = d = {}, c.vb = {}, f = 0; f < W.getProgramParameter(c, 35718); ++f) {\n        var g = W.getActiveUniform(c, f);\n        var k = g.name;\n        g = g.size;\n        var m = Td(k);\n        m = 0 < m ? k.slice(0, m) : k;\n        var n = c.Wa;\n        c.Wa += g;\n        e[m] = [g, n];\n        for (k = 0; k < g; ++k) {\n          d[n] = k, c.vb[n++] = m;\n        }\n      }\n    }\n    c = a.na;\n    d = 0;\n    e = b;\n    f = Td(b);\n    0 < f && (d = parseInt(b.slice(f + 1)) >>> 0, e = b.slice(0, f));\n    if ((e = a.wb[e]) && d < e[0] && (d += e[1], c[d] = c[d] || W.getUniformLocation(a, b))) {\n      return d;\n    }\n  } else {\n    X ||= 1281;\n  }\n  return -1;\n}, glInvalidateFramebuffer:(a, b, c) => {\n  for (var d = Od[b], e = 0; e < b; e++) {\n    d[e] = G[c + 4 * e >> 2];\n  }\n  W.invalidateFramebuffer(a, d);\n}, glLinkProgram:a => {\n  a = V[a];\n  W.linkProgram(a);\n  a.na = 0;\n  a.wb = {};\n}, glPixelStorei:(a, b) => {\n  3317 == a ? Gd = b : 3314 == a && (Hd = b);\n  W.pixelStorei(a, b);\n}, glReadPixels:(a, b, c, d, e, f, g) => {\n  if (W.Na) {\n    W.readPixels(a, b, c, d, e, f, g);\n  } else {\n    var k = Ud(f);\n    g >>>= 31 - Math.clz32(k.BYTES_PER_ELEMENT);\n    W.readPixels(a, b, c, d, e, f, k, g);\n  }\n}, glRenderbufferStorageMultisample:(a, b, c, d, e) => W.renderbufferStorageMultisample(a, b, c, d, e), glScissor:(a, b, c, d) => W.scissor(a, b, c, d), glShaderSource:(a, b, c, d) => {\n  for (var e = \"\", f = 0; f < b; ++f) {\n    var g = (g = K[c + 4 * f >> 2]) ? L(D, g, d ? K[d + 4 * f >> 2] : void 0) : \"\";\n    e += g;\n  }\n  W.shaderSource(Dd[a], e);\n}, glStencilFunc:(a, b, c) => W.stencilFunc(a, b, c), glStencilFuncSeparate:(a, b, c, d) => W.stencilFuncSeparate(a, b, c, d), glStencilMask:a => W.stencilMask(a), glStencilOp:(a, b, c) => W.stencilOp(a, b, c), glStencilOpSeparate:(a, b, c, d) => W.stencilOpSeparate(a, b, c, d), glTexParameteri:(a, b, c) => W.texParameteri(a, b, c), glTexStorage2D:(a, b, c, d, e) => W.texStorage2D(a, b, c, d, e), glTexStorage3D:(a, b, c, d, e, f) => W.texStorage3D(a, b, c, d, e, f), glTexSubImage2D:(a, b, c, d, e, \nf, g, k, m) => {\n  if (W.Oa) {\n    W.texSubImage2D(a, b, c, d, e, f, g, k, m);\n  } else {\n    if (m) {\n      var n = Ud(k);\n      W.texSubImage2D(a, b, c, d, e, f, g, k, n, m >>> 31 - Math.clz32(n.BYTES_PER_ELEMENT));\n    } else {\n      if (m) {\n        n = Ud(k);\n        var t = f * ((Hd || e) * ({5:3, 6:4, 8:2, 29502:3, 29504:4, 26917:2, 26918:2, 29846:3, 29847:4}[g - 6402] || 1) * n.BYTES_PER_ELEMENT + Gd - 1 & -Gd);\n        m = n.subarray(m >>> 31 - Math.clz32(n.BYTES_PER_ELEMENT), m + t >>> 31 - Math.clz32(n.BYTES_PER_ELEMENT));\n      } else {\n        m = null;\n      }\n      W.texSubImage2D(a, b, c, d, e, f, g, k, m);\n    }\n  }\n}, glUniform1i:(a, b) => {\n  var c = W, d = c.uniform1i;\n  var e = W.Hb;\n  if (e) {\n    var f = e.na[a];\n    \"number\" == typeof f && (e.na[a] = f = W.getUniformLocation(e, e.vb[a] + (0 < f ? `[${f}]` : \"\")));\n    a = f;\n  } else {\n    X ||= 1282, a = void 0;\n  }\n  d.call(c, a, b);\n}, glUniformBlockBinding:(a, b, c) => {\n  a = V[a];\n  W.uniformBlockBinding(a, b, c);\n}, glUseProgram:a => {\n  a = V[a];\n  W.useProgram(a);\n  W.Hb = a;\n}, glVertexAttribDivisor:(a, b) => {\n  W.vertexAttribDivisor(a, b);\n}, glVertexAttribIPointer:(a, b, c, d, e) => {\n  W.vertexAttribIPointer(a, b, c, d, e);\n}, glVertexAttribPointer:(a, b, c, d, e, f) => {\n  W.vertexAttribPointer(a, b, c, !!d, e, f);\n}, glViewport:(a, b, c, d) => W.viewport(a, b, c, d), provokingVertexWEBGL:function(a, b) {\n  (a = w[a].C.pb) && a.provokingVertexWEBGL(b);\n}, strftime_l:(a, b, c, d) => Yd(a, b, c, d), upload_image:function(a, b) {\n  var c = l.images;\n  c && (b = c.get(b)) && (a = w[a].C, a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0), a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, a.RGBA, a.UNSIGNED_BYTE, b), a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1));\n}}, Y = function() {\n  function a(c) {\n    Y = c.exports;\n    ua = Y.memory;\n    za();\n    Qc = Y.__indirect_function_table;\n    Ba.unshift(Y.__wasm_call_ctors);\n    Ea--;\n    l.monitorRunDependencies?.(Ea);\n    0 == Ea && (null !== Fa && (clearInterval(Fa), Fa = null), Ga && (c = Ga, Ga = null, c()));\n    return Y;\n  }\n  var b = {env:be, wasi_snapshot_preview1:be,};\n  Ea++;\n  l.monitorRunDependencies?.(Ea);\n  if (l.instantiateWasm) {\n    try {\n      return l.instantiateWasm(b, a);\n    } catch (c) {\n      sa(`Module.instantiateWasm callback failed with error: ${c}`), ba(c);\n    }\n  }\n  Ja ||= Ia(\"webgl2_advanced.wasm\") ? \"webgl2_advanced.wasm\" : l.locateFile ? l.locateFile(\"webgl2_advanced.wasm\", A) : A + \"webgl2_advanced.wasm\";\n  Na(b, function(c) {\n    a(c.instance);\n  }).catch(ba);\n  return {};\n}(), lc = a => (lc = Y.free)(a), Rd = a => (Rd = Y.malloc)(a);\nl._setWebImage = (a, b, c) => (l._setWebImage = Y.setWebImage)(a, b, c);\nvar kc = a => (kc = Y.__getTypeName)(a), Qa = l._ma_device__on_notification_unlocked = a => (Qa = l._ma_device__on_notification_unlocked = Y.ma_device__on_notification_unlocked)(a);\nl._ma_malloc_emscripten = (a, b) => (l._ma_malloc_emscripten = Y.ma_malloc_emscripten)(a, b);\nl._ma_free_emscripten = (a, b) => (l._ma_free_emscripten = Y.ma_free_emscripten)(a, b);\nvar Ra = l._ma_device_process_pcm_frames_capture__webaudio = (a, b, c) => (Ra = l._ma_device_process_pcm_frames_capture__webaudio = Y.ma_device_process_pcm_frames_capture__webaudio)(a, b, c), Sa = l._ma_device_process_pcm_frames_playback__webaudio = (a, b, c) => (Sa = l._ma_device_process_pcm_frames_playback__webaudio = Y.ma_device_process_pcm_frames_playback__webaudio)(a, b, c);\nl.dynCall_iiiji = (a, b, c, d, e, f) => (l.dynCall_iiiji = Y.dynCall_iiiji)(a, b, c, d, e, f);\nl.dynCall_iij = (a, b, c, d) => (l.dynCall_iij = Y.dynCall_iij)(a, b, c, d);\nl.dynCall_iiji = (a, b, c, d, e) => (l.dynCall_iiji = Y.dynCall_iiji)(a, b, c, d, e);\nl.dynCall_jii = (a, b, c) => (l.dynCall_jii = Y.dynCall_jii)(a, b, c);\nl.dynCall_vijj = (a, b, c, d, e, f) => (l.dynCall_vijj = Y.dynCall_vijj)(a, b, c, d, e, f);\nl.dynCall_jiji = (a, b, c, d, e) => (l.dynCall_jiji = Y.dynCall_jiji)(a, b, c, d, e);\nl.dynCall_viijii = (a, b, c, d, e, f, g) => (l.dynCall_viijii = Y.dynCall_viijii)(a, b, c, d, e, f, g);\nl.dynCall_iiiiij = (a, b, c, d, e, f, g) => (l.dynCall_iiiiij = Y.dynCall_iiiiij)(a, b, c, d, e, f, g);\nl.dynCall_iiiiijj = (a, b, c, d, e, f, g, k, m) => (l.dynCall_iiiiijj = Y.dynCall_iiiiijj)(a, b, c, d, e, f, g, k, m);\nl.dynCall_iiiiiijj = (a, b, c, d, e, f, g, k, m, n) => (l.dynCall_iiiiiijj = Y.dynCall_iiiiiijj)(a, b, c, d, e, f, g, k, m, n);\nvar ce;\nGa = function de() {\n  ce || ee();\n  ce || (Ga = de);\n};\nfunction ee() {\n  function a() {\n    if (!ce && (ce = !0, l.calledRun = !0, !va)) {\n      l.noFSInit || Vb || (Vb = !0, l.stdin = l.stdin, l.stdout = l.stdout, l.stderr = l.stderr, l.stdin ? Wb(\"stdin\", l.stdin) : Rb(\"/dev/tty\", \"/dev/stdin\"), l.stdout ? Wb(\"stdout\", null, l.stdout) : Rb(\"/dev/tty\", \"/dev/stdout\"), l.stderr ? Wb(\"stderr\", null, l.stderr) : Rb(\"/dev/tty1\", \"/dev/stderr\"), Sb(\"/dev/stdin\", 0), Sb(\"/dev/stdout\", 1), Sb(\"/dev/stderr\", 1));\n      Ab = !1;\n      Ua(Ba);\n      aa(l);\n      if (l.onRuntimeInitialized) {\n        l.onRuntimeInitialized();\n      }\n      if (l.postRun) {\n        for (\"function\" == typeof l.postRun && (l.postRun = [l.postRun]); l.postRun.length;) {\n          var b = l.postRun.shift();\n          Ca.unshift(b);\n        }\n      }\n      Ua(Ca);\n    }\n  }\n  if (!(0 < Ea)) {\n    if (l.preRun) {\n      for (\"function\" == typeof l.preRun && (l.preRun = [l.preRun]); l.preRun.length;) {\n        Da();\n      }\n    }\n    Ua(Aa);\n    0 < Ea || (l.setStatus ? (l.setStatus(\"Running...\"), setTimeout(function() {\n      setTimeout(function() {\n        l.setStatus(\"\");\n      }, 1);\n      a();\n    }, 1)) : a());\n  }\n}\nif (l.preInit) {\n  for (\"function\" == typeof l.preInit && (l.preInit = [l.preInit]); 0 < l.preInit.length;) {\n    l.preInit.pop()();\n  }\n}\nee();\nmoduleRtn = ca;\n\n\n\n  return moduleRtn;\n}\n);\n})();\nexport default Rive;\n","import type {\n  LinearAnimationInstance,\n  LinearAnimation,\n  Artboard,\n  RiveCanvas,\n} from \"./../rive_advanced.mjs\";\n\n/**\n * Represents an animation that can be played on an Artboard. \n * Wraps animations and instances from the runtime and keeps track of playback state.\n *\n * The `Animation` class manages the state and behavior of a single animation instance,\n * including its current time, loop count, and ability to scrub to a specific time.\n *\n * The class provides methods to advance the animation, apply its interpolated keyframe\n * values to the Artboard, and clean up the underlying animation instance when the\n * animation is no longer needed.\n */\nexport class Animation {\n  public loopCount = 0;\n  public readonly instance: LinearAnimationInstance;\n\n  /**\n   * The time to which the animation should move to on the next render.\n   * If not null, the animation will scrub to this time instead of advancing by the given time.\n   */\n  public scrubTo: number | null = null;\n\n  /**\n   * Constructs a new animation\n   * @constructor\n   * @param {any} animation: runtime animation object\n   * @param {any} instance: runtime animation instance object\n   */\n  constructor(\n    private animation: LinearAnimation,\n    private artboard: Artboard,\n    runtime: RiveCanvas,\n    public playing: boolean\n  ) {\n    this.instance = new runtime.LinearAnimationInstance(animation, artboard);\n  }\n\n  /**\n   * Returns the animation's name\n   */\n  public get name(): string {\n    return this.animation.name;\n  }\n\n  /**\n   * Returns the animation's name\n   */\n  public get time(): number {\n    return this.instance.time;\n  }\n\n  /**\n   * Sets the animation's current time\n   */\n  public set time(value: number) {\n    this.instance.time = value;\n  }\n\n  /**\n   * Returns the animation's loop type\n   */\n  public get loopValue(): number {\n    return this.animation.loopValue;\n  }\n\n  /**\n   * Indicates whether the animation needs to be scrubbed.\n   * @returns `true` if the animation needs to be scrubbed, `false` otherwise.\n   */\n  public get needsScrub(): boolean {\n    return this.scrubTo !== null;\n  }\n\n  /**\n   * Advances the animation by the give time. If the animation needs scrubbing,\n   * time is ignored and the stored scrub value is used.\n   * @param time the time to advance the animation by if no scrubbing required\n   */\n  public advance(time: number) {\n    if (this.scrubTo === null) {\n      this.instance.advance(time);\n    } else {\n      this.instance.time = 0;\n      this.instance.advance(this.scrubTo);\n      this.scrubTo = null;\n    }\n  }\n\n  /**\n   * Apply interpolated keyframe values to the artboard. This should be called after calling\n   * .advance() on an animation instance so that new values are applied to properties.\n   *\n   * Note: This does not advance the artboard, which updates all objects on the artboard\n   * @param mix - Mix value for the animation from 0 to 1\n   */\n  public apply(mix: number) {\n    this.instance.apply(mix);\n  }\n\n  /**\n   * Deletes the backing Wasm animation instance; once this is called, this\n   * animation is no more.\n   */\n  public cleanup() {\n    this.instance.delete();\n  }\n}\n","import * as rc from \"../rive_advanced.mjs\";\n\nexport interface TouchInteractionsParams {\n  canvas: HTMLCanvasElement | OffscreenCanvas;\n  artboard: rc.Artboard;\n  stateMachines: rc.StateMachineInstance[];\n  renderer: rc.Renderer;\n  rive: rc.RiveCanvas;\n  fit: rc.Fit;\n  alignment: rc.Alignment;\n  isTouchScrollEnabled?: boolean;\n  dispatchPointerExit?: boolean;\n  enableMultiTouch?: boolean;\n  layoutScaleFactor?: number;\n}\n\ninterface ClientCoordinates {\n  clientX: number;\n  clientY: number;\n  identifier: number;\n  transformedX?: number | undefined;\n  transformedY?: number | undefined;\n}\n\n/**\n * Returns the clientX and clientY properties from touch or mouse events. Also\n * calls preventDefault() on the event if it is a touchstart or touchmove to prevent\n * scrolling the page on mobile devices\n * @param event - Either a TouchEvent or a MouseEvent\n * @returns - Coordinates of the clientX and clientY properties from the touch/mouse event\n */\nconst getClientCoordinates = (\n  event: MouseEvent | TouchEvent,\n  isTouchScrollEnabled: boolean,\n  enableMultiTouch: boolean,\n): ClientCoordinates[] => {\n  const coordinates: ClientCoordinates[] = [];\n  if (\n    [\"touchstart\", \"touchmove\"].indexOf(event.type) > -1 &&\n    (event as TouchEvent).changedTouches?.length\n  ) {\n    // This flag, if false, prevents touch events on the canvas default behavior\n    // which may prevent scrolling if a drag motion on the canvas is performed\n    if (!isTouchScrollEnabled) {\n      event.preventDefault();\n    }\n    let cnt = 0;\n    let totalTouches = enableMultiTouch\n      ? (event as TouchEvent).changedTouches.length\n      : 1;\n    while (cnt < totalTouches) {\n      const touch = (event as TouchEvent).changedTouches[cnt];\n      coordinates.push({\n        clientX: touch.clientX,\n        clientY: touch.clientY,\n        identifier: touch.identifier,\n      });\n      cnt++;\n    }\n  } else if (\n    event.type === \"touchend\" &&\n    (event as TouchEvent).changedTouches?.length\n  ) {\n    let cnt = 0;\n    let totalTouches = enableMultiTouch\n      ? (event as TouchEvent).changedTouches.length\n      : 1;\n    while (cnt < totalTouches) {\n      const touch = (event as TouchEvent).changedTouches[cnt];\n      coordinates.push({\n        clientX: touch.clientX,\n        clientY: touch.clientY,\n        identifier: touch.identifier,\n      });\n      cnt++;\n    }\n  } else {\n    coordinates.push({\n      clientX: (event as MouseEvent).clientX,\n      clientY: (event as MouseEvent).clientY,\n      identifier: 0,\n    });\n  }\n  return coordinates;\n};\n\n/**\n * Registers mouse move/up/down callback handlers on the canvas to send meaningful coordinates to\n * the state machine pointer move/up/down functions based on cursor interaction\n */\nexport const registerTouchInteractions = ({\n  canvas,\n  artboard,\n  stateMachines = [],\n  renderer,\n  rive,\n  fit,\n  alignment,\n  isTouchScrollEnabled = false,\n  dispatchPointerExit = true,\n  enableMultiTouch = false,\n  layoutScaleFactor = 1.0,\n}: TouchInteractionsParams) => {\n  if (\n    !canvas ||\n    !stateMachines.length ||\n    !renderer ||\n    !rive ||\n    !artboard ||\n    typeof window === \"undefined\"\n  ) {\n    return null;\n  }\n  /**\n   * After a touchend event, some browsers may fire synthetic mouse events\n   * (mouseover, mousedown, mousemove, mouseup) if the touch interaction did not cause\n   * any default action (such as scrolling).\n   *\n   * This is done to simulate the behavior of a mouse for applications that do not support\n   * touch events.\n   *\n   * We're keeping track of the previous event to not send the synthetic mouse events if the\n   * touch event was a click (touchstart -> touchend).\n   *\n   * This is only needed when `isTouchScrollEnabled` is false\n   * When true, `preventDefault()` is called which prevents this behaviour.\n   **/\n  let _prevEventType: string | null = null;\n  let _syntheticEventsActive = false;\n  const processEventCallback = (event: MouseEvent | TouchEvent) => {\n    // Exit early out of all synthetic mouse events\n    // https://stackoverflow.com/questions/9656990/how-to-prevent-simulated-mouse-events-in-mobile-browsers\n    // https://stackoverflow.com/questions/25572070/javascript-touchend-versus-click-dilemma\n    if (_syntheticEventsActive && event instanceof MouseEvent) {\n      // Synthetic event finished\n      if (event.type == \"mouseup\") {\n        _syntheticEventsActive = false;\n      }\n\n      return;\n    }\n\n    // Test if it's a \"touch click\". This could cause the browser to send\n    // synthetic mouse events.\n    _syntheticEventsActive =\n      isTouchScrollEnabled &&\n      event.type === \"touchend\" &&\n      _prevEventType === \"touchstart\";\n\n    _prevEventType = event.type;\n\n    const boundingRect = (\n      event.currentTarget as HTMLCanvasElement\n    ).getBoundingClientRect();\n\n    const coordinateSets = getClientCoordinates(\n      event,\n      isTouchScrollEnabled,\n      enableMultiTouch,\n    );\n    const forwardMatrix = rive.computeAlignment(\n      fit,\n      alignment,\n      {\n        minX: 0,\n        minY: 0,\n        maxX: boundingRect.width,\n        maxY: boundingRect.height,\n      },\n      artboard.bounds,\n      layoutScaleFactor,\n    );\n    const invertedMatrix = new rive.Mat2D();\n    forwardMatrix.invert(invertedMatrix);\n\n    coordinateSets.forEach((coordinateSet) => {\n      const clientX = coordinateSet.clientX;\n      const clientY = coordinateSet.clientY;\n      if (!clientX && !clientY) {\n        return;\n      }\n      const canvasX = clientX - boundingRect.left;\n      const canvasY = clientY - boundingRect.top;\n      const canvasCoordinatesVector = new rive.Vec2D(canvasX, canvasY);\n      const transformedVector = rive.mapXY(\n        invertedMatrix,\n        canvasCoordinatesVector,\n      );\n      const transformedX = transformedVector.x();\n      const transformedY = transformedVector.y();\n      coordinateSet.transformedX = transformedX;\n      coordinateSet.transformedY = transformedY;\n      transformedVector.delete();\n      canvasCoordinatesVector.delete();\n    });\n\n    invertedMatrix.delete();\n    forwardMatrix.delete();\n\n    switch (event.type) {\n      /**\n       * There's a 2px buffer for a hitRadius when translating the pointer coordinates\n       * down to the state machine. In cases where the hitbox is about that much away\n       * from the Artboard border, we don't have exact precision on determining pointer\n       * exit. We're therefore adding to the translated coordinates on mouseout of a canvas\n       * to ensure that we report the mouse has truly exited the hitarea.\n       * https://github.com/rive-app/rive-cpp/blob/master/src/animation/state_machine_instance.cpp#L336\n       *\n       */\n      case \"mouseout\":\n        for (const stateMachine of stateMachines) {\n          if (dispatchPointerExit) {\n            coordinateSets.forEach((coordinateSet) => {\n              stateMachine.pointerExit(\n                coordinateSet.transformedX,\n                coordinateSet.transformedY,\n                coordinateSet.identifier,\n              );\n            });\n          } else {\n            coordinateSets.forEach((coordinateSet) => {\n              stateMachine.pointerMove(\n                coordinateSet.transformedX,\n                coordinateSet.transformedY,\n                coordinateSet.identifier,\n              );\n            });\n          }\n        }\n        break;\n\n      // Pointer moving/hovering on the canvas\n      case \"touchmove\":\n      case \"mouseover\":\n      case \"mousemove\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerMove(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      // Pointer click initiated but not released yet on the canvas\n      case \"touchstart\":\n      case \"mousedown\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerDown(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      // Pointer click released on the canvas\n      case \"touchend\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerUp(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n            stateMachine.pointerExit(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      case \"mouseup\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerUp(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      default:\n    }\n  };\n  const callback = processEventCallback.bind(this);\n  canvas.addEventListener(\"mouseover\", callback);\n  canvas.addEventListener(\"mouseout\", callback);\n  canvas.addEventListener(\"mousemove\", callback);\n  canvas.addEventListener(\"mousedown\", callback);\n  canvas.addEventListener(\"mouseup\", callback);\n  canvas.addEventListener(\"touchmove\", callback, {\n    passive: isTouchScrollEnabled,\n  });\n  canvas.addEventListener(\"touchstart\", callback, {\n    passive: isTouchScrollEnabled,\n  });\n  canvas.addEventListener(\"touchend\", callback);\n  return () => {\n    canvas.removeEventListener(\"mouseover\", callback);\n    canvas.removeEventListener(\"mouseout\", callback);\n    canvas.removeEventListener(\"mousemove\", callback);\n    canvas.removeEventListener(\"mousedown\", callback);\n    canvas.removeEventListener(\"mouseup\", callback);\n    canvas.removeEventListener(\"touchmove\", callback);\n    canvas.removeEventListener(\"touchstart\", callback);\n    canvas.removeEventListener(\"touchend\", callback);\n  };\n};\n","// Reference: https://github.com/braintree/sanitize-url/tree/main\nconst invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nconst htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nconst htmlCtrlEntityRegex = /&(newline|tab);/gi;\nconst ctrlCharactersRegex =\n  /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nconst urlSchemeRegex = /^.+(:|&colon;)/gim;\nconst relativeFirstCharacters = [\".\", \"/\"];\nexport const BLANK_URL = \"about:blank\";\n\nfunction isRelativeUrlWithoutProtocol(url: string): boolean {\n  return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str: string) {\n  const removedNullByte = str.replace(ctrlCharactersRegex, \"\");\n  return removedNullByte.replace(htmlEntitiesRegex, (match, dec) => {\n    return String.fromCharCode(dec);\n  });\n}\n\nexport function sanitizeUrl(url?: string): string {\n  if (!url) {\n    return BLANK_URL;\n  }\n\n  const sanitizedUrl = decodeHtmlCharacters(url)\n    .replace(htmlCtrlEntityRegex, \"\")\n    .replace(ctrlCharactersRegex, \"\")\n    .trim();\n\n  if (!sanitizedUrl) {\n    return BLANK_URL;\n  }\n\n  if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n    return sanitizedUrl;\n  }\n\n  const urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n\n  if (!urlSchemeParseResults) {\n    return sanitizedUrl;\n  }\n\n  const urlScheme = urlSchemeParseResults[0];\n\n  if (invalidProtocolRegex.test(urlScheme)) {\n    return BLANK_URL;\n  }\n\n  return sanitizedUrl;\n}\n","import * as rc from \"../rive_advanced.mjs\";\n\ninterface Finalizable {\n  unref: () => void;\n}\n\nclass FileFinalizer implements Finalizable {\n  private _file: rc.File;\n  public selfUnref: boolean = false;\n  constructor(file: rc.File) {\n    this._file = file;\n  }\n\n  public unref() {\n    if (this._file) {\n      this._file.unref();\n    }\n  }\n}\n\nclass ObjectFinalizer<T extends Finalizable> {\n  private _finalizableObject: T;\n  constructor(finalizableObject: T) {\n    this._finalizableObject = finalizableObject;\n  }\n\n  public unref() {\n    this._finalizableObject.unref();\n  }\n}\n\n\nclass AssetWrapper implements rc.FinalizableTarget {\n  public selfUnref: boolean = false;\n  public unref() {}\n}\n\nclass ImageWrapper extends AssetWrapper {\n  private _nativeImage: rc.Image;\n\n  constructor(image: rc.Image) {\n    super();\n    this._nativeImage = image;\n  }\n\n  public get nativeImage(): rc.ImageInternal {\n    return this._nativeImage;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeImage.unref();\n    }\n  }\n}\n\nclass AudioWrapper extends AssetWrapper {\n  private _nativeAudio: rc.Audio;\n\n  constructor(audio: rc.Audio) {\n    super();\n    this._nativeAudio = audio;\n  }\n\n  public get nativeAudio(): rc.AudioInternal {\n    return this._nativeAudio;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeAudio.unref();\n    }\n  }\n}\n\nclass FontWrapper extends AssetWrapper {\n  private _nativeFont: rc.Font;\n\n  constructor(font: rc.Font) {\n    super();\n    this._nativeFont = font;\n  }\n\n  public get nativeFont(): rc.FontInternal {\n    return this._nativeFont;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeFont.unref();\n    }\n  }\n}\n\nexport type AssetLoadCallbackWrapper = (\n  asset: rc.FileAssetInternal,\n  bytes: Uint8Array,\n) => Boolean;\n\nclass CustomFileAssetLoaderWrapper {\n  assetLoader: rc.CustomFileAssetLoader;\n  _assetLoaderCallback: AssetLoadCallbackWrapper;\n\n  constructor(\n    runtime: rc.RiveCanvas,\n    loaderCallback: AssetLoadCallbackWrapper,\n  ) {\n    this._assetLoaderCallback = loaderCallback;\n    this.assetLoader = new runtime.CustomFileAssetLoader({\n      loadContents: this.loadContents.bind(this),\n    });\n  }\n\n  loadContents(asset: rc.FileAsset, bytes: any) {\n    let assetWrapper: FileAssetWrapper;\n    if (asset.isImage) {\n      assetWrapper = new ImageAssetWrapper(asset);\n    } else if (asset.isAudio) {\n      assetWrapper = new AudioAssetWrapper(asset);\n    } else if (asset.isFont) {\n      assetWrapper = new FontAssetWrapper(asset);\n    }\n    return this._assetLoaderCallback(assetWrapper, bytes);\n  }\n}\n\n/**\n * Rive class representing a FileAsset with relevant metadata fields to describe\n * an asset associated wtih the Rive File\n */\nclass FileAssetWrapper {\n  _nativeFileAsset: rc.FileAssetInternal;\n\n  constructor(nativeAsset: rc.FileAssetInternal) {\n    this._nativeFileAsset = nativeAsset;\n  }\n\n  decode(bytes: Uint8Array): void {\n    this._nativeFileAsset.decode(bytes);\n  }\n\n  get name(): string {\n    return this._nativeFileAsset.name;\n  }\n\n  get fileExtension(): string {\n    return this._nativeFileAsset.fileExtension;\n  }\n\n  get uniqueFilename(): string {\n    return this._nativeFileAsset.uniqueFilename;\n  }\n\n  get isAudio(): boolean {\n    return this._nativeFileAsset.isAudio;\n  }\n\n  get isImage(): boolean {\n    return this._nativeFileAsset.isImage;\n  }\n\n  get isFont(): boolean {\n    return this._nativeFileAsset.isFont;\n  }\n\n  get cdnUuid(): string {\n    return this._nativeFileAsset.cdnUuid;\n  }\n\n  get nativeFileAsset() {\n    return this._nativeFileAsset;\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setRenderImage()` API with a\n * decoded Image (via the `decodeImage()` API) to set a new Image on the Rive FileAsset\n */\nclass ImageAssetWrapper extends FileAssetWrapper {\n  setRenderImage(image: ImageWrapper): void {\n    (this._nativeFileAsset as rc.ImageAssetInternal).setRenderImage(\n      image.nativeImage,\n    );\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setAudioSource()` API with a\n * decoded Audio (via the `decodeAudio()` API) to set a new Audio on the Rive FileAsset\n */\nclass AudioAssetWrapper extends FileAssetWrapper {\n  setAudioSource(audio: AudioWrapper): void {\n    (this._nativeFileAsset as rc.AudioAssetInternal).setAudioSource(\n      audio.nativeAudio,\n    );\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setFont()` API with a\n * decoded Font (via the `decodeFont()` API) to set a new Font on the Rive FileAsset\n */\nclass FontAssetWrapper extends FileAssetWrapper {\n  setFont(font: FontWrapper): void {\n    (this._nativeFileAsset as rc.FontAssetInternal).setFont(font.nativeFont);\n  }\n}\n\ndeclare const FinalizationRegistry: {\n  new (fn: Function): typeof FinalizationRegistry;\n\n  register<T extends rc.FinalizableTarget>(\n    object: T,\n    description: Finalizable,\n  ): void;\n\n  unregister<T>(object: T): void;\n};\n\nclass FakeFinalizationRegistry {\n  constructor(_: Function) {}\n  register(object: rc.FinalizableTarget) {\n    object.selfUnref = true;\n  }\n\n  unregister<T>(_: T) {}\n}\nconst MyFinalizationRegistry =\n  typeof FinalizationRegistry !== \"undefined\"\n    ? FinalizationRegistry\n    : FakeFinalizationRegistry;\n\nconst finalizationRegistry = new MyFinalizationRegistry((ob: Finalizable) => {\n  ob?.unref();\n});\n\nconst createFinalization = <T extends Finalizable>(\n  target: rc.FinalizableTarget,\n  finalizable: T,\n) => {\n  const finalizer = new ObjectFinalizer<T>(finalizable);\n  finalizationRegistry.register(target, finalizer);\n};\n\nexport {\n  finalizationRegistry,\n  createFinalization,\n  Finalizable,\n  ImageWrapper,\n  AudioWrapper,\n  FontWrapper,\n  ImageAssetWrapper,\n  AudioAssetWrapper,\n  FontAssetWrapper,\n  CustomFileAssetLoaderWrapper,\n  FileAssetWrapper,\n  FileFinalizer,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n",null,null,null,"import * as rc from \"./rive_advanced.mjs\";\nimport packageData from \"package.json\";\nimport { Animation } from \"./animation\";\nimport {\n  registerTouchInteractions,\n  sanitizeUrl,\n  BLANK_URL,\n  ImageWrapper,\n  AudioWrapper,\n  FontWrapper,\n  finalizationRegistry,\n  CustomFileAssetLoaderWrapper,\n  FileFinalizer,\n  createFinalization,\n} from \"./utils\";\nexport type AssetLoadCallback = (\n  asset: rc.FileAsset,\n  bytes: Uint8Array,\n) => Boolean;\n\nclass RiveError extends Error {\n  public isHandledError = true;\n}\n\n// Note: Re-exporting a few types from rive_advanced.mjs to expose for high-level\n// API usage without re-defining their type definition here. May want to revisit\n// and see if we want to expose both types from rive.ts and rive_advanced.mjs in\n// the future\nexport type {\n  FileAsset,\n  AudioAsset,\n  FontAsset,\n  ImageAsset,\n} from \"./rive_advanced.mjs\";\n\n/**\n * Generic type for a parameterless void callback\n */\nexport type VoidCallback = () => void;\n\ninterface SetupRiveListenersOptions {\n  isTouchScrollEnabled?: boolean;\n}\n\n/**\n * Type for artboard bounds\n */\nexport type Bounds = rc.AABB;\n\n// #regions helpers\nconst resolveErrorMessage = (error: any): string =>\n  error && error.isHandledError\n    ? error.message\n    : \"Problem loading file; may be corrupt!\";\n\n// #region layout\n\n// Fit options for the canvas\nexport enum Fit {\n  Cover = \"cover\",\n  Contain = \"contain\",\n  Fill = \"fill\",\n  FitWidth = \"fitWidth\",\n  FitHeight = \"fitHeight\",\n  None = \"none\",\n  ScaleDown = \"scaleDown\",\n  Layout = \"layout\",\n}\n\n// Alignment options for the canvas\nexport enum Alignment {\n  Center = \"center\",\n  TopLeft = \"topLeft\",\n  TopCenter = \"topCenter\",\n  TopRight = \"topRight\",\n  CenterLeft = \"centerLeft\",\n  CenterRight = \"centerRight\",\n  BottomLeft = \"bottomLeft\",\n  BottomCenter = \"bottomCenter\",\n  BottomRight = \"bottomRight\",\n}\n\n// Interface for the Layout static method contructor\nexport interface LayoutParameters {\n  fit?: Fit;\n  alignment?: Alignment;\n  layoutScaleFactor?: number;\n  minX?: number;\n  minY?: number;\n  maxX?: number;\n  maxY?: number;\n}\n\n// Alignment options for Rive animations in a HTML canvas\nexport class Layout {\n  // Runtime fit and alignment are accessed every frame, so we cache their\n  // values to save cycles\n  private cachedRuntimeFit: rc.Fit;\n  private cachedRuntimeAlignment: rc.Alignment;\n\n  public readonly fit: Fit;\n  public readonly alignment: Alignment;\n  public readonly layoutScaleFactor: number;\n  public readonly minX: number;\n  public readonly minY: number;\n  public readonly maxX: number;\n  public readonly maxY: number;\n\n  constructor(params?: LayoutParameters) {\n    this.fit = params?.fit ?? Fit.Contain;\n    this.alignment = params?.alignment ?? Alignment.Center;\n    this.layoutScaleFactor = params?.layoutScaleFactor ?? 1;\n    this.minX = params?.minX ?? 0;\n    this.minY = params?.minY ?? 0;\n    this.maxX = params?.maxX ?? 0;\n    this.maxY = params?.maxY ?? 0;\n  }\n\n  // Alternative constructor to build a Layout from an interface/object\n  static new({\n    fit,\n    alignment,\n    minX,\n    minY,\n    maxX,\n    maxY,\n  }: LayoutParameters): Layout {\n    console.warn(\n      \"This function is deprecated: please use `new Layout({})` instead\",\n    );\n    return new Layout({ fit, alignment, minX, minY, maxX, maxY });\n  }\n\n  /**\n   * Makes a copy of the layout, replacing any specified parameters\n   */\n  public copyWith({\n    fit,\n    alignment,\n    layoutScaleFactor,\n    minX,\n    minY,\n    maxX,\n    maxY,\n  }: LayoutParameters): Layout {\n    return new Layout({\n      fit: fit ?? this.fit,\n      alignment: alignment ?? this.alignment,\n      layoutScaleFactor: layoutScaleFactor ?? this.layoutScaleFactor,\n      minX: minX ?? this.minX,\n      minY: minY ?? this.minY,\n      maxX: maxX ?? this.maxX,\n      maxY: maxY ?? this.maxY,\n    });\n  }\n\n  // Returns fit for the Wasm runtime format\n  public runtimeFit(rive: rc.RiveCanvas): rc.Fit {\n    if (this.cachedRuntimeFit) return this.cachedRuntimeFit;\n\n    let fit;\n    if (this.fit === Fit.Cover) fit = rive.Fit.cover;\n    else if (this.fit === Fit.Contain) fit = rive.Fit.contain;\n    else if (this.fit === Fit.Fill) fit = rive.Fit.fill;\n    else if (this.fit === Fit.FitWidth) fit = rive.Fit.fitWidth;\n    else if (this.fit === Fit.FitHeight) fit = rive.Fit.fitHeight;\n    else if (this.fit === Fit.ScaleDown) fit = rive.Fit.scaleDown;\n    else if (this.fit === Fit.Layout) fit = rive.Fit.layout;\n    else fit = rive.Fit.none;\n\n    this.cachedRuntimeFit = fit;\n    return fit;\n  }\n\n  // Returns alignment for the Wasm runtime format\n  public runtimeAlignment(rive: rc.RiveCanvas): rc.Alignment {\n    if (this.cachedRuntimeAlignment) return this.cachedRuntimeAlignment;\n\n    let alignment;\n    if (this.alignment === Alignment.TopLeft)\n      alignment = rive.Alignment.topLeft;\n    else if (this.alignment === Alignment.TopCenter)\n      alignment = rive.Alignment.topCenter;\n    else if (this.alignment === Alignment.TopRight)\n      alignment = rive.Alignment.topRight;\n    else if (this.alignment === Alignment.CenterLeft)\n      alignment = rive.Alignment.centerLeft;\n    else if (this.alignment === Alignment.CenterRight)\n      alignment = rive.Alignment.centerRight;\n    else if (this.alignment === Alignment.BottomLeft)\n      alignment = rive.Alignment.bottomLeft;\n    else if (this.alignment === Alignment.BottomCenter)\n      alignment = rive.Alignment.bottomCenter;\n    else if (this.alignment === Alignment.BottomRight)\n      alignment = rive.Alignment.bottomRight;\n    else alignment = rive.Alignment.center;\n\n    this.cachedRuntimeAlignment = alignment;\n    return alignment;\n  }\n}\n\n// #endregion\n\n// #region runtime\n\n// Callback type when looking for a runtime instance\nexport type RuntimeCallback = (rive: rc.RiveCanvas) => void;\n\n// Runtime singleton; use getInstance to provide a callback that returns the\n// Rive runtime\nexport class RuntimeLoader {\n  // Singleton helpers\n  private static runtime: rc.RiveCanvas;\n  // Flag to indicate that loading has started/completed\n  private static isLoading = false;\n  // List of callbacks for the runtime that come in while loading\n  private static callBackQueue: RuntimeCallback[] = [];\n  // Instance of the Rive runtime\n  private static rive: rc.RiveCanvas;\n  // Path to the Wasm file; default path works for testing only;\n  // if embedded wasm is used then this is never used.\n  private static wasmURL = `https://unpkg.com/${packageData.name}@${packageData.version}/rive.wasm`;\n\n  // Class is never instantiated\n  private constructor() {}\n\n  // Loads the runtime\n  private static loadRuntime(): void {\n    rc.default({\n      // Loads Wasm bundle\n      locateFile: () => RuntimeLoader.wasmURL,\n    })\n      .then((rive: rc.RiveCanvas) => {\n        RuntimeLoader.runtime = rive;\n        // Fire all the callbacks\n        while (RuntimeLoader.callBackQueue.length > 0) {\n          RuntimeLoader.callBackQueue.shift()?.(RuntimeLoader.runtime);\n        }\n      })\n      .catch((error) => {\n        // Capture specific error details\n        const errorDetails = {\n          message: error?.message || \"Unknown error\",\n          type: error?.name || \"Error\",\n          // Some browsers may provide additional WebAssembly-specific details\n          wasmError:\n            error instanceof WebAssembly.CompileError ||\n            error instanceof WebAssembly.RuntimeError,\n          originalError: error,\n        };\n\n        // Log detailed error for debugging\n        console.debug(\"Rive WASM load error details:\", errorDetails);\n\n        // In case unpkg fails, or the wasm was not supported, we try to load the fallback module from jsdelivr.\n        // This `rive_fallback.wasm` is compiled to support older architecture.\n        // TODO: (Gordon): preemptively test browser support and load the correct wasm file. Then use jsdelvr only if unpkg fails.\n        const backupJsdelivrUrl = `https://cdn.jsdelivr.net/npm/${packageData.name}@${packageData.version}/rive_fallback.wasm`;\n        if (RuntimeLoader.wasmURL.toLowerCase() !== backupJsdelivrUrl) {\n          console.warn(\n            `Failed to load WASM from ${RuntimeLoader.wasmURL} (${errorDetails.message}), trying jsdelivr as a backup`,\n          );\n          RuntimeLoader.setWasmUrl(backupJsdelivrUrl);\n          RuntimeLoader.loadRuntime();\n        } else {\n          const errorMessage = [\n            `Could not load Rive WASM file from ${RuntimeLoader.wasmURL} or ${backupJsdelivrUrl}.`,\n            \"Possible reasons:\",\n            \"- Network connection is down\",\n            \"- WebAssembly is not supported in this environment\",\n            \"- The WASM file is corrupted or incompatible\",\n            \"\\nError details:\",\n            `- Type: ${errorDetails.type}`,\n            `- Message: ${errorDetails.message}`,\n            `- WebAssembly-specific error: ${errorDetails.wasmError}`,\n            \"\\nTo resolve, you may need to:\",\n            \"1. Check your network connection\",\n            \"2. Set a new WASM source via RuntimeLoader.setWasmUrl()\",\n            \"3. Call RuntimeLoader.loadRuntime() again\",\n          ].join(\"\\n\");\n\n          console.error(errorMessage);\n        }\n      });\n  }\n\n  // Provides a runtime instance via a callback\n  public static getInstance(callback: RuntimeCallback): void {\n    // If it's not loading, start loading runtime\n    if (!RuntimeLoader.isLoading) {\n      RuntimeLoader.isLoading = true;\n      RuntimeLoader.loadRuntime();\n    }\n    if (!RuntimeLoader.runtime) {\n      RuntimeLoader.callBackQueue.push(callback);\n    } else {\n      callback(RuntimeLoader.runtime);\n    }\n  }\n\n  // Provides a runtime instance via a promise\n  public static awaitInstance(): Promise<rc.RiveCanvas> {\n    return new Promise<rc.RiveCanvas>((resolve) =>\n      RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => resolve(rive)),\n    );\n  }\n\n  // Manually sets the wasm url\n  public static setWasmUrl(url: string): void {\n    RuntimeLoader.wasmURL = url;\n  }\n\n  // Gets the current wasm url\n  public static getWasmUrl(): string {\n    return RuntimeLoader.wasmURL;\n  }\n}\n\n// #endregion\n\n// #region state machines\n\nexport enum StateMachineInputType {\n  Number = 56,\n  Trigger = 58,\n  Boolean = 59,\n}\n\n/**\n * An input for a state machine\n */\nexport class StateMachineInput {\n  constructor(\n    public readonly type: StateMachineInputType,\n    private runtimeInput: rc.SMIInput,\n  ) {}\n\n  /**\n   * Returns the name of the input\n   */\n  public get name(): string {\n    return this.runtimeInput.name;\n  }\n\n  /**\n   * Returns the current value of the input\n   */\n  public get value(): number | boolean {\n    return this.runtimeInput.value;\n  }\n\n  /**\n   * Sets the value of the input\n   */\n  public set value(value: number | boolean) {\n    this.runtimeInput.value = value;\n  }\n\n  /**\n   * Fires a trigger; does nothing on Number or Boolean input types\n   */\n  public fire(): void {\n    if (this.type === StateMachineInputType.Trigger) {\n      this.runtimeInput.fire();\n    }\n  }\n\n  /**\n   * Deletes the input\n   */\n  public delete(): void {\n    this.runtimeInput = null;\n  }\n}\n\nexport enum RiveEventType {\n  General = 128,\n  OpenUrl = 131,\n}\n\nclass BaseArtboard {\n  public isBindableArtboard: boolean = false;\n  constructor(_isBindableArtboard: boolean) {\n    this.isBindableArtboard = _isBindableArtboard;\n  }\n}\n\nclass Artboard extends BaseArtboard {\n  public nativeArtboard: rc.Artboard;\n  public file: RiveFile;\n  constructor(artboard: rc.Artboard, _file: RiveFile) {\n    super(false);\n    this.nativeArtboard = artboard;\n    this.file = _file;\n  }\n}\n\nclass BindableArtboard extends BaseArtboard implements rc.FinalizableTarget {\n  public selfUnref: boolean = false;\n  public nativeArtboard: rc.BindableArtboard;\n  constructor(artboard: rc.BindableArtboard) {\n    super(true);\n    this.nativeArtboard = artboard;\n  }\n  destroy() {\n    if (this.selfUnref) {\n      this.nativeArtboard.unref();\n    }\n  }\n}\n\nclass StateMachine {\n  /**\n   * Caches the inputs from the runtime\n   */\n  public readonly inputs: StateMachineInput[] = [];\n\n  /**\n   * Runtime state machine instance\n   */\n  public readonly instance: rc.StateMachineInstance;\n\n  /**\n   * @constructor\n   * @param stateMachine runtime state machine object\n   * @param instance runtime state machine instance object\n   */\n  constructor(\n    private stateMachine: rc.StateMachine,\n    runtime: rc.RiveCanvas,\n    public playing: boolean,\n    private artboard: rc.Artboard,\n  ) {\n    this.instance = new runtime.StateMachineInstance(stateMachine, artboard);\n    this.initInputs(runtime);\n  }\n\n  public get name(): string {\n    return this.stateMachine.name;\n  }\n\n  /**\n   * Returns a list of state names that have changed on this frame\n   */\n  public get statesChanged(): string[] {\n    const names: string[] = [];\n    for (let i = 0; i < this.instance.stateChangedCount(); i++) {\n      names.push(this.instance.stateChangedNameByIndex(i));\n    }\n    return names;\n  }\n\n  /**\n   * Advances the state machine instance by a given time.\n   * @param time - the time to advance the animation by in seconds\n   */\n  public advance(time: number) {\n    this.instance.advance(time);\n  }\n\n  /**\n   * Advances the state machine instance by a given time and apply changes to artboard.\n   * @param time - the time to advance the animation by in seconds\n   */\n  public advanceAndApply(time: number) {\n    this.instance.advanceAndApply(time);\n  }\n\n  /**\n   * Returns the number of events reported from the last advance call\n   * @returns Number of events reported\n   */\n  public reportedEventCount(): number {\n    return this.instance.reportedEventCount();\n  }\n\n  /**\n   * Returns a RiveEvent object emitted from the last advance call at the given index\n   * of a list of potentially multiple events. If an event at the index is not found,\n   * undefined is returned.\n   * @param i index of the event reported in a list of potentially multiple events\n   * @returns RiveEvent or extended RiveEvent object returned, or undefined\n   */\n  reportedEventAt(i: number): rc.OpenUrlEvent | rc.RiveEvent | undefined {\n    return this.instance.reportedEventAt(i);\n  }\n\n  /**\n   * Fetches references to the state machine's inputs and caches them\n   * @param runtime an instance of the runtime; needed for the SMIInput types\n   */\n  private initInputs(runtime: rc.RiveCanvas): void {\n    // Fetch the inputs from the runtime if we don't have them\n    for (let i = 0; i < this.instance.inputCount(); i++) {\n      const input = this.instance.input(i);\n      this.inputs.push(this.mapRuntimeInput(input, runtime));\n    }\n  }\n\n  /**\n   * Maps a runtime input to it's appropriate type\n   * @param input\n   */\n  private mapRuntimeInput(\n    input: rc.SMIInput,\n    runtime: rc.RiveCanvas,\n  ): StateMachineInput {\n    if (input.type === runtime.SMIInput.bool) {\n      return new StateMachineInput(\n        StateMachineInputType.Boolean,\n        input.asBool(),\n      );\n    } else if (input.type === runtime.SMIInput.number) {\n      return new StateMachineInput(\n        StateMachineInputType.Number,\n        input.asNumber(),\n      );\n    } else if (input.type === runtime.SMIInput.trigger) {\n      return new StateMachineInput(\n        StateMachineInputType.Trigger,\n        input.asTrigger(),\n      );\n    }\n  }\n\n  /**\n   * Deletes the backing Wasm state machine instance; once this is called, this\n   * state machine is no more.\n   */\n  public cleanup() {\n    this.inputs.forEach((input) => {\n      input.delete();\n    });\n    this.inputs.length = 0;\n    this.instance.delete();\n  }\n\n  public bindViewModelInstance(viewModelInstance: ViewModelInstance) {\n    if (viewModelInstance.runtimeInstance != null) {\n      this.instance.bindViewModelInstance(viewModelInstance.runtimeInstance);\n    }\n  }\n}\n\n// #endregion\n\n// #region animator\n\n/**\n * Manages animation\n */\nclass Animator {\n  /**\n   * Constructs a new animator\n   * @constructor\n   * @param runtime Rive runtime; needed to instance animations & state machines\n   * @param artboard the artboard that holds all animations and state machines\n   * @param animations optional list of animations\n   * @param stateMachines optional list of state machines\n   */\n  constructor(\n    private runtime: rc.RiveCanvas,\n    private artboard: rc.Artboard,\n    private eventManager: EventManager,\n    public readonly animations: Animation[] = [],\n    public readonly stateMachines: StateMachine[] = [],\n  ) {}\n\n  /**\n   * Adds animations and state machines by their names. If names are shared\n   * between animations & state machines, then the first one found will be\n   * created. Best not to use the same names for these in your Rive file.\n   * @param animatable the name(s) of animations and state machines to add\n   * @returns a list of names of the playing animations and state machines\n   */\n  public add(\n    animatables: string | string[],\n    playing: boolean,\n    fireEvent = true,\n  ): string[] {\n    animatables = mapToStringArray(animatables);\n    // If animatables is empty, play or pause everything\n    if (animatables.length === 0) {\n      this.animations.forEach((a) => (a.playing = playing));\n      this.stateMachines.forEach((m) => (m.playing = playing));\n    } else {\n      // Play/pause already instanced items, or create new instances\n      const instancedAnimationNames = this.animations.map((a) => a.name);\n      const instancedMachineNames = this.stateMachines.map((m) => m.name);\n      for (let i = 0; i < animatables.length; i++) {\n        const aIndex = instancedAnimationNames.indexOf(animatables[i]);\n        const mIndex = instancedMachineNames.indexOf(animatables[i]);\n        if (aIndex >= 0 || mIndex >= 0) {\n          if (aIndex >= 0) {\n            // Animation is instanced, play/pause it\n            this.animations[aIndex].playing = playing;\n          } else {\n            // State machine is instanced, play/pause it\n            this.stateMachines[mIndex].playing = playing;\n          }\n        } else {\n          // Try to create a new animation instance\n          const anim = this.artboard.animationByName(animatables[i]);\n          if (anim) {\n            const newAnimation = new Animation(\n              anim,\n              this.artboard,\n              this.runtime,\n              playing,\n            );\n            // Display the first frame of the specified animation\n            newAnimation.advance(0);\n            newAnimation.apply(1.0);\n            this.animations.push(newAnimation);\n          } else {\n            // Try to create a new state machine instance\n            const sm = this.artboard.stateMachineByName(animatables[i]);\n            if (sm) {\n              const newStateMachine = new StateMachine(\n                sm,\n                this.runtime,\n                playing,\n                this.artboard,\n              );\n              this.stateMachines.push(newStateMachine);\n            }\n          }\n        }\n      }\n    }\n    // Fire play/paused events for animations\n    if (fireEvent) {\n      if (playing) {\n        this.eventManager.fire({\n          type: EventType.Play,\n          data: this.playing,\n        });\n      } else {\n        this.eventManager.fire({\n          type: EventType.Pause,\n          data: this.paused,\n        });\n      }\n    }\n\n    return playing ? this.playing : this.paused;\n  }\n\n  /**\n   * Adds linear animations by their names.\n   * @param animatables the name(s) of animations to add\n   * @param playing whether animations should play on instantiation\n   */\n  public initLinearAnimations(animatables: string[], playing: boolean) {\n    // Play/pause already instanced items, or create new instances\n    // This validation is kept to maintain compatibility with current behavior.\n    // But given that it this is called during artboard initialization\n    // it should probably be safe to remove.\n    const instancedAnimationNames = this.animations.map((a) => a.name);\n    for (let i = 0; i < animatables.length; i++) {\n      const aIndex = instancedAnimationNames.indexOf(animatables[i]);\n      if (aIndex >= 0) {\n        this.animations[aIndex].playing = playing;\n      } else {\n        // Try to create a new animation instance\n        const anim = this.artboard.animationByName(animatables[i]);\n        if (anim) {\n          const newAnimation = new Animation(\n            anim,\n            this.artboard,\n            this.runtime,\n            playing,\n          );\n          // Display the first frame of the specified animation\n          newAnimation.advance(0);\n          newAnimation.apply(1.0);\n          this.animations.push(newAnimation);\n        } else {\n          console.error(`Animation with name ${animatables[i]} not found.`);\n        }\n      }\n    }\n  }\n\n  /**\n   * Adds state machines by their names.\n   * @param animatables the name(s) of state machines to add\n   * @param playing whether state machines should play on instantiation\n   */\n  public initStateMachines(animatables: string[], playing: boolean) {\n    // Play/pause already instanced items, or create new instances\n    // This validation is kept to maintain compatibility with current behavior.\n    // But given that it this is called during artboard initialization\n    // it should probably be safe to remove.\n    const instancedStateMachineNames = this.stateMachines.map((a) => a.name);\n    for (let i = 0; i < animatables.length; i++) {\n      const aIndex = instancedStateMachineNames.indexOf(animatables[i]);\n      if (aIndex >= 0) {\n        this.stateMachines[aIndex].playing = playing;\n      } else {\n        // Try to create a new state machine instance\n        const sm = this.artboard.stateMachineByName(animatables[i]);\n        if (sm) {\n          const newStateMachine = new StateMachine(\n            sm,\n            this.runtime,\n            playing,\n            this.artboard,\n          );\n          this.stateMachines.push(newStateMachine);\n        } else {\n          console.warn(`State Machine with name ${animatables[i]} not found.`);\n          // In order to maintain compatibility with current behavior, if a state machine is not found\n          // we look for an animation with the same name\n          this.initLinearAnimations([animatables[i]], playing);\n        }\n      }\n    }\n  }\n\n  /**\n   * Play the named animations/state machines\n   * @param animatables the names of the animations/machines to play; plays all if empty\n   * @returns a list of the playing items\n   */\n  public play(animatables: string | string[]): string[] {\n    return this.add(animatables, true);\n  }\n\n  /**\n   * Advance state machines if they are paused after initialization\n   */\n  public advanceIfPaused(): void {\n    this.stateMachines.forEach((sm) => {\n      if (!sm.playing) {\n        sm.advanceAndApply(0);\n      }\n    });\n  }\n\n  /**\n   * Pauses named animations and state machines, or everything if nothing is\n   * specified\n   * @param animatables names of the animations and state machines to pause\n   * @returns a list of names of the animations and state machines paused\n   */\n  public pause(animatables: string[]): string[] {\n    return this.add(animatables, false);\n  }\n\n  /**\n   * Set time of named animations\n   * @param animations names of the animations to scrub\n   * @param value time scrub value, a floating point number to which the playhead is jumped\n   * @returns a list of names of the animations that were scrubbed\n   */\n  public scrub(animatables: string[], value: number): string[] {\n    const forScrubbing = this.animations.filter((a) =>\n      animatables.includes(a.name),\n    );\n    forScrubbing.forEach((a) => (a.scrubTo = value));\n    return forScrubbing.map((a) => a.name);\n  }\n\n  /**\n   * Returns a list of names of all animations and state machines currently\n   * playing\n   */\n  public get playing(): string[] {\n    return this.animations\n      .filter((a) => a.playing)\n      .map((a) => a.name)\n      .concat(this.stateMachines.filter((m) => m.playing).map((m) => m.name));\n  }\n\n  /**\n   * Returns a list of names of all animations and state machines currently\n   * paused\n   */\n  public get paused(): string[] {\n    return this.animations\n      .filter((a) => !a.playing)\n      .map((a) => a.name)\n      .concat(this.stateMachines.filter((m) => !m.playing).map((m) => m.name));\n  }\n\n  /**\n   * Stops and removes all named animations and state machines\n   * @param animatables animations and state machines to remove\n   * @returns a list of names of removed items\n   */\n  public stop(animatables?: string[] | string): string[] {\n    animatables = mapToStringArray(animatables);\n\n    // If nothing's specified, wipe them out, all of them\n    let removedNames: string[] = [];\n    // Stop everything\n    if (animatables.length === 0) {\n      removedNames = this.animations\n        .map((a) => a.name)\n        .concat(this.stateMachines.map((m) => m.name));\n      // Clean up before emptying the arrays\n      this.animations.forEach((a) => a.cleanup());\n      this.stateMachines.forEach((m) => m.cleanup());\n      // Empty out the arrays\n      this.animations.splice(0, this.animations.length);\n      this.stateMachines.splice(0, this.stateMachines.length);\n    } else {\n      // Remove only the named animations/state machines\n      const animationsToRemove = this.animations.filter((a) =>\n        animatables.includes(a.name),\n      );\n\n      animationsToRemove.forEach((a) => {\n        a.cleanup();\n        this.animations.splice(this.animations.indexOf(a), 1);\n      });\n      const machinesToRemove = this.stateMachines.filter((m) =>\n        animatables.includes(m.name),\n      );\n      machinesToRemove.forEach((m) => {\n        m.cleanup();\n        this.stateMachines.splice(this.stateMachines.indexOf(m), 1);\n      });\n      removedNames = animationsToRemove\n        .map((a) => a.name)\n        .concat(machinesToRemove.map((m) => m.name));\n    }\n\n    this.eventManager.fire({\n      type: EventType.Stop,\n      data: removedNames,\n    });\n\n    // Return the list of animations removed\n    return removedNames;\n  }\n\n  /**\n   * Returns true if at least one animation is active\n   */\n  public get isPlaying(): boolean {\n    return (\n      this.animations.reduce((acc, curr) => acc || curr.playing, false) ||\n      this.stateMachines.reduce((acc, curr) => acc || curr.playing, false)\n    );\n  }\n\n  /**\n   * Returns true if all animations are paused and there's at least one animation\n   */\n  public get isPaused(): boolean {\n    return (\n      !this.isPlaying &&\n      (this.animations.length > 0 || this.stateMachines.length > 0)\n    );\n  }\n\n  /**\n   * Returns true if there are no playing or paused animations/state machines\n   */\n  public get isStopped(): boolean {\n    return this.animations.length === 0 && this.stateMachines.length === 0;\n  }\n\n  /**\n   * If there are no animations or state machines, add the first one found\n   * @returns the name of the animation or state machine instanced\n   */\n  public atLeastOne(playing: boolean, fireEvent = true): string {\n    let instancedName: string;\n    if (this.animations.length === 0 && this.stateMachines.length === 0) {\n      if (this.artboard.animationCount() > 0) {\n        // Add the first animation\n        this.add(\n          [(instancedName = this.artboard.animationByIndex(0).name)],\n          playing,\n          fireEvent,\n        );\n      } else if (this.artboard.stateMachineCount() > 0) {\n        // Add the first state machine\n        this.add(\n          [(instancedName = this.artboard.stateMachineByIndex(0).name)],\n          playing,\n          fireEvent,\n        );\n      }\n    }\n    return instancedName;\n  }\n\n  /**\n   * Checks if any animations have looped and if so, fire the appropriate event\n   */\n  public handleLooping() {\n    for (const animation of this.animations.filter((a) => a.playing)) {\n      // Emit if the animation looped\n      if (animation.loopValue === 0 && animation.loopCount) {\n        animation.loopCount = 0;\n        // This is a one-shot; if it has ended, delete the instance\n        this.stop(animation.name);\n      } else if (animation.loopValue === 1 && animation.loopCount) {\n        this.eventManager.fire({\n          type: EventType.Loop,\n          data: { animation: animation.name, type: LoopType.Loop },\n        });\n        animation.loopCount = 0;\n      }\n      // Wasm indicates a loop at each time the animation\n      // changes direction, so a full loop/lap occurs every\n      // two loop counts\n      else if (animation.loopValue === 2 && animation.loopCount > 1) {\n        this.eventManager.fire({\n          type: EventType.Loop,\n          data: { animation: animation.name, type: LoopType.PingPong },\n        });\n        animation.loopCount = 0;\n      }\n    }\n  }\n\n  /**\n   * Checks if states have changed in state machines and fires a statechange\n   * event\n   */\n  public handleStateChanges() {\n    const statesChanged: string[] = [];\n    for (const stateMachine of this.stateMachines.filter((sm) => sm.playing)) {\n      statesChanged.push(...stateMachine.statesChanged);\n    }\n    if (statesChanged.length > 0) {\n      this.eventManager.fire({\n        type: EventType.StateChange,\n        data: statesChanged,\n      });\n    }\n  }\n\n  public handleAdvancing(time: number) {\n    this.eventManager.fire({\n      type: EventType.Advance,\n      data: time,\n    });\n  }\n}\n\n// #endregion\n\n// #region events\n\n/**\n * Supported event types triggered in Rive\n */\nexport enum EventType {\n  Load = \"load\",\n  LoadError = \"loaderror\",\n  Play = \"play\",\n  Pause = \"pause\",\n  Stop = \"stop\",\n  Loop = \"loop\",\n  Draw = \"draw\",\n  Advance = \"advance\",\n  StateChange = \"statechange\",\n  RiveEvent = \"riveevent\",\n  AudioStatusChange = \"audiostatuschange\", // internal event. TODO: split\n}\n\nexport type RiveEventPayload = rc.RiveEvent | rc.OpenUrlEvent;\n\n// Event reported by Rive for significant events during animation playback (i.e. play, pause, stop, etc.),\n// as well as for custom Rive events reported from the state machine defined at design-time.\nexport interface Event {\n  type: EventType;\n  data?: string | string[] | LoopEvent | number | RiveEventPayload | RiveFile;\n}\n\n/**\n * Looping types: one-shot, loop, and ping-pong\n */\nexport enum LoopType {\n  OneShot = \"oneshot\", // has value 0 in runtime\n  Loop = \"loop\", // has value 1 in runtime\n  PingPong = \"pingpong\", // has value 2 in runtime\n}\n\n/**\n * Loop events are returned through onloop callbacks\n */\nexport interface LoopEvent {\n  animation: string;\n  type: LoopType;\n}\n\n/**\n * Loop events are returned through onloop callbacks\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Event listeners registered with the event manager\n */\nexport interface EventListener {\n  type: EventType;\n  callback: EventCallback;\n}\n\n/**\n * FPS Reporting through callbacks sent to the WASM runtime\n */\nexport type FPSCallback = (fps: number) => void;\n\n// Manages Rive events and listeners\nclass EventManager {\n  constructor(private listeners: EventListener[] = []) {}\n\n  // Gets listeners of specified type\n  private getListeners(type: EventType): EventListener[] {\n    return this.listeners.filter((e) => e.type === type);\n  }\n\n  // Adds a listener\n  public add(listener: EventListener): void {\n    if (!this.listeners.includes(listener)) {\n      this.listeners.push(listener);\n    }\n  }\n\n  /**\n   * Removes a listener\n   * @param listener the listener with the callback to be removed\n   */\n  public remove(listener: EventListener): void {\n    // We can't simply look for the listener as it'll be a different instance to\n    // one originally subscribed. Find all the listeners of the right type and\n    // then check their callbacks which should match.\n    for (let i = 0; i < this.listeners.length; i++) {\n      const currentListener = this.listeners[i];\n      if (currentListener.type === listener.type) {\n        if (currentListener.callback === listener.callback) {\n          this.listeners.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n\n  /**\n   * Clears all listeners of specified type, or every listener if no type is\n   * specified\n   * @param type the type of listeners to clear, or all listeners if not\n   * specified\n   */\n  public removeAll(type?: EventType) {\n    if (!type) {\n      this.listeners.splice(0, this.listeners.length);\n    } else {\n      this.listeners\n        .filter((l) => l.type === type)\n        .forEach((l) => this.remove(l));\n    }\n  }\n\n  // Fires an event\n  public fire(event: Event): void {\n    const eventListeners = this.getListeners(event.type);\n    eventListeners.forEach((listener) => listener.callback(event));\n  }\n}\n\n// #endregion\n\n// #region Manages a queue of tasks\n\n// A task in the queue; will fire the action when the queue is processed; will\n// also optionally fire an event.\nexport interface Task {\n  action?: VoidCallback;\n  event?: Event;\n}\n\n// Manages a queue of tasks\nclass TaskQueueManager {\n  private queue: Task[] = [];\n\n  constructor(private eventManager: EventManager) {}\n\n  // Adds a task top the queue\n  public add(task: Task): void {\n    this.queue.push(task);\n  }\n\n  // Processes all tasks in the queue\n  public process(): void {\n    while (this.queue.length > 0) {\n      const task = this.queue.shift();\n      if (task?.action) {\n        task.action();\n      }\n      if (task?.event) {\n        this.eventManager.fire(task.event);\n      }\n    }\n  }\n}\n\n// #endregion\n\n// #region Audio\n\nenum SystemAudioStatus {\n  AVAILABLE,\n  UNAVAILABLE,\n}\n\n// Class to handle audio context availability and status changes\nclass AudioManager extends EventManager {\n  private _started: boolean = false;\n  private _enabled: boolean = false;\n\n  private _status: SystemAudioStatus = SystemAudioStatus.UNAVAILABLE;\n  private _audioContext: AudioContext;\n\n  private async delay(time: number) {\n    return new Promise((resolve) => setTimeout(resolve, time));\n  }\n\n  private async timeout() {\n    return new Promise((_, reject) => setTimeout(reject, 50));\n  }\n\n  // Alerts animations on status changes and removes the listeners to avoid alerting twice.\n  private reportToListeners() {\n    this.fire({ type: EventType.AudioStatusChange });\n    this.removeAll();\n  }\n\n  /**\n   * The audio context has been resolved.\n   * Alert any listeners that we can now play audio.\n   * Rive will now play audio at the configured volume.\n   */\n  private async enableAudio() {\n    if (!this._enabled) {\n      this._enabled = true;\n      this._status = SystemAudioStatus.AVAILABLE;\n      this.reportToListeners();\n    }\n  }\n\n  /**\n   * Check if we are able to play audio.\n   *\n   * We currently check the audio context, when resume() returns before a timeout we know that the\n   * audio context is running and we can enable audio.\n   */\n  private async testAudio() {\n    if (\n      this._status === SystemAudioStatus.UNAVAILABLE &&\n      this._audioContext !== null\n    ) {\n      // if the audio context is not available, it will never resume,\n      // so the timeout will throw after 50ms and a new cycle will start\n      try {\n        await Promise.race([this._audioContext.resume(), this.timeout()]);\n        this.enableAudio();\n      } catch {\n        // we expect the promise race to timeout, which we ignore.\n      }\n    }\n  }\n\n  /**\n   * Establish audio for use with rive.\n   * We both test if we can use audio intermittently and listen for user interaction.\n   * The aim is to enable audio playback as soon as the browser allows this.\n   */\n  private async _establishAudio() {\n    if (!this._started) {\n      this._started = true;\n      // If window doesn't exist we assume they are not in a browser context\n      // so audio will not be blocked\n      if (typeof window == \"undefined\") {\n        this.enableAudio();\n      } else {\n        this._audioContext = new AudioContext();\n        this.listenForUserAction();\n        while (this._status === SystemAudioStatus.UNAVAILABLE) {\n          await this.testAudio();\n          await this.delay(1000);\n        }\n      }\n    }\n  }\n\n  private listenForUserAction() {\n    // NOTE: AudioContexts are ready immediately if requested in a ui callback\n    // we *could* re request one in this listener.\n    const _clickListener = async () => {\n      // note this has \"better\" results than calling `await this.testAudio()`\n      // as we force audio to be enabled in the current thread, rather than chancing\n      // the thread to be passed over for some other async context\n\n      this.enableAudio();\n    };\n    // NOTE: we should test this on mobile/pads\n    document.addEventListener(\"pointerdown\", _clickListener, {\n      once: true,\n    });\n  }\n\n  /**\n   * Establish the audio context for rive, this lets rive know that we can play audio.\n   */\n  public async establishAudio() {\n    this._establishAudio();\n  }\n\n  public get systemVolume() {\n    if (this._status === SystemAudioStatus.UNAVAILABLE) {\n      // We do an immediate test to avoid depending on the delay of the running test\n      this.testAudio();\n      return 0;\n    }\n    return 1;\n  }\n\n  public get status(): SystemAudioStatus {\n    return this._status;\n  }\n}\n\nconst audioManager = new AudioManager();\n\n// #endregion\n\n// #region Observers\n\ntype ObservedObject = {\n  onResize: Function;\n  element: HTMLCanvasElement;\n};\n\ntype MyResizeObserverType = {\n  observe: Function;\n  unobserve: Function;\n  disconnect: Function;\n};\n\nclass FakeResizeObserver {\n  observe() {}\n  unobserve() {}\n  disconnect() {}\n}\n\nconst MyResizeObserver = globalThis.ResizeObserver || FakeResizeObserver;\n\n/**\n * This class takes care of any observers that will be attached to an animation.\n * It should be treated as a singleton because observers are much more performant\n * when used for observing multiple elements by a single instance.\n */\n\nclass ObjectObservers {\n  private _elementsMap: Map<HTMLCanvasElement, ObservedObject> = new Map();\n\n  private _resizeObserver: MyResizeObserverType;\n\n  constructor() {\n    this._resizeObserver = new MyResizeObserver(this._onObserved);\n  }\n\n  /**\n   * Resize observers trigger both when the element changes its size and also when the\n   * element is added or removed from the document.\n   */\n  private _onObservedEntry = (entry: ResizeObserverEntry) => {\n    const observed = this._elementsMap.get(entry.target as HTMLCanvasElement);\n    if (observed !== null) {\n      observed.onResize(\n        entry.target.clientWidth == 0 || entry.target.clientHeight == 0,\n      );\n    } else {\n      this._resizeObserver.unobserve(entry.target);\n    }\n  };\n\n  private _onObserved = (entries: ResizeObserverEntry[]) => {\n    entries.forEach(this._onObservedEntry);\n  };\n\n  // Adds an observable element\n  public add(element: HTMLCanvasElement, onResize: Function) {\n    let observed: ObservedObject = {\n      onResize,\n      element,\n    };\n    this._elementsMap.set(element, observed);\n    this._resizeObserver.observe(element);\n    return observed;\n  }\n\n  // Removes an observable element\n  public remove(observed: ObservedObject) {\n    this._resizeObserver.unobserve(observed.element);\n    this._elementsMap.delete(observed.element);\n  }\n}\n\nconst observers = new ObjectObservers();\n\n// #endregion\n\n// #region Rive\n\n// Interface for the Rive static method contructor\nexport interface RiveParameters {\n  canvas: HTMLCanvasElement | OffscreenCanvas; // canvas is required\n  src?: string; // one of src or buffer or file is required\n  buffer?: ArrayBuffer; // one of src or buffer or file is required\n  riveFile?: RiveFile;\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  layout?: Layout;\n  autoplay?: boolean;\n  useOffscreenRenderer?: boolean;\n  /**\n   * Allow the runtime to automatically load assets hosted in Rive's CDN.\n   * enabled by default.\n   */\n  enableRiveAssetCDN?: boolean;\n  /**\n   * Turn off Rive Listeners. This means state machines that have Listeners\n   * will not be invoked, and also, no event listeners pertaining to Listeners\n   * will be attached to the <canvas> element\n   */\n  shouldDisableRiveListeners?: boolean;\n  /**\n   * For Rive Listeners, allows scrolling behavior to still occur on canvas elements\n   * when a touch/drag action is performed on touch-enabled devices. Otherwise,\n   * scroll behavior may be prevented on touch/drag actions on the canvas by default.\n   */\n  isTouchScrollEnabled?: boolean;\n  /**\n   * Enable Rive Events to be handled by the runtime. This means any special Rive Event may have\n   * a side effect that takes place implicitly.\n   *\n   * For example, if during the render loop an OpenUrlEvent is detected, the\n   * browser may try to open the specified URL in the payload.\n   *\n   * This flag is false by default to prevent any unwanted behaviors from taking place.\n   * This means any special Rive Event will have to be handled manually by subscribing to\n   * EventType.RiveEvent\n   */\n  automaticallyHandleEvents?: boolean;\n  /**\n   * Rive will look for a default view model and view model instance to bind to the artboard\n   */\n  autoBind?: boolean;\n  /**\n   * For Rive Listeners, dispatch a pointer exit when the pointer exits the canvas.\n   */\n  dispatchPointerExit?: boolean;\n  /**\n   * Enables multi touch support\n   */\n  enableMultiTouch?: boolean;\n  onLoad?: EventCallback;\n  onLoadError?: EventCallback;\n  onPlay?: EventCallback;\n  onPause?: EventCallback;\n  onStop?: EventCallback;\n  onLoop?: EventCallback;\n  onStateChange?: EventCallback;\n  onAdvance?: EventCallback;\n  assetLoader?: AssetLoadCallback;\n  /**\n   * @deprecated Use `onLoad()` instead\n   */\n  onload?: EventCallback;\n  /**\n   * @deprecated Use `onLoadError()` instead\n   */\n  onloaderror?: EventCallback;\n  /**\n   * @deprecated Use `onPoad()` instead\n   */\n  onplay?: EventCallback;\n  /**\n   * @deprecated Use `onPause()` instead\n   */\n  onpause?: EventCallback;\n  /**\n   * @deprecated Use `onStop()` instead\n   */\n  onstop?: EventCallback;\n  /**\n   * @deprecated Use `onLoop()` instead\n   */\n  onloop?: EventCallback;\n  /**\n   * @deprecated Use `onStateChange()` instead\n   */\n  onstatechange?: EventCallback;\n}\n\n// Interface to Rive.load function\nexport interface RiveLoadParameters {\n  src?: string;\n  buffer?: ArrayBuffer;\n  riveFile?: RiveFile;\n  autoplay?: boolean;\n  autoBind?: boolean;\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  useOffscreenRenderer?: boolean;\n  shouldDisableRiveListeners?: boolean;\n}\n\n// Interface ot Rive.reset function\nexport interface RiveResetParameters {\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  autoplay?: boolean;\n  autoBind?: boolean;\n}\n// Interface to RiveFile.load function\nexport interface RiveFileParameters {\n  src?: string;\n  buffer?: ArrayBuffer;\n  assetLoader?: AssetLoadCallback;\n  enableRiveAssetCDN?: boolean;\n  onLoad?: EventCallback;\n  onLoadError?: EventCallback;\n}\n\nexport class RiveFile implements rc.FinalizableTarget {\n  // Error message for missing source or buffer\n  private static readonly missingErrorMessage: string =\n    \"Rive source file or data buffer required\";\n\n  // Error message for file load error\n  private static readonly fileLoadErrorMessage: string =\n    \"The file failed to load\";\n\n  // A url to a Rive file; may be undefined if a buffer is specified\n  private src: string;\n\n  // Raw Rive file data; may be undefined if a src is specified\n  private buffer: ArrayBuffer;\n\n  // Wasm runtime\n  private runtime: rc.RiveCanvas;\n\n  // Runtime file\n  private file: rc.File;\n\n  // AssetLoadCallback: allows customizing asset loading for images and fonts.\n  private assetLoader: AssetLoadCallback;\n\n  // Allow the runtime to automatically load assets hosted in Rive's runtime.\n  private enableRiveAssetCDN: boolean = true;\n\n  // Holds event listeners\n  private eventManager: EventManager;\n\n  private referenceCount: number = 0;\n\n  private destroyed: boolean = false;\n\n  public selfUnref: boolean = false;\n\n  private bindableArtboards: BindableArtboard[] = [];\n\n  constructor(params: RiveFileParameters) {\n    this.src = params.src;\n    this.buffer = params.buffer;\n\n    if (params.assetLoader) this.assetLoader = params.assetLoader;\n    this.enableRiveAssetCDN =\n      typeof params.enableRiveAssetCDN == \"boolean\"\n        ? params.enableRiveAssetCDN\n        : true;\n\n    // New event management system\n    this.eventManager = new EventManager();\n    if (params.onLoad) this.on(EventType.Load, params.onLoad);\n    if (params.onLoadError) this.on(EventType.LoadError, params.onLoadError);\n  }\n\n  private releaseFile() {\n    if (this.selfUnref) {\n      this.file?.unref();\n    }\n    this.file = null;\n  }\n\n  private releaseBindableArtboards() {\n    this.bindableArtboards.forEach((bindableArtboard) =>\n      bindableArtboard.destroy(),\n    );\n  }\n\n  private async initData() {\n    if (this.src) {\n      this.buffer = await loadRiveFile(this.src);\n    }\n    if (this.destroyed) {\n      return;\n    }\n    let loader;\n    if (this.assetLoader) {\n      const loaderWrapper = new CustomFileAssetLoaderWrapper(\n        this.runtime,\n        this.assetLoader,\n      );\n      loader = loaderWrapper.assetLoader;\n    }\n    // Load the Rive file\n    this.file = await this.runtime.load(\n      new Uint8Array(this.buffer),\n      loader,\n      this.enableRiveAssetCDN,\n    );\n    const fileFinalizer = new FileFinalizer(this.file);\n    finalizationRegistry.register(this, fileFinalizer);\n\n    if (this.destroyed) {\n      this.releaseFile();\n      return;\n    }\n    if (this.file !== null) {\n      this.eventManager.fire({\n        type: EventType.Load,\n        data: this,\n      });\n    } else {\n      this.fireLoadError(RiveFile.fileLoadErrorMessage);\n    }\n  }\n\n  public async init() {\n    // If no source file url specified, it's a bust\n    if (!this.src && !this.buffer) {\n      this.fireLoadError(RiveFile.missingErrorMessage);\n      return;\n    }\n\n    try {\n      this.runtime = await RuntimeLoader.awaitInstance();\n\n      if (this.destroyed) {\n        return;\n      }\n\n      await this.initData();\n    } catch (error) {\n      this.fireLoadError(\n        error instanceof Error ? error.message : RiveFile.fileLoadErrorMessage,\n      );\n    }\n  }\n\n  private fireLoadError(message: string): void {\n    this.eventManager.fire({\n      type: EventType.LoadError,\n      data: message,\n    });\n\n    throw new Error(message);\n  }\n\n  /**\n   * Subscribe to Rive-generated events\n   * @param type the type of event to subscribe to\n   * @param callback callback to fire when the event occurs\n   */\n  public on(type: EventType, callback: EventCallback) {\n    this.eventManager.add({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @param type the type of event to unsubscribe from\n   * @param callback the callback to unsubscribe\n   */\n  public off(type: EventType, callback: EventCallback) {\n    this.eventManager.remove({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  public cleanup() {\n    this.referenceCount -= 1;\n    if (this.referenceCount <= 0) {\n      this.removeAllRiveEventListeners();\n      this.releaseFile();\n      this.releaseBindableArtboards();\n      this.destroyed = true;\n    }\n  }\n\n  /**\n   * Unsubscribes all Rive listeners from an event type, or everything if no type is\n   * given\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public removeAllRiveEventListeners(type?: EventType) {\n    this.eventManager.removeAll(type);\n  }\n\n  public getInstance(): rc.File {\n    if (this.file !== null) {\n      this.referenceCount += 1;\n      return this.file;\n    }\n  }\n\n  public destroyIfUnused() {\n    if (this.referenceCount <= 0) {\n      this.cleanup();\n    }\n  }\n\n  private createBindableArtboard(\n    nativeBindableArtboard: rc.BindableArtboard,\n  ): BindableArtboard | null {\n    if (nativeBindableArtboard != null) {\n      const bindableArtboard = new BindableArtboard(nativeBindableArtboard);\n      createFinalization(bindableArtboard, bindableArtboard.nativeArtboard);\n      this.bindableArtboards.push(bindableArtboard);\n      return bindableArtboard;\n    }\n    return null;\n  }\n\n  /**\n   * @deprecated This function is deprecated. For better stability and memory management\n   * use `getBindableArtboard()` instead.\n   * @param {string} name - The name of the artboard.\n   * @returns {Artboard} The artboard to bind to.\n   */\n  public getArtboard(name: string): Artboard | null {\n    const nativeArtboard = this.file.artboardByName(name);\n    if (nativeArtboard != null) {\n      return new Artboard(nativeArtboard, this);\n    }\n  }\n\n  public getBindableArtboard(name: string): BindableArtboard | null {\n    const nativeArtboard = this.file.bindableArtboardByName(name);\n    return this.createBindableArtboard(nativeArtboard);\n  }\n\n  public getDefaultBindableArtboard(): BindableArtboard | null {\n    const nativeArtboard = this.file.bindableArtboardDefault();\n    return this.createBindableArtboard(nativeArtboard);\n  }\n\n  public internalBindableArtboardFromArtboard(\n    artboard: rc.Artboard,\n  ): BindableArtboard | null {\n    const nativeBindableArtboard =\n      this.file.internalBindableArtboardFromArtboard(artboard);\n    return this.createBindableArtboard(nativeBindableArtboard);\n  }\n}\n\nexport class Rive {\n  // Canvas in which to render the artboard\n  private readonly canvas: HTMLCanvasElement | OffscreenCanvas;\n\n  // A url to a Rive file; may be undefined if a buffer is specified\n  private src: string;\n\n  // Raw Rive file data; may be undefined if a src is specified\n  private buffer: ArrayBuffer;\n\n  // The layout for rendering in the canvas\n  private _layout: Layout;\n\n  // The runtime renderer\n  private renderer: rc.WrappedRenderer;\n\n  // Tracks if a Rive file is loaded\n  private loaded = false;\n\n  // Tracks if a Rive file is destroyed\n  private destroyed = false;\n\n  // Reference of an object that handles any observers for the animation\n  private _observed: ObservedObject | null = null;\n\n  /**\n   * Tracks if a Rive file is loaded; we need this in addition to loaded as some\n   * commands (e.g. contents) can be called as soon as the file is loaded.\n   * However, playback commands need to be queued and run in order once initial\n   * animations and autoplay has been sorted out. This applies to play, pause,\n   * and start.\n   */\n  private readyForPlaying = false;\n\n  // Wasm runtime\n  private runtime: rc.RiveCanvas;\n\n  // Runtime artboard\n  private artboard: rc.Artboard | null = null;\n\n  // place to clear up event listeners\n  private eventCleanup: VoidCallback | null = null;\n\n  // Runtime file\n  private file: rc.File;\n\n  // Rive file instance\n  private riveFile: RiveFile;\n\n  // Holds event listeners\n  private eventManager: EventManager;\n\n  // Manages the loading task queue\n  private taskQueue: TaskQueueManager;\n\n  // Animator: manages animations and state machines\n  private animator: Animator;\n\n  // AssetLoadCallback: allows customizing asset loading for images and fonts.\n  private assetLoader: AssetLoadCallback;\n\n  // Error message for missing source or buffer\n  private static readonly missingErrorMessage: string =\n    \"Rive source file or data buffer required\";\n\n  // Error message for removed rive file\n  private static readonly cleanupErrorMessage: string =\n    \"Attempt to use file after calling cleanup.\";\n\n  private shouldDisableRiveListeners = false;\n\n  private automaticallyHandleEvents = false;\n\n  private dispatchPointerExit = true;\n\n  // Allow all pointers to be passed to the runtime\n  private enableMultiTouch = false;\n\n  // Allow the runtime to automatically load assets hosted in Rive's runtime.\n  private enableRiveAssetCDN = true;\n\n  // Keep a local value of the set volume to update it asynchronously\n  private _volume = 1;\n\n  // Keep a local value of the set width to update it asynchronously\n  private _artboardWidth: number | undefined = undefined;\n\n  // Keep a local value of the set height to update it asynchronously\n  private _artboardHeight: number | undefined = undefined;\n\n  // Keep a local value of the device pixel ratio used in rendering and canvas/artboard resizing\n  private _devicePixelRatioUsed = 1;\n\n  // Whether the canvas element's size is 0\n  private _hasZeroSize = false;\n\n  // Audio event listener\n  private _audioEventListener: EventListener | null = null;\n\n  // draw method bound to the class\n  private _boundDraw: (t: number) => void | null = null;\n\n  private _viewModelInstance: ViewModelInstance | null = null;\n  private _dataEnums: DataEnum[] | null = null;\n\n  // Durations to generate a frame for the last second. Used for performance profiling.\n  public durations: number[] = [];\n  public frameTimes: number[] = [];\n  public frameCount = 0;\n  public isTouchScrollEnabled = false;\n\n  constructor(params: RiveParameters) {\n    this._boundDraw = this.draw.bind(this);\n    this.canvas = params.canvas;\n    if (params.canvas.constructor === HTMLCanvasElement) {\n      this._observed = observers.add(\n        this.canvas as HTMLCanvasElement,\n        this.onCanvasResize,\n      );\n    }\n    this.src = params.src;\n    this.buffer = params.buffer;\n    this.riveFile = params.riveFile;\n    this.layout = params.layout ?? new Layout();\n    this.shouldDisableRiveListeners = !!params.shouldDisableRiveListeners;\n    this.isTouchScrollEnabled = !!params.isTouchScrollEnabled;\n    this.automaticallyHandleEvents = !!params.automaticallyHandleEvents;\n    this.dispatchPointerExit =\n      params.dispatchPointerExit === false\n        ? params.dispatchPointerExit\n        : this.dispatchPointerExit;\n    this.enableMultiTouch = !!params.enableMultiTouch;\n    this.enableRiveAssetCDN =\n      params.enableRiveAssetCDN === undefined\n        ? true\n        : params.enableRiveAssetCDN;\n\n    // New event management system\n    this.eventManager = new EventManager();\n    if (params.onLoad) this.on(EventType.Load, params.onLoad);\n    if (params.onLoadError) this.on(EventType.LoadError, params.onLoadError);\n    if (params.onPlay) this.on(EventType.Play, params.onPlay);\n    if (params.onPause) this.on(EventType.Pause, params.onPause);\n    if (params.onStop) this.on(EventType.Stop, params.onStop);\n    if (params.onLoop) this.on(EventType.Loop, params.onLoop);\n    if (params.onStateChange)\n      this.on(EventType.StateChange, params.onStateChange);\n    if (params.onAdvance) this.on(EventType.Advance, params.onAdvance);\n\n    /**\n     * @deprecated Use camelCase'd versions instead.\n     */\n    if (params.onload && !params.onLoad) this.on(EventType.Load, params.onload);\n    if (params.onloaderror && !params.onLoadError)\n      this.on(EventType.LoadError, params.onloaderror);\n    if (params.onplay && !params.onPlay) this.on(EventType.Play, params.onplay);\n    if (params.onpause && !params.onPause)\n      this.on(EventType.Pause, params.onpause);\n    if (params.onstop && !params.onStop) this.on(EventType.Stop, params.onstop);\n    if (params.onloop && !params.onLoop) this.on(EventType.Loop, params.onloop);\n    if (params.onstatechange && !params.onStateChange)\n      this.on(EventType.StateChange, params.onstatechange);\n\n    /**\n     * Asset loading\n     */\n    if (params.assetLoader) this.assetLoader = params.assetLoader;\n\n    // Hook up the task queue\n    this.taskQueue = new TaskQueueManager(this.eventManager);\n\n    this.init({\n      src: this.src,\n      buffer: this.buffer,\n      riveFile: this.riveFile,\n      autoplay: params.autoplay,\n      autoBind: params.autoBind,\n      animations: params.animations,\n      stateMachines: params.stateMachines,\n      artboard: params.artboard,\n      useOffscreenRenderer: params.useOffscreenRenderer,\n    });\n  }\n\n  public get viewModelCount(): number {\n    return this.file.viewModelCount();\n  }\n\n  // Alternative constructor to build a Rive instance from an interface/object\n  public static new(params: RiveParameters): Rive {\n    console.warn(\n      \"This function is deprecated: please use `new Rive({})` instead\",\n    );\n    return new Rive(params);\n  }\n\n  // Event handler for when audio context becomes available\n  private onSystemAudioChanged() {\n    this.volume = this._volume;\n  }\n\n  private onCanvasResize = (hasZeroSize: boolean) => {\n    const toggledDisplay = this._hasZeroSize !== hasZeroSize;\n    this._hasZeroSize = hasZeroSize;\n    if (!hasZeroSize) {\n      if (toggledDisplay) {\n        this.resizeDrawingSurfaceToCanvas();\n      }\n    } else if (!this._layout.maxX || !this._layout.maxY) {\n      this.resizeToCanvas();\n    }\n  };\n\n  // Initializes the Rive object either from constructor or load()\n  private init({\n    src,\n    buffer,\n    riveFile,\n    animations,\n    stateMachines,\n    artboard,\n    autoplay = false,\n    useOffscreenRenderer = false,\n    autoBind = false,\n  }: RiveLoadParameters): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.src = src;\n    this.buffer = buffer;\n    this.riveFile = riveFile;\n\n    // If no source file url specified, it's a bust\n    if (!this.src && !this.buffer && !this.riveFile) {\n      throw new RiveError(Rive.missingErrorMessage);\n    }\n\n    // List of animations that should be initialized.\n    const startingAnimationNames = mapToStringArray(animations);\n\n    // List of state machines that should be initialized\n    const startingStateMachineNames = mapToStringArray(stateMachines);\n\n    // Ensure loaded is marked as false if loading new file\n    this.loaded = false;\n    this.readyForPlaying = false;\n\n    // Ensure the runtime is loaded\n    RuntimeLoader.awaitInstance()\n      .then((runtime) => {\n        if (this.destroyed) {\n          return;\n        }\n        this.runtime = runtime;\n\n        this.removeRiveListeners();\n        this.deleteRiveRenderer();\n\n        // Get the canvas where you want to render the animation and create a renderer\n        this.renderer = this.runtime.makeRenderer(\n          this.canvas,\n          useOffscreenRenderer,\n        );\n\n        // Initial size adjustment based on devicePixelRatio if no width/height are\n        // specified explicitly\n        if (!(this.canvas.width || this.canvas.height)) {\n          this.resizeDrawingSurfaceToCanvas();\n        }\n\n        // Load Rive data from a source uri or a data buffer\n        this.initData(\n          artboard,\n          startingAnimationNames,\n          startingStateMachineNames,\n          autoplay,\n          autoBind,\n        )\n          .then((hasInitialized: boolean) => {\n            if (hasInitialized) {\n              return this.setupRiveListeners();\n            }\n          })\n          .catch((e) => {\n            console.error(e);\n          });\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n\n  /**\n   * Setup Rive Listeners on the canvas\n   * @param riveListenerOptions - Enables TouchEvent events on the canvas. Set to true to allow\n   * touch scrolling on the canvas element on touch-enabled devices\n   * i.e. { isTouchScrollEnabled: true }\n   */\n  public setupRiveListeners(\n    riveListenerOptions?: SetupRiveListenersOptions,\n  ): void {\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    if (!this.shouldDisableRiveListeners) {\n      const activeStateMachines = (this.animator.stateMachines || [])\n        .filter((sm) => sm.playing && this.runtime.hasListeners(sm.instance))\n        .map((sm) => sm.instance);\n      let touchScrollEnabledOption = this.isTouchScrollEnabled;\n      let dispatchPointerExit = this.dispatchPointerExit;\n      let enableMultiTouch = this.enableMultiTouch;\n      if (\n        riveListenerOptions &&\n        \"isTouchScrollEnabled\" in riveListenerOptions\n      ) {\n        touchScrollEnabledOption = riveListenerOptions.isTouchScrollEnabled;\n      }\n      this.eventCleanup = registerTouchInteractions({\n        canvas: this.canvas,\n        artboard: this.artboard,\n        stateMachines: activeStateMachines,\n        renderer: this.renderer,\n        rive: this.runtime,\n        fit: this._layout.runtimeFit(this.runtime),\n        alignment: this._layout.runtimeAlignment(this.runtime),\n        isTouchScrollEnabled: touchScrollEnabledOption,\n        dispatchPointerExit: dispatchPointerExit,\n        enableMultiTouch: enableMultiTouch,\n        layoutScaleFactor: this._layout.layoutScaleFactor,\n      });\n    }\n  }\n\n  /**\n   * Remove Rive Listeners setup on the canvas\n   */\n  public removeRiveListeners(): void {\n    if (this.eventCleanup) {\n      this.eventCleanup();\n      this.eventCleanup = null;\n    }\n  }\n\n  /**\n   * If the instance has audio and the system audio is not ready\n   * we hook the instance to the audio manager\n   */\n  private initializeAudio() {\n    // Initialize audio if needed\n    if (audioManager.status == SystemAudioStatus.UNAVAILABLE) {\n      if (this.artboard?.hasAudio && this._audioEventListener === null) {\n        this._audioEventListener = {\n          type: EventType.AudioStatusChange,\n          callback: () => this.onSystemAudioChanged(),\n        };\n        audioManager.add(this._audioEventListener);\n        audioManager.establishAudio();\n      }\n    }\n  }\n\n  private initArtboardSize() {\n    if (!this.artboard) return;\n\n    // Use preset values if they are not undefined\n    this._artboardWidth = this.artboard.width =\n      this._artboardWidth || this.artboard.width;\n    this._artboardHeight = this.artboard.height =\n      this._artboardHeight || this.artboard.height;\n  }\n\n  // Initializes runtime with Rive data and preps for playing.\n  // Returns true for successful initialization.\n  private async initData(\n    artboardName: string,\n    animationNames: string[],\n    stateMachineNames: string[],\n    autoplay: boolean,\n    autoBind: boolean,\n  ): Promise<boolean> {\n    try {\n      if (this.riveFile == null) {\n        const riveFile = new RiveFile({\n          src: this.src,\n          buffer: this.buffer,\n          enableRiveAssetCDN: this.enableRiveAssetCDN,\n          assetLoader: this.assetLoader,\n        });\n        this.riveFile = riveFile;\n        await riveFile.init();\n        if (this.destroyed) {\n          // In the very unlikely scenario where the rive file created by this Rive is shared by\n          // another rive file, we only want to destroy it if this file is the only owner.\n          riveFile.destroyIfUnused();\n          return false;\n        }\n      }\n      this.file = this.riveFile.getInstance();\n      // Initialize and draw frame\n      this.initArtboard(\n        artboardName,\n        animationNames,\n        stateMachineNames,\n        autoplay,\n        autoBind,\n      );\n\n      // Initialize the artboard size\n      this.initArtboardSize();\n\n      // Check for audio\n      this.initializeAudio();\n\n      // Everything's set up, emit a load event\n      this.loaded = true;\n      this.eventManager.fire({\n        type: EventType.Load,\n        data: this.src ?? \"buffer\",\n      });\n\n      // Only initialize paused state machines after the load event has been fired\n      // to allow users to initialize inputs and view models before the first advance\n      this.animator.advanceIfPaused();\n\n      // Flag ready for playback commands and clear the task queue; this order\n      // is important or it may infinitely recurse\n      this.readyForPlaying = true;\n      this.taskQueue.process();\n\n      this.drawFrame();\n\n      return true;\n    } catch (error) {\n      const msg = resolveErrorMessage(error);\n      console.warn(msg);\n      this.eventManager.fire({ type: EventType.LoadError, data: msg });\n      return Promise.reject(msg);\n    }\n  }\n\n  // Initialize for playback\n  private initArtboard(\n    artboardName: string,\n    animationNames: string[],\n    stateMachineNames: string[],\n    autoplay: boolean,\n    autoBind: boolean,\n  ): void {\n    if (!this.file) {\n      return;\n    }\n    // Fetch the artboard\n    const rootArtboard = artboardName\n      ? this.file.artboardByName(artboardName)\n      : this.file.defaultArtboard();\n\n    // Check we have a working artboard\n    if (!rootArtboard) {\n      const msg = \"Invalid artboard name or no default artboard\";\n      console.warn(msg);\n      this.eventManager.fire({ type: EventType.LoadError, data: msg });\n      return;\n    }\n\n    this.artboard = rootArtboard;\n    rootArtboard.volume = this._volume * audioManager.systemVolume;\n\n    // Initialize the animator\n    this.animator = new Animator(\n      this.runtime,\n      this.artboard,\n      this.eventManager,\n    );\n\n    // Initialize the animations; as loaded hasn't happened yet, we need to\n    // suppress firing the play/pause events until the load event has fired. To\n    // do this we tell the animator to suppress firing events, and add event\n    // firing to the task queue.\n    let instanceNames: string[];\n    if (animationNames.length > 0 || stateMachineNames.length > 0) {\n      instanceNames = animationNames.concat(stateMachineNames);\n      this.animator.initLinearAnimations(animationNames, autoplay);\n      this.animator.initStateMachines(stateMachineNames, autoplay);\n    } else {\n      instanceNames = [this.animator.atLeastOne(autoplay, false)];\n    }\n    // Queue up firing the playback events\n    this.taskQueue.add({\n      event: {\n        type: autoplay ? EventType.Play : EventType.Pause,\n        data: instanceNames,\n      },\n    });\n\n    if (autoBind) {\n      const viewModel = this.file.defaultArtboardViewModel(rootArtboard);\n      if (viewModel !== null) {\n        const runtimeInstance = viewModel.defaultInstance();\n        if (runtimeInstance !== null) {\n          const viewModelInstance = new ViewModelInstance(\n            runtimeInstance,\n            null,\n          );\n          createFinalization(\n            viewModelInstance,\n            viewModelInstance.runtimeInstance,\n          );\n          this.bindViewModelInstance(viewModelInstance);\n        }\n      }\n    }\n  }\n\n  // Draws the current artboard frame\n  public drawFrame() {\n    if (document?.timeline?.currentTime) {\n      if (this.loaded && this.artboard && !this.frameRequestId) {\n        this._boundDraw(document!.timeline!.currentTime as number);\n        this.runtime?.resolveAnimationFrame();\n      }\n    } else {\n      this.startRendering();\n    }\n  }\n\n  // Tracks the last timestamp at which the animation was rendered. Used only in\n  // draw().\n  private lastRenderTime: number;\n\n  // Tracks the current animation frame request\n  private frameRequestId: number | null;\n\n  /**\n   * Used be draw to track when a second of active rendering time has passed.\n   * Used for debugging purposes\n   */\n  private renderSecondTimer = 0;\n\n  /**\n   * Draw rendering loop; renders animation frames at the correct time interval.\n   * @param time the time at which to render a frame\n   */\n  private draw(time: number, onSecond?: VoidCallback): void {\n    // Clear the frameRequestId, as we're now rendering a fresh frame\n    this.frameRequestId = null;\n\n    const before = performance.now();\n\n    // On the first pass, make sure lastTime has a valid value\n    if (!this.lastRenderTime) {\n      this.lastRenderTime = time;\n    }\n\n    // Handle the onSecond callback\n    this.renderSecondTimer += time - this.lastRenderTime;\n    if (this.renderSecondTimer > 5000) {\n      this.renderSecondTimer = 0;\n      onSecond?.();\n    }\n\n    // Calculate the elapsed time between frames in seconds\n    const elapsedTime = (time - this.lastRenderTime) / 1000;\n    this.lastRenderTime = time;\n\n    // - Advance non-paused animations by the elapsed number of seconds\n    // - Advance any animations that require scrubbing\n    // - Advance to the first frame even when autoplay is false\n    const activeAnimations = this.animator.animations\n      .filter((a) => a.playing || a.needsScrub)\n      // The scrubbed animations must be applied first to prevent weird artifacts\n      // if the playing animations conflict with the scrubbed animating attribuates.\n      .sort((first) => (first.needsScrub ? -1 : 1));\n    for (const animation of activeAnimations) {\n      animation.advance(elapsedTime);\n      if (animation.instance.didLoop) {\n        animation.loopCount += 1;\n      }\n      animation.apply(1.0);\n    }\n\n    // - Advance non-paused state machines by the elapsed number of seconds\n    // - Advance to the first frame even when autoplay is false\n    const activeStateMachines = this.animator.stateMachines.filter(\n      (a) => a.playing,\n    );\n    for (const stateMachine of activeStateMachines) {\n      // Check for events before the current frame's state machine advance\n      const numEventsReported = stateMachine.reportedEventCount();\n      if (numEventsReported) {\n        for (let i = 0; i < numEventsReported; i++) {\n          const event = stateMachine.reportedEventAt(i);\n\n          if (event) {\n            if (event.type === RiveEventType.OpenUrl) {\n              this.eventManager.fire({\n                type: EventType.RiveEvent,\n                data: event as rc.OpenUrlEvent,\n              });\n              // Handle the event side effect if explicitly enabled\n              if (this.automaticallyHandleEvents) {\n                const newAnchorTag = document.createElement(\"a\");\n                const { url, target } = event as rc.OpenUrlEvent;\n\n                const sanitizedUrl = sanitizeUrl(url);\n                url && newAnchorTag.setAttribute(\"href\", sanitizedUrl);\n                target && newAnchorTag.setAttribute(\"target\", target);\n                if (sanitizedUrl && sanitizedUrl !== BLANK_URL) {\n                  newAnchorTag.click();\n                }\n              }\n            } else {\n              this.eventManager.fire({\n                type: EventType.RiveEvent,\n                data: event as rc.RiveEvent,\n              });\n            }\n          }\n        }\n      }\n      stateMachine.advanceAndApply(elapsedTime);\n      // stateMachine.instance.apply(this.artboard);\n    }\n\n    // Once the animations have been applied to the artboard, advance it\n    // by the elapsed time.\n    if (this.animator.stateMachines.length == 0) {\n      this.artboard.advance(elapsedTime);\n    }\n\n    const { renderer } = this;\n    // Canvas must be wiped to prevent artifacts\n    renderer.clear();\n    renderer.save();\n\n    // Update the renderer alignment if necessary\n    this.alignRenderer();\n\n    // Do not draw on 0 canvas size\n    if (!this._hasZeroSize) {\n      this.artboard.draw(renderer);\n    }\n\n    renderer.restore();\n    renderer.flush();\n\n    // Check for any animations that looped\n    this.animator.handleLooping();\n\n    // Check for any state machines that had a state change\n    this.animator.handleStateChanges();\n\n    // Report advanced time\n    this.animator.handleAdvancing(elapsedTime);\n\n    // Add duration to create frame to durations array\n    this.frameCount++;\n    const after = performance.now();\n    this.frameTimes.push(after);\n    this.durations.push(after - before);\n    while (this.frameTimes[0] <= after - 1000) {\n      this.frameTimes.shift();\n      this.durations.shift();\n    }\n\n    this._viewModelInstance?.handleCallbacks();\n\n    // Calling requestAnimationFrame will rerun draw() at the correct rate:\n    // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations\n    if (this.animator.isPlaying) {\n      // Request a new rendering frame\n      this.startRendering();\n    } else if (this.animator.isPaused) {\n      // Reset the end time so on playback it starts at the correct frame\n      this.lastRenderTime = 0;\n    } else if (this.animator.isStopped) {\n      // Reset animation instances, artboard and time\n      // TODO: implement this properly when we have instancing\n      // this.initArtboard();\n      // this.drawFrame();\n      this.lastRenderTime = 0;\n    }\n  }\n\n  /**\n   * Align the renderer\n   */\n  private alignRenderer(): void {\n    const { renderer, runtime, _layout, artboard } = this;\n    // Align things up safe in the knowledge we can restore if changed\n    renderer.align(\n      _layout.runtimeFit(runtime),\n      _layout.runtimeAlignment(runtime),\n      {\n        minX: _layout.minX,\n        minY: _layout.minY,\n        maxX: _layout.maxX,\n        maxY: _layout.maxY,\n      },\n      artboard.bounds,\n      this._devicePixelRatioUsed * _layout.layoutScaleFactor,\n    );\n  }\n\n  public get fps() {\n    return this.durations.length;\n  }\n\n  public get frameTime() {\n    if (this.durations.length === 0) {\n      return 0;\n    }\n    return (\n      this.durations.reduce((a, b) => a + b, 0) / this.durations.length\n    ).toFixed(4);\n  }\n\n  /**\n   * Cleans up all Wasm-generated objects that need to be manually destroyed:\n   * artboard instances, animation instances, state machine instances,\n   * renderer instance, file and runtime.\n   *\n   * Once this is called, you will need to initialise a new instance of the\n   * Rive class\n   */\n  public cleanup() {\n    this.destroyed = true;\n    // Stop the renderer if it hasn't already been stopped.\n    this.stopRendering();\n    // Clean up any artboard, animation or state machine instances.\n    this.cleanupInstances();\n    // Remove from observer\n    if (this._observed !== null) {\n      observers.remove(this._observed);\n    }\n    this.removeRiveListeners();\n    if (this.file) {\n      this.riveFile?.cleanup();\n      this.file = null;\n    }\n    this.riveFile = null;\n    this.deleteRiveRenderer();\n    if (this._audioEventListener !== null) {\n      audioManager.remove(this._audioEventListener);\n      this._audioEventListener = null;\n    }\n    this._viewModelInstance?.cleanup();\n    this._viewModelInstance = null;\n    this._dataEnums = null;\n  }\n\n  /**\n   * Cleans up the Renderer object. Only call this API if you no longer\n   * need to render Rive content in your session.\n   */\n  public deleteRiveRenderer() {\n    this.renderer?.delete();\n    this.renderer = null;\n  }\n\n  /**\n   * Cleans up any Wasm-generated objects that need to be manually destroyed:\n   * artboard instances, animation instances, state machine instances.\n   *\n   * Once this is called, things will need to be reinitialized or bad things\n   * might happen.\n   */\n  public cleanupInstances() {\n    if (this.eventCleanup !== null) {\n      this.eventCleanup();\n    }\n    // Delete all animation and state machine instances\n    this.stop();\n    if (this.artboard) {\n      this.artboard.delete();\n      this.artboard = null;\n    }\n  }\n\n  /**\n   * Tries to query the setup Artboard for a text run node with the given name.\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @returns - TextValueRun node or undefined if the text run cannot be queried\n   */\n  private retrieveTextRun(textRunName: string): rc.TextValueRun | undefined {\n    if (!textRunName) {\n      console.warn(\"No text run name provided\");\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\"Tried to access text run, but the Artboard is null\");\n      return;\n    }\n    const textRun: rc.TextValueRun = this.artboard.textRun(textRunName);\n    if (!textRun) {\n      console.warn(\n        `Could not access a text run with name '${textRunName}' in the '${this.artboard?.name}' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.`,\n      );\n      return;\n    }\n    return textRun;\n  }\n\n  /**\n   * Returns a string from a given text run node name, or undefined if the text run\n   * cannot be queried.\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @returns - String value of the text run node or undefined\n   */\n  public getTextRunValue(textRunName: string): string | undefined {\n    const textRun = this.retrieveTextRun(textRunName);\n    return textRun ? textRun.text : undefined;\n  }\n\n  /**\n   * Sets a text value for a given text run node name if possible\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @param textRunValue - String value to set on the text run node\n   */\n  public setTextRunValue(textRunName: string, textRunValue: string): void {\n    const textRun = this.retrieveTextRun(textRunName);\n    if (textRun) {\n      textRun.text = textRunValue;\n    }\n  }\n\n  // Plays specified animations; if none specified, it unpauses everything.\n  public play(animationNames?: string | string[], autoplay?: true): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, queue up the play\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.play(animationNames, autoplay),\n      });\n      return;\n    }\n    this.animator.play(animationNames);\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    this.setupRiveListeners();\n    this.startRendering();\n  }\n\n  // Pauses specified animations; if none specified, pauses all.\n  public pause(animationNames?: string | string[]): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.pause(animationNames),\n      });\n      return;\n    }\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    this.animator.pause(animationNames);\n  }\n\n  public scrub(animationNames?: string | string[], value?: number): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.scrub(animationNames, value),\n      });\n      return;\n    }\n\n    // Scrub the animation time; we draw a single frame here so that if\n    // nothing's currently playing, the scrubbed animation is still rendered/\n    this.animator.scrub(animationNames, value || 0);\n    this.drawFrame();\n  }\n\n  // Stops specified animations; if none specifies, stops them all.\n  public stop(animationNames?: string | string[] | undefined): void {\n    animationNames = mapToStringArray(animationNames);\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.stop(animationNames),\n      });\n      return;\n    }\n    // If there is no artboard, this.animator will be undefined\n    if (this.animator) {\n      this.animator.stop(animationNames);\n    }\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n  }\n\n  /**\n   * Resets the animation\n   * @param artboard the name of the artboard, or default if none given\n   * @param animations the names of animations for playback\n   * @param stateMachines the names of state machines for playback\n   * @param autoplay whether to autoplay when reset, defaults to false\n   *\n   */\n  public reset(params?: RiveResetParameters): void {\n    // Get the current artboard, animations, state machines, and playback states\n    const artBoardName = params?.artboard;\n    const animationNames = mapToStringArray(params?.animations);\n    const stateMachineNames = mapToStringArray(params?.stateMachines);\n    const autoplay = params?.autoplay ?? false;\n    const autoBind = params?.autoBind ?? false;\n\n    // Stop everything and clean up\n    this.cleanupInstances();\n\n    // Reinitialize an artboard instance with the state\n    this.initArtboard(\n      artBoardName,\n      animationNames,\n      stateMachineNames,\n      autoplay,\n      autoBind,\n    );\n    this.taskQueue.process();\n  }\n\n  // Loads a new Rive file, keeping listeners in place\n  public load(params: RiveLoadParameters): void {\n    this.file = null;\n    // Stop all animations\n    this.stop();\n    // Reinitialize\n    this.init(params);\n  }\n\n  // Sets a new layout\n  public set layout(layout: Layout) {\n    this._layout = layout;\n    // If the maxX or maxY are 0, then set them to the canvas width and height\n    if (!layout.maxX || !layout.maxY) {\n      this.resizeToCanvas();\n    }\n    if (this.loaded && !this.animator.isPlaying) {\n      this.drawFrame();\n    }\n  }\n\n  /**\n   * Returns the current layout. Note that layout should be treated as\n   * immutable. If you want to change the layout, create a new one use the\n   * layout setter\n   */\n  public get layout() {\n    return this._layout;\n  }\n\n  /**\n   * Sets the layout bounds to the current canvas size; this is typically called\n   * when the canvas is resized\n   */\n  public resizeToCanvas() {\n    this._layout = this.layout.copyWith({\n      minX: 0,\n      minY: 0,\n      maxX: this.canvas.width,\n      maxY: this.canvas.height,\n    });\n  }\n\n  /**\n   * Accounts for devicePixelRatio as a multiplier to render the size of the canvas drawing surface.\n   * Uses the size of the backing canvas to set new width/height attributes. Need to re-render\n   * and resize the layout to match the new drawing surface afterwards.\n   * Useful function for consumers to include in a window resize listener.\n   *\n   * This method will set the {@link devicePixelRatioUsed} property.\n   *\n   * Optionally, you can provide a {@link customDevicePixelRatio} to provide a\n   * custom value.\n   */\n  public resizeDrawingSurfaceToCanvas(customDevicePixelRatio?: number) {\n    if (this.canvas instanceof HTMLCanvasElement && !!window) {\n      const { width, height } = this.canvas.getBoundingClientRect();\n      const dpr = customDevicePixelRatio || window.devicePixelRatio || 1;\n      this.devicePixelRatioUsed = dpr;\n      this.canvas.width = dpr * width;\n      this.canvas.height = dpr * height;\n      this.resizeToCanvas();\n      this.drawFrame();\n\n      if (this.layout.fit === Fit.Layout) {\n        const scaleFactor = this._layout.layoutScaleFactor;\n        this.artboard.width = width / scaleFactor;\n        this.artboard.height = height / scaleFactor;\n      }\n    }\n  }\n\n  // Returns the animation source, which may be undefined\n  public get source(): string {\n    return this.src;\n  }\n\n  /**\n   * Returns the name of the active artboard\n   */\n  public get activeArtboard(): string {\n    return this.artboard ? this.artboard.name : \"\";\n  }\n\n  // Returns a list of animation names on the chosen artboard\n  public get animationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded || !this.artboard) {\n      return [];\n    }\n    const animationNames: string[] = [];\n    for (let i = 0; i < this.artboard.animationCount(); i++) {\n      animationNames.push(this.artboard.animationByIndex(i).name);\n    }\n    return animationNames;\n  }\n\n  /**\n   * Returns a list of state machine names from the current artboard\n   */\n  public get stateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded || !this.artboard) {\n      return [];\n    }\n    const stateMachineNames: string[] = [];\n    for (let i = 0; i < this.artboard.stateMachineCount(); i++) {\n      stateMachineNames.push(this.artboard.stateMachineByIndex(i).name);\n    }\n    return stateMachineNames;\n  }\n\n  /**\n   * Returns the inputs for the specified instanced state machine, or an empty\n   * list if the name is invalid or the state machine is not instanced\n   * @param name the state machine name\n   * @returns the inputs for the named state machine\n   */\n  public stateMachineInputs(name: string): StateMachineInput[] {\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.loaded) {\n      return;\n    }\n    const stateMachine = this.animator.stateMachines.find(\n      (m) => m.name === name,\n    );\n    return stateMachine?.inputs;\n  }\n\n  // Returns the input with the provided name at the given path\n  private retrieveInputAtPath(\n    name: string,\n    path: string,\n  ): rc.SMIInput | undefined {\n    if (!name) {\n      console.warn(`No input name provided for path '${path}'`);\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\n        `Tried to access input: '${name}', at path: '${path}', but the Artboard is null`,\n      );\n      return;\n    }\n    const input: rc.SMIInput = this.artboard.inputByPath(name, path);\n\n    if (!input) {\n      console.warn(\n        `Could not access an input with name: '${name}', at path:'${path}'`,\n      );\n      return;\n    }\n    return input;\n  }\n\n  /**\n   * Set the boolean input with the provided name at the given path with value\n   * @param input the state machine input name\n   * @param value the value to set the input to\n   * @param path the path the input is located at an artboard level\n   */\n  public setBooleanStateAtPath(\n    inputName: string,\n    value: boolean,\n    path: string,\n  ) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Boolean) {\n      input.asBool().value = value;\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a boolean`,\n      );\n    }\n  }\n\n  /**\n   * Set the number input with the provided name at the given path with value\n   * @param input the state machine input name\n   * @param value the value to set the input to\n   * @param path the path the input is located at an artboard level\n   */\n  public setNumberStateAtPath(inputName: string, value: number, path: string) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Number) {\n      input.asNumber().value = value;\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a number`,\n      );\n    }\n  }\n\n  /**\n   * Fire the trigger with the provided name at the given path\n   * @param input the state machine input name\n   * @param path the path the input is located at an artboard level\n   */\n  public fireStateAtPath(inputName: string, path: string) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Trigger) {\n      input.asTrigger().fire();\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a trigger`,\n      );\n    }\n  }\n\n  // Returns the TextValueRun object for the provided name at the given path\n  private retrieveTextAtPath(\n    name: string,\n    path: string,\n  ): rc.TextValueRun | undefined {\n    if (!name) {\n      console.warn(`No text name provided for path '${path}'`);\n      return;\n    }\n    if (!path) {\n      console.warn(`No path provided for text '${name}'`);\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\n        `Tried to access text: '${name}', at path: '${path}', but the Artboard is null`,\n      );\n      return;\n    }\n    const text: rc.TextValueRun = this.artboard.textByPath(name, path);\n    if (!text) {\n      console.warn(\n        `Could not access text with name: '${name}', at path:'${path}'`,\n      );\n      return;\n    }\n    return text;\n  }\n\n  /**\n   * Retrieves the text value for a specified text run at a given path\n   * @param textName The name of the text run\n   * @param path The path to the text run within the artboard\n   * @returns The text value of the text run, or undefined if not found\n   *\n   * @example\n   * // Get the text value for a text run named \"title\" at one nested artboard deep\n   * const titleText = riveInstance.getTextRunValueAtPath(\"title\", \"artboard1\");\n   *\n   * @example\n   * // Get the text value for a text run named \"subtitle\" within a nested group two artboards deep\n   * const subtitleText = riveInstance.getTextRunValueAtPath(\"subtitle\", \"group/nestedGroup\");\n   *\n   * @remarks\n   * If the text run cannot be found at the specified path, a warning will be logged to the console.\n   */\n  public getTextRunValueAtPath(\n    textName: string,\n    path: string,\n  ): string | undefined {\n    const run: rc.TextValueRun = this.retrieveTextAtPath(textName, path);\n    if (!run) {\n      console.warn(\n        `Could not get text with name: '${textName}', at path:'${path}'`,\n      );\n      return;\n    }\n    return run.text;\n  }\n\n  /**\n   * Sets the text value for a specified text run at a given path\n   * @param textName The name of the text run\n   * @param value The new text value to set\n   * @param path The path to the text run within the artboard\n   * @returns void\n   *\n   * @example\n   * // Set the text value for a text run named \"title\" at one nested artboard deep\n   * riveInstance.setTextRunValueAtPath(\"title\", \"New Title\", \"artboard1\");\n   *\n   * @example\n   * // Set the text value for a text run named \"subtitle\" within a nested group two artboards deep\n   * riveInstance.setTextRunValueAtPath(\"subtitle\", \"New Subtitle\", \"group/nestedGroup\");\n   *\n   * @remarks\n   * If the text run cannot be found at the specified path, a warning will be logged to the console.\n   */\n  public setTextRunValueAtPath(textName: string, value: string, path: string) {\n    const run: rc.TextValueRun = this.retrieveTextAtPath(textName, path);\n    if (!run) {\n      console.warn(\n        `Could not set text with name: '${textName}', at path:'${path}'`,\n      );\n      return;\n    }\n    run.text = value;\n  }\n\n  // Returns a list of playing machine names\n  public get playingStateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.stateMachines\n      .filter((m) => m.playing)\n      .map((m) => m.name);\n  }\n\n  // Returns a list of playing animation names\n  public get playingAnimationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.animations.filter((a) => a.playing).map((a) => a.name);\n  }\n\n  // Returns a list of paused animation names\n  public get pausedAnimationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.animations\n      .filter((a) => !a.playing)\n      .map((a) => a.name);\n  }\n\n  /**\n   *  Returns a list of paused machine names\n   * @returns a list of state machine names that are paused\n   */\n  public get pausedStateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.stateMachines\n      .filter((m) => !m.playing)\n      .map((m) => m.name);\n  }\n\n  /**\n   * @returns true if any animation is playing\n   */\n  public get isPlaying(): boolean {\n    return this.animator.isPlaying;\n  }\n\n  /**\n   * @returns true if all instanced animations are paused\n   */\n  public get isPaused(): boolean {\n    return this.animator.isPaused;\n  }\n\n  /**\n   * @returns true if no animations are playing or paused\n   */\n  public get isStopped(): boolean {\n    return this.animator.isStopped;\n  }\n\n  /**\n   * @returns the bounds of the current artboard, or undefined if the artboard\n   * isn't loaded yet.\n   */\n  public get bounds(): Bounds {\n    return this.artboard ? this.artboard.bounds : undefined;\n  }\n\n  /**\n   * Subscribe to Rive-generated events\n   * @param type the type of event to subscribe to\n   * @param callback callback to fire when the event occurs\n   */\n  public on(type: EventType, callback: EventCallback) {\n    this.eventManager.add({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @param type the type of event to unsubscribe from\n   * @param callback the callback to unsubscribe\n   */\n  public off(type: EventType, callback: EventCallback) {\n    this.eventManager.remove({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @deprecated\n   * @param callback the callback to unsubscribe from\n   */\n  public unsubscribe(type: EventType, callback: EventCallback) {\n    console.warn(\"This function is deprecated: please use `off()` instead.\");\n    this.off(type, callback);\n  }\n\n  /**\n   * Unsubscribes all Rive listeners from an event type, or everything if no type is\n   * given\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public removeAllRiveEventListeners(type?: EventType) {\n    this.eventManager.removeAll(type);\n  }\n\n  /**\n   * Unsubscribes all listeners from an event type, or everything if no type is\n   * given\n   * @deprecated\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public unsubscribeAll(type?: EventType) {\n    console.warn(\n      \"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\",\n    );\n    this.removeAllRiveEventListeners(type);\n  }\n\n  /**\n   * Stops the rendering loop; this is different from pausing in that it doesn't\n   * change the state of any animation. It stops rendering from occurring. This\n   * is designed for situations such as when Rive isn't visible.\n   *\n   * The only way to start rendering again is to call `startRendering`.\n   * Animations that are marked as playing will start from the position that\n   * they would have been at if rendering had not been stopped.\n   */\n  public stopRendering() {\n    if (this.loaded && this.frameRequestId) {\n      if (this.runtime.cancelAnimationFrame) {\n        this.runtime.cancelAnimationFrame(this.frameRequestId);\n      } else {\n        cancelAnimationFrame(this.frameRequestId);\n      }\n      this.frameRequestId = null;\n    }\n  }\n\n  /**\n   * Starts the rendering loop if it has been previously stopped. If the\n   * renderer is already active, then this will have zero effect.\n   */\n  public startRendering() {\n    if (this.loaded && this.artboard && !this.frameRequestId) {\n      if (this.runtime.requestAnimationFrame) {\n        this.frameRequestId = this.runtime.requestAnimationFrame(\n          this._boundDraw,\n        );\n      } else {\n        this.frameRequestId = requestAnimationFrame(this._boundDraw);\n      }\n    }\n  }\n\n  /**\n   * Enables frames-per-second (FPS) reporting for the runtime\n   * If no callback is provided, Rive will append a fixed-position div at the top-right corner of\n   * the page with the FPS reading\n   * @param fpsCallback - Callback from the runtime during the RAF loop that supplies the FPS value\n   */\n  public enableFPSCounter(fpsCallback?: FPSCallback) {\n    this.runtime.enableFPSCounter(fpsCallback);\n  }\n\n  /**\n   * Disables frames-per-second (FPS) reporting for the runtime\n   */\n  public disableFPSCounter() {\n    this.runtime.disableFPSCounter();\n  }\n\n  /**\n   * Returns the contents of a Rive file: the artboards, animations, and state machines\n   */\n  public get contents(): RiveFileContents {\n    if (!this.loaded) {\n      return undefined;\n    }\n    const riveContents: RiveFileContents = {\n      artboards: [],\n    };\n    for (let i = 0; i < this.file.artboardCount(); i++) {\n      const artboard = this.file.artboardByIndex(i);\n      const artboardContents: ArtboardContents = {\n        name: artboard.name,\n        animations: [],\n        stateMachines: [],\n      };\n      for (let j = 0; j < artboard.animationCount(); j++) {\n        const animation = artboard.animationByIndex(j);\n        artboardContents.animations.push(animation.name);\n      }\n      for (let k = 0; k < artboard.stateMachineCount(); k++) {\n        const stateMachine = artboard.stateMachineByIndex(k);\n        const name = stateMachine.name;\n        const instance = new this.runtime.StateMachineInstance(\n          stateMachine,\n          artboard,\n        );\n        const inputContents: StateMachineInputContents[] = [];\n        for (let l = 0; l < instance.inputCount(); l++) {\n          const input = instance.input(l);\n          inputContents.push({ name: input.name, type: input.type });\n        }\n        artboardContents.stateMachines.push({\n          name: name,\n          inputs: inputContents,\n        });\n      }\n      riveContents.artboards.push(artboardContents);\n    }\n    return riveContents;\n  }\n\n  /**\n   * Getter / Setter for the volume of the artboard\n   */\n  public get volume(): number {\n    if (this.artboard && this.artboard.volume !== this._volume) {\n      this._volume = this.artboard.volume;\n    }\n    return this._volume;\n  }\n\n  public set volume(value: number) {\n    this._volume = value;\n    if (this.artboard) {\n      this.artboard.volume = value * audioManager.systemVolume;\n    }\n  }\n\n  /**\n   * The width of the artboard.\n   *\n   * This will return 0 if the artboard is not loaded yet and a custom\n   * width has not been set.\n   *\n   * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n   * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard width is\n   * automatically set.\n   */\n  public get artboardWidth(): number {\n    if (this.artboard) {\n      return this.artboard.width;\n    }\n    return this._artboardWidth ?? 0;\n  }\n\n  public set artboardWidth(value: number) {\n    this._artboardWidth = value;\n    if (this.artboard) {\n      this.artboard.width = value;\n    }\n  }\n\n  /**\n   * The height of the artboard.\n   *\n   * This will return 0 if the artboard is not loaded yet and a custom\n   * height has not been set.\n   *\n   * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n   * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard height is\n   * automatically set.\n   */\n  public get artboardHeight(): number {\n    if (this.artboard) {\n      return this.artboard.height;\n    }\n    return this._artboardHeight ?? 0;\n  }\n\n  public set artboardHeight(value: number) {\n    this._artboardHeight = value;\n\n    if (this.artboard) {\n      this.artboard.height = value;\n    }\n  }\n\n  /**\n   * Reset the artboard size to its original values.\n   */\n  public resetArtboardSize() {\n    if (this.artboard) {\n      this.artboard.resetArtboardSize();\n      this._artboardWidth = this.artboard.width;\n      this._artboardHeight = this.artboard.height;\n    } else {\n      // If the artboard isn't loaded, we need to reset the custom width and height\n      this._artboardWidth = undefined;\n      this._artboardHeight = undefined;\n    }\n  }\n\n  /**\n   * The device pixel ratio used in rendering and canvas/artboard resizing.\n   *\n   * This value will be overidden by the device pixel ratio used in\n   * {@link resizeDrawingSurfaceToCanvas}. If you use that method, do not set this value.\n   */\n  public get devicePixelRatioUsed(): number {\n    return this._devicePixelRatioUsed;\n  }\n\n  public set devicePixelRatioUsed(value: number) {\n    this._devicePixelRatioUsed = value;\n  }\n\n  /**\n   * Initialize the data context with the view model instance.\n   */\n  public bindViewModelInstance(viewModelInstance: ViewModelInstance | null) {\n    if (this.artboard && !this.destroyed) {\n      if (viewModelInstance && viewModelInstance.runtimeInstance) {\n        viewModelInstance.internalIncrementReferenceCount();\n        this._viewModelInstance?.cleanup();\n        this._viewModelInstance = viewModelInstance;\n        if (this.animator.stateMachines.length > 0) {\n          this.animator.stateMachines.forEach((stateMachine) =>\n            stateMachine.bindViewModelInstance(viewModelInstance),\n          );\n        } else {\n          this.artboard.bindViewModelInstance(\n            viewModelInstance.runtimeInstance,\n          );\n        }\n      }\n    }\n  }\n\n  public get viewModelInstance(): ViewModelInstance | null {\n    return this._viewModelInstance;\n  }\n\n  public viewModelByIndex(index: number): ViewModel | null {\n    const viewModel = this.file.viewModelByIndex(index);\n    if (viewModel !== null) {\n      return new ViewModel(viewModel);\n    }\n    return null;\n  }\n\n  public viewModelByName(name: string): ViewModel | null {\n    const viewModel = this.file.viewModelByName(name);\n    if (viewModel !== null) {\n      return new ViewModel(viewModel);\n    }\n    return null;\n  }\n\n  public enums(): DataEnum[] {\n    if (this._dataEnums === null) {\n      const dataEnums = this.file.enums();\n      this._dataEnums = dataEnums.map((dataEnum) => {\n        return new DataEnum(dataEnum);\n      });\n    }\n    return this._dataEnums;\n  }\n\n  public defaultViewModel(): ViewModel | null {\n    if (this.artboard) {\n      const viewModel = this.file.defaultArtboardViewModel(this.artboard);\n      if (viewModel) {\n        return new ViewModel(viewModel);\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @deprecated This function is deprecated. For better stability and memory management\n   * use `getBindableArtboard()` instead.\n   * @param {string} name - The name of the artboard.\n   * @returns {Artboard} The artboard to bind to.\n   */\n  public getArtboard(name: string): Artboard | null {\n    return this.riveFile?.getArtboard(name) ?? null;\n  }\n\n  public getBindableArtboard(name: string): BindableArtboard | null {\n    return this.riveFile?.getBindableArtboard(name) ?? null;\n  }\n\n  public getDefaultBindableArtboard(): BindableArtboard | null {\n    return this.riveFile?.getDefaultBindableArtboard() ?? null;\n  }\n}\n\nexport class ViewModel {\n  private _viewModel: rc.ViewModel;\n\n  constructor(viewModel: rc.ViewModel) {\n    this._viewModel = viewModel;\n  }\n\n  public get instanceCount(): number {\n    return this._viewModel.instanceCount;\n  }\n\n  public get name(): string {\n    return this._viewModel.name;\n  }\n\n  public instanceByIndex(index: number): ViewModelInstance | null {\n    const instance = this._viewModel.instanceByIndex(index);\n    if (instance !== null) {\n      const viewModelInstance = new ViewModelInstance(instance, null);\n      createFinalization(viewModelInstance, instance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public instanceByName(name: string): ViewModelInstance | null {\n    const instance = this._viewModel.instanceByName(name);\n    if (instance !== null) {\n      const viewModelInstance = new ViewModelInstance(instance, null);\n      createFinalization(viewModelInstance, instance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public defaultInstance(): ViewModelInstance | null {\n    const runtimeInstance = this._viewModel.defaultInstance();\n    if (runtimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(runtimeInstance, null);\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public instance(): ViewModelInstance | null {\n    const runtimeInstance = this._viewModel.instance();\n    if (runtimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(runtimeInstance, null);\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public get properties(): rc.ViewModelProperty[] {\n    return this._viewModel.getProperties();\n  }\n\n  public get instanceNames(): string[] {\n    return this._viewModel.getInstanceNames();\n  }\n}\n\nexport class DataEnum {\n  private _dataEnum: rc.DataEnum;\n\n  constructor(dataEnum: rc.DataEnum) {\n    this._dataEnum = dataEnum;\n  }\n\n  public get name(): string {\n    return this._dataEnum.name;\n  }\n\n  public get values(): string[] {\n    return this._dataEnum.values;\n  }\n}\n\nenum PropertyType {\n  Number = \"number\",\n  String = \"string\",\n  Boolean = \"boolean\",\n  Color = \"color\",\n  Trigger = \"trigger\",\n  Enum = \"enum\",\n  List = \"list\",\n  Image = \"image\",\n  Artboard = \"artboard\",\n}\n\nexport class ViewModelInstance {\n  private _runtimeInstance: rc.ViewModelInstance | null;\n\n  private _parents: ViewModelInstance[] = [];\n\n  private _children: ViewModelInstance[] = [];\n\n  private _viewModelInstances: Map<string, ViewModelInstance> = new Map();\n\n  private _propertiesWithCallbacks: ViewModelInstanceValue[] = [];\n\n  private _referenceCount = 0;\n\n  public selfUnref: boolean = false;\n\n  constructor(\n    runtimeInstance: rc.ViewModelInstance,\n    parent: ViewModelInstance | null,\n  ) {\n    this._runtimeInstance = runtimeInstance;\n    if (parent !== null) {\n      this._parents.push(parent);\n    }\n  }\n\n  public get runtimeInstance(): rc.ViewModelInstance | null {\n    return this._runtimeInstance;\n  }\n\n  public get nativeInstance(): rc.ViewModelInstance | null {\n    return this._runtimeInstance;\n  }\n\n  public handleCallbacks() {\n    if (this._propertiesWithCallbacks.length !== 0) {\n      this._propertiesWithCallbacks.forEach((property) => {\n        property.handleCallbacks();\n      });\n      this._propertiesWithCallbacks.forEach((property) => {\n        property.clearChanges();\n      });\n    }\n    this._children.forEach((child) => child.handleCallbacks());\n  }\n\n  public addParent(parent: ViewModelInstance) {\n    if (!this._parents.includes(parent)) {\n      this._parents.push(parent);\n      if (\n        this._propertiesWithCallbacks.length > 0 ||\n        this._children.length > 0\n      ) {\n        parent.addToViewModelCallbacks(this);\n      }\n    }\n  }\n\n  public removeParent(parent: ViewModelInstance) {\n    const index = this._parents.indexOf(parent);\n    if (index !== -1) {\n      const parent = this._parents[index];\n      parent.removeFromViewModelCallbacks(this);\n      this._parents.splice(index, 1);\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public addToPropertyCallbacks(property: ViewModelInstanceValue) {\n    if (!this._propertiesWithCallbacks.includes(property)) {\n      this._propertiesWithCallbacks.push(property);\n      if (this._propertiesWithCallbacks.length > 0) {\n        this._parents.forEach((parent) => {\n          parent.addToViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public removeFromPropertyCallbacks(property: ViewModelInstanceValue) {\n    if (this._propertiesWithCallbacks.includes(property)) {\n      this._propertiesWithCallbacks = this._propertiesWithCallbacks.filter(\n        (prop) => prop !== property,\n      );\n      if (\n        this._children.length === 0 &&\n        this._propertiesWithCallbacks.length === 0\n      ) {\n        this._parents.forEach((parent) => {\n          parent.removeFromViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public addToViewModelCallbacks(instance: ViewModelInstance) {\n    if (!this._children.includes(instance)) {\n      this._children.push(instance);\n      this._parents.forEach((parent) => {\n        parent.addToViewModelCallbacks(this);\n      });\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public removeFromViewModelCallbacks(instance: ViewModelInstance) {\n    if (this._children.includes(instance)) {\n      this._children = this._children.filter((child) => child !== instance);\n      if (\n        this._children.length === 0 &&\n        this._propertiesWithCallbacks.length === 0\n      ) {\n        this._parents.forEach((parent) => {\n          parent.removeFromViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  private clearCallbacks() {\n    this._propertiesWithCallbacks.forEach((property) => {\n      property.clearCallbacks();\n    });\n  }\n\n  private propertyFromPath(\n    path: string,\n    type: PropertyType,\n  ): ViewModelInstanceValue | null {\n    const pathSegments = path.split(\"/\");\n    return this.propertyFromPathSegments(pathSegments, 0, type);\n  }\n\n  private viewModelFromPathSegments(\n    pathSegments: string[],\n    index: number,\n  ): ViewModelInstance | null {\n    const viewModelInstance = this.internalViewModelInstance(\n      pathSegments[index],\n    );\n    if (viewModelInstance !== null) {\n      if (index == pathSegments.length - 1) {\n        return viewModelInstance;\n      } else {\n        return viewModelInstance.viewModelFromPathSegments(\n          pathSegments,\n          index++,\n        );\n      }\n    }\n    return null;\n  }\n\n  private propertyFromPathSegments(\n    pathSegments: string[],\n    index: number,\n    type: PropertyType,\n  ): ViewModelInstanceValue | null {\n    if (index < pathSegments.length - 1) {\n      const viewModelInstance = this.internalViewModelInstance(\n        pathSegments[index],\n      );\n      if (viewModelInstance !== null) {\n        return viewModelInstance.propertyFromPathSegments(\n          pathSegments,\n          index + 1,\n          type,\n        );\n      } else {\n        return null;\n      }\n    }\n    let instance: rc.ViewModelInstanceValue | null = null;\n    switch (type) {\n      case PropertyType.Number:\n        instance = this._runtimeInstance?.number(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceNumber(\n            instance as rc.ViewModelInstanceNumber,\n            this,\n          );\n        }\n        break;\n      case PropertyType.String:\n        instance = this._runtimeInstance?.string(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceString(\n            instance as rc.ViewModelInstanceString,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Boolean:\n        instance = this._runtimeInstance?.boolean(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceBoolean(\n            instance as rc.ViewModelInstanceBoolean,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Color:\n        instance = this._runtimeInstance?.color(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceColor(\n            instance as rc.ViewModelInstanceColor,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Trigger:\n        instance = this._runtimeInstance?.trigger(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceTrigger(\n            instance as rc.ViewModelInstanceTrigger,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Enum:\n        instance = this._runtimeInstance?.enum(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceEnum(\n            instance as rc.ViewModelInstanceEnum,\n            this,\n          );\n        }\n        break;\n      case PropertyType.List:\n        instance = this._runtimeInstance?.list(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceList(\n            instance as rc.ViewModelInstanceList,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Image:\n        instance = this._runtimeInstance?.image(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceAssetImage(\n            instance as rc.ViewModelInstanceAssetImage,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Artboard:\n        instance = this._runtimeInstance?.artboard(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceArtboard(\n            instance as rc.ViewModelInstanceArtboard,\n            this,\n          );\n        }\n        break;\n    }\n    return null;\n  }\n\n  private internalViewModelInstance(name: string): ViewModelInstance | null {\n    if (this._viewModelInstances.has(name)) {\n      return this._viewModelInstances.get(name)!;\n    }\n    const viewModelRuntimeInstance = this._runtimeInstance?.viewModel(name);\n    if (viewModelRuntimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(\n        viewModelRuntimeInstance!,\n        this,\n      );\n      createFinalization(viewModelInstance, viewModelRuntimeInstance);\n      viewModelInstance.internalIncrementReferenceCount();\n      this._viewModelInstances.set(name, viewModelInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  /**\n   * method to access a property instance of type number belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the number property\n   */\n  public number(path: string): ViewModelInstanceNumber | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Number,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceNumber;\n  }\n\n  /**\n   * method to access a property instance of type string belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the string property\n   */\n  public string(path: string): ViewModelInstanceString | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.String,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceString | null;\n  }\n\n  /**\n   * method to access a property instance of type boolean belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the boolean property\n   */\n  public boolean(path: string): ViewModelInstanceBoolean | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Boolean,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceBoolean | null;\n  }\n\n  /**\n   * method to access a property instance of type color belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the ttrigger property\n   */\n  public color(path: string): ViewModelInstanceColor | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Color,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceColor | null;\n  }\n\n  /**\n   * method to access a property instance of type trigger belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the trigger property\n   */\n  public trigger(path: string): ViewModelInstanceTrigger | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Trigger,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceTrigger | null;\n  }\n\n  /**\n   * method to access a property instance of type enum belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the enum property\n   */\n  public enum(path: string): ViewModelInstanceEnum | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Enum,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceEnum | null;\n  }\n\n  /**\n   * method to access a property instance of type list belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the list property\n   */\n  public list(path: string): ViewModelInstanceList | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.List,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceList | null;\n  }\n\n  /**\n   * method to access a view model property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the image property\n   */\n  public image(path: string): ViewModelInstanceAssetImage | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Image,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceAssetImage | null;\n  }\n\n  /**\n   * method to access an artboard property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the image property\n   */\n  public artboard(path: string): ViewModelInstanceArtboard | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Artboard,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceArtboard | null;\n  }\n\n  /**\n   * method to access a view model property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the view model property\n   */\n  public viewModel(path: string): ViewModelInstance | null {\n    const pathSegments = path.split(\"/\");\n    const parentViewModelInstance =\n      pathSegments.length > 1\n        ? this.viewModelFromPathSegments(\n            pathSegments.slice(0, pathSegments.length - 1),\n            0,\n          )\n        : this;\n    if (parentViewModelInstance != null) {\n      return parentViewModelInstance.internalViewModelInstance(\n        pathSegments[pathSegments.length - 1],\n      );\n    }\n    return null;\n  }\n\n  public internalReplaceViewModel(\n    name: string,\n    value: ViewModelInstance,\n  ): boolean {\n    if (value.runtimeInstance !== null) {\n      const result =\n        this._runtimeInstance?.replaceViewModel(name, value.runtimeInstance!) ||\n        false;\n      if (result) {\n        value.internalIncrementReferenceCount();\n        const oldInstance = this.internalViewModelInstance(name);\n        if (oldInstance !== null) {\n          oldInstance.removeParent(this);\n          if (this._children.includes(oldInstance)) {\n            this._children = this._children.filter(\n              (child) => child !== oldInstance,\n            );\n          }\n          oldInstance.cleanup();\n        }\n        this._viewModelInstances.set(name, value);\n        value.addParent(this);\n      }\n      return result;\n    }\n    return false;\n  }\n\n  /**\n   * method to replace a view model property with another view model value\n   * @param path - path to the view model property\n   * @param value - view model that will replace the original\n   */\n  public replaceViewModel(path: string, value: ViewModelInstance): boolean {\n    const pathSegments = path.split(\"/\");\n    const viewModelInstance =\n      pathSegments.length > 1\n        ? this.viewModelFromPathSegments(\n            pathSegments.slice(0, pathSegments.length - 1),\n            0,\n          )\n        : this;\n    return (\n      viewModelInstance?.internalReplaceViewModel(\n        pathSegments[pathSegments.length - 1],\n        value,\n      ) ?? false\n    );\n  }\n\n  /*\n   * method to add one to the reference counter of the instance.\n   * Use if the file owning the reference is destroyed but the instance needs to stay around\n   */\n  public incrementReferenceCount() {\n    this._referenceCount++;\n    this._runtimeInstance?.incrementReferenceCount();\n  }\n\n  /*\n   * method to subtract one to the reference counter of the instance.\n   * Use if incrementReferenceCount has been called\n   */\n  public decrementReferenceCount() {\n    this._referenceCount--;\n    this._runtimeInstance?.decrementReferenceCount();\n  }\n\n  public get properties(): rc.ViewModelProperty[] {\n    return (\n      this._runtimeInstance?.getProperties().map((prop) => ({ ...prop })) || []\n    );\n  }\n\n  public internalIncrementReferenceCount() {\n    this._referenceCount++;\n  }\n\n  public cleanup() {\n    this._referenceCount--;\n    if (this._referenceCount <= 0) {\n      if (this.selfUnref) {\n        this._runtimeInstance?.unref();\n      }\n      this._runtimeInstance = null;\n      this.clearCallbacks();\n      this._propertiesWithCallbacks = [];\n      this._viewModelInstances.forEach((value) => {\n        value.cleanup();\n      });\n      this._viewModelInstances.clear();\n      const children = [...this._children];\n      this._children.length = 0;\n      const parents = [...this._parents];\n      this._parents.length = 0;\n      children.forEach((child) => {\n        child.removeParent(this);\n      });\n      parents.forEach((parent) => {\n        parent.removeFromViewModelCallbacks(this);\n      });\n    }\n  }\n}\n\nexport class ViewModelInstanceValue {\n  protected _parentViewModel: ViewModelInstance;\n  protected callbacks: EventCallback[] = [];\n  protected _viewModelInstanceValue: rc.ViewModelInstanceValue;\n  constructor(instance: rc.ViewModelInstanceValue, parent: ViewModelInstance) {\n    this._viewModelInstanceValue = instance;\n    this._parentViewModel = parent;\n  }\n\n  public on(callback: EventCallback) {\n    // Since we don't clean the changed flag for properties that don't have listeners,\n    // we clean it the first time we add a listener to it\n    if (this.callbacks.length === 0) {\n      this._viewModelInstanceValue.clearChanges();\n    }\n    if (!this.callbacks.includes(callback)) {\n      this.callbacks.push(callback);\n      this._parentViewModel.addToPropertyCallbacks(this);\n    }\n  }\n  public off(callback?: EventCallback) {\n    if (!callback) {\n      this.callbacks.length = 0;\n    } else {\n      this.callbacks = this.callbacks.filter((cb) => cb !== callback);\n    }\n    if (this.callbacks.length === 0) {\n      this._parentViewModel.removeFromPropertyCallbacks(this);\n    }\n  }\n  public internalHandleCallback(callback: Function) {}\n\n  public handleCallbacks() {\n    if (this._viewModelInstanceValue.hasChanged) {\n      this.callbacks.forEach((callback) => {\n        this.internalHandleCallback(callback);\n      });\n    }\n  }\n\n  public clearChanges() {\n    this._viewModelInstanceValue.clearChanges();\n  }\n\n  public clearCallbacks() {\n    this.callbacks.length = 0;\n  }\n\n  public get name() {\n    return this._viewModelInstanceValue.name;\n  }\n}\n\nexport class ViewModelInstanceString extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceString, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): string {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceString).value;\n  }\n\n  public set value(val: string) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceString).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceNumber extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceNumber, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceNumber).value;\n  }\n\n  public set value(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceNumber).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceBoolean extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceBoolean,\n    parent: ViewModelInstance,\n  ) {\n    super(instance, parent);\n  }\n\n  public get value(): boolean {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceBoolean).value;\n  }\n\n  public set value(val: boolean) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceBoolean).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceTrigger extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceTrigger,\n    parent: ViewModelInstance,\n  ) {\n    super(instance, parent);\n  }\n\n  public trigger(): void {\n    return (\n      this._viewModelInstanceValue as rc.ViewModelInstanceTrigger\n    ).trigger();\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceEnum extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceEnum, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): string {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).value;\n  }\n\n  public set value(val: string) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).value = val;\n  }\n\n  public set valueIndex(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).valueIndex = val;\n  }\n\n  public get valueIndex(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum)\n      .valueIndex;\n  }\n\n  public get values(): string[] {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).values;\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceList extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceList, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get length(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceList).size;\n  }\n\n  public addInstance(instance: ViewModelInstance) {\n    if (instance.runtimeInstance != null) {\n      (this._viewModelInstanceValue as rc.ViewModelInstanceList).addInstance(\n        instance.runtimeInstance!,\n      );\n      instance.addParent(this._parentViewModel);\n    }\n  }\n\n  public addInstanceAt(instance: ViewModelInstance, index: number): boolean {\n    if (instance.runtimeInstance != null) {\n      if (\n        (\n          this._viewModelInstanceValue as rc.ViewModelInstanceList\n        ).addInstanceAt(instance.runtimeInstance!, index)\n      ) {\n        instance.addParent(this._parentViewModel);\n        return true;\n      }\n    }\n    return false;\n  }\n\n  public removeInstance(instance: ViewModelInstance) {\n    if (instance.runtimeInstance != null) {\n      (this._viewModelInstanceValue as rc.ViewModelInstanceList).removeInstance(\n        instance.runtimeInstance!,\n      );\n      instance.removeParent(this._parentViewModel);\n    }\n  }\n\n  public removeInstanceAt(index: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceList).removeInstanceAt(\n      index,\n    );\n  }\n\n  public instanceAt(index: number): ViewModelInstance | null {\n    const runtimeInstance = (\n      this._viewModelInstanceValue as rc.ViewModelInstanceList\n    ).instanceAt(index);\n    if (runtimeInstance != null) {\n      const viewModelInstance = new ViewModelInstance(\n        runtimeInstance,\n        this._parentViewModel,\n      );\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public swap(a: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceList).swap(a, b);\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceColor extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceColor, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceColor).value;\n  }\n\n  public set value(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).value = val;\n  }\n\n  public rgb(r: number, g: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).rgb(r, g, b);\n  }\n\n  public rgba(r: number, g: number, b: number, a: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).argb(\n      a,\n      r,\n      g,\n      b,\n    );\n  }\n\n  public argb(a: number, r: number, g: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).argb(\n      a,\n      r,\n      g,\n      b,\n    );\n  }\n\n  // Value 0 to 255\n  public alpha(a: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).alpha(a);\n  }\n\n  // Value 0 to 1\n  public opacity(o: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).alpha(\n      Math.round(Math.max(0, Math.min(1, o)) * 255),\n    );\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceAssetImage extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceAssetImage,\n    root: ViewModelInstance,\n  ) {\n    super(instance, root);\n  }\n\n  public set value(image: rc.Image | null) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceAssetImage).value(\n      image?.nativeImage ?? null,\n    );\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceArtboard extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceArtboard, root: ViewModelInstance) {\n    super(instance, root);\n  }\n\n  public set value(artboard: BaseArtboard | null) {\n    let bindableArtboard: BindableArtboard;\n    if (artboard.isBindableArtboard) {\n      bindableArtboard = artboard as BindableArtboard;\n    } else {\n      bindableArtboard = (\n        artboard as Artboard\n      ).file.internalBindableArtboardFromArtboard(\n        (artboard as Artboard).nativeArtboard,\n      );\n    }\n    (this._viewModelInstanceValue as rc.ViewModelInstanceArtboard).value(\n      bindableArtboard?.nativeArtboard ?? null,\n    );\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\n/**\n * Contents of a state machine input\n */\ninterface StateMachineInputContents {\n  name: string;\n  type: StateMachineInputType;\n  initialValue?: boolean | number;\n}\n\n/**\n * Contents of a state machine\n */\ninterface StateMachineContents {\n  name: string;\n  inputs: StateMachineInputContents[];\n}\n\n/**\n * Contents of an artboard\n */\ninterface ArtboardContents {\n  animations: string[];\n  stateMachines: StateMachineContents[];\n  name: string;\n}\n\n/**\n * contents of a Rive file\n */\ninterface RiveFileContents {\n  artboards?: ArtboardContents[];\n}\n\n// Loads Rive data from a URI via fetch.\nconst loadRiveFile = async (src: string): Promise<ArrayBuffer> => {\n  const req = new Request(src);\n  const res = await fetch(req);\n  const buffer = await res.arrayBuffer();\n  return buffer;\n};\n\n// #endregion\n\n// #region utility functions\n\n/*\n * Utility function to ensure an object is a string array\n */\nconst mapToStringArray = (obj?: string[] | string | undefined): string[] => {\n  if (typeof obj === \"string\") {\n    return [obj];\n  } else if (obj instanceof Array) {\n    return obj;\n  }\n  // If obj is undefined, return empty array\n  return [];\n};\n\n// #endregion\n\n// #region testing utilities\n\n// Exports to only be used for tests\nexport const Testing = {\n  EventManager: EventManager,\n  TaskQueueManager: TaskQueueManager,\n};\n\n// #endregion\n\n// #region asset loaders\n\n/**\n * Decodes bytes into an audio asset.\n *\n * Be sure to call `.unref()` on the audio once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeAudio = async (bytes: Uint8Array): Promise<rc.Audio> => {\n  const decodedPromise = new Promise<rc.Audio>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeAudio(bytes, resolve);\n    }),\n  );\n  const audio: rc.Audio = await decodedPromise;\n  const audioWrapper = new AudioWrapper(audio);\n  finalizationRegistry.register(audioWrapper, audio);\n  return audioWrapper;\n};\n\n/**\n * Decodes bytes into an image.\n *\n * Be sure to call `.unref()` on the image once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeImage = async (bytes: Uint8Array): Promise<rc.Image> => {\n  const decodedPromise = new Promise<rc.Image>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeImage(bytes, resolve);\n    }),\n  );\n  const image: rc.Image = await decodedPromise;\n  const imageWrapper = new ImageWrapper(image);\n  finalizationRegistry.register(imageWrapper, image);\n  return imageWrapper;\n};\n\n/**\n * Decodes bytes into a font.\n *\n * Be sure to call `.unref()` on the font once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeFont = async (bytes: Uint8Array): Promise<rc.Font> => {\n  const decodedPromise = new Promise<rc.Font>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeFont(bytes, resolve);\n    }),\n  );\n  const font: rc.Font = await decodedPromise;\n  const fontWrapper = new FontWrapper(font);\n  finalizationRegistry.register(fontWrapper, font);\n  return fontWrapper;\n};\n\n// #endregion\n"]}