@solidtv/renderer 1.4.2 → 1.5.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/src/core/lib/WebGlContextWrapper.d.ts +53 -3
  2. package/dist/src/core/lib/WebGlContextWrapper.js +96 -2
  3. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  4. package/dist/src/core/renderers/CoreRenderer.d.ts +36 -0
  5. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  6. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +2 -1
  7. package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -1
  8. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  9. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +10 -1
  10. package/dist/src/core/renderers/webgl/WebGlRenderer.js +19 -1
  11. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  12. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +22 -0
  13. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -0
  14. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  15. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +1 -1
  16. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -0
  17. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  18. package/dist/src/main-api/Renderer.d.ts +16 -0
  19. package/dist/src/main-api/Renderer.js +17 -0
  20. package/dist/src/main-api/Renderer.js.map +1 -1
  21. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  22. package/package.json +1 -1
  23. package/src/core/lib/WebGlContextWrapper.ts +103 -3
  24. package/src/core/renderers/CoreRenderer.ts +37 -0
  25. package/src/core/renderers/canvas/CanvasRenderer.test.ts +14 -0
  26. package/src/core/renderers/canvas/CanvasRenderer.ts +15 -1
  27. package/src/core/renderers/webgl/WebGlRenderer.ts +22 -1
  28. package/src/core/renderers/webgl/WebGlShaderProgram.ts +70 -0
  29. package/src/core/renderers/webgl/internal/RendererUtils.ts +5 -1
  30. package/src/main-api/Renderer.ts +19 -0
@@ -1 +1 @@
1
- {"fileNames":["../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/env.d.ts","../src/core/lib/contextspy.ts","../src/utils.ts","../src/common/ianimationcontroller.ts","../src/core/utils.ts","../src/core/animations/animationmanager.ts","../src/core/renderers/coreshadernode.ts","../src/core/renderers/coreshaderprogram.ts","../src/core/coreshadermanager.ts","../src/core/lib/webglcontextwrapper.ts","../src/core/renderers/webgl/internal/shaderutils.ts","../src/core/lib/utils.ts","../src/core/lib/texturecompression.ts","../src/core/lib/texturesvg.ts","../src/core/textures/imagetexture.ts","../src/core/textures/subtexture.ts","../src/common/ieventemitter.ts","../src/common/eventemitter.ts","../src/core/texturememorymanager.ts","../src/core/renderers/corecontexttexture.ts","../src/core/textureerror.ts","../src/core/textures/texture.ts","../src/core/renderers/corerenderer.ts","../src/core/lib/matrix3d.ts","../src/core/coretextnode.ts","../src/core/renderers/corerenderop.ts","../src/core/renderers/webgl/internal/rendererutils.ts","../src/core/renderers/webgl/webglctxtexture.ts","../src/core/renderers/webgl/webglctxsubtexture.ts","../src/core/renderers/webgl/internal/buffercollection.ts","../src/core/renderers/webgl/webglshadernode.ts","../src/core/shaders/webgl/default.ts","../src/core/renderers/webgl/webglshaderprogram.ts","../src/core/textures/rendertexture.ts","../src/core/renderers/webgl/webglctxrendertexture.ts","../src/core/renderers/webgl/webglrenderer.ts","../src/core/renderers/webgl/sdfrenderop.ts","../src/core/text-rendering/textrenderer.ts","../src/core/text-rendering/textlayoutengine.ts","../src/main-api/utils.ts","../src/core/textures/colortexture.ts","../src/core/platforms/web/webplatform.ts","../src/core/animations/coreanimation.ts","../src/main-api/inode.ts","../src/core/lib/colorparser.ts","../src/core/renderers/canvas/canvastexture.ts","../src/core/lib/colorcache.ts","../src/core/renderers/canvas/canvasshadernode.ts","../src/core/renderers/canvas/canvasrenderer.ts","../src/main-api/inspector.ts","../src/main-api/renderer.ts","../src/core/stage.ts","../src/core/platforms/platform.ts","../src/core/lib/validateimagebitmap.ts","../src/core/lib/imageworker.ts","../src/core/textures/noisetexture.ts","../src/core/coretexturemanager.ts","../src/core/lib/rendercoords.ts","../src/core/autosizer.ts","../src/core/lib/collectionutils.ts","../src/core/corenode.ts","../src/common/commontypes.ts","../src/core/shaders/utils.ts","../src/core/shaders/templates/blurtemplate.ts","../src/core/shaders/canvas/blur.ts","../src/core/shaders/templates/bordertemplate.ts","../src/core/shaders/canvas/border.ts","../src/core/shaders/templates/holepunchtemplate.ts","../src/core/shaders/canvas/utils/render.ts","../src/core/shaders/canvas/holepunch.ts","../src/core/shaders/templates/lineargradienttemplate.ts","../src/core/shaders/canvas/lineargradient.ts","../src/core/shaders/templates/radialgradienttemplate.ts","../src/core/shaders/canvas/radialgradient.ts","../src/core/shaders/templates/radialprogresstemplate.ts","../src/core/shaders/canvas/radialprogress.ts","../src/core/shaders/templates/roundedtemplate.ts","../src/core/shaders/canvas/rounded.ts","../src/core/shaders/templates/roundedwithbordertemplate.ts","../src/core/shaders/canvas/roundedwithborder.ts","../src/core/shaders/templates/shadowtemplate.ts","../src/core/shaders/templates/roundedwithborderandshadowtemplate.ts","../src/core/shaders/canvas/shadow.ts","../src/core/shaders/canvas/roundedwithborderandshadow.ts","../src/core/shaders/templates/roundedwithshadowtemplate.ts","../src/core/shaders/canvas/roundedwithshadow.ts","../src/core/shaders/webgl/blur.ts","../src/core/shaders/webgl/border.ts","../src/core/shaders/webgl/holepunch.ts","../src/core/shaders/webgl/lineargradient.ts","../src/core/shaders/webgl/radialgradient.ts","../src/core/shaders/webgl/radialprogress.ts","../src/core/shaders/webgl/rounded.ts","../src/core/shaders/webgl/roundedwithborder.ts","../src/core/shaders/webgl/roundedwithborderandshadow.ts","../src/core/shaders/webgl/roundedwithshadow.ts","../src/core/shaders/webgl/sdfshader.ts","../src/core/shaders/webgl/shadow.ts","../src/core/text-rendering/utils.ts","../src/core/text-rendering/canvasfonthandler.ts","../src/core/text-rendering/canvastextrenderer.ts","../src/core/text-rendering/sdffonthandler.ts","../src/core/text-rendering/sdftextrenderer.ts","../exports/canvas-shaders.ts","../exports/canvas.ts","../exports/index.ts","../exports/inspector.ts","../exports/utils.ts","../exports/webgl-shaders.ts","../exports/webgl.ts"],"fileIdsList":[[106,123,125,128,130,132,134,136,138,141,142,144],[104,106,107,159],[62,63,65,69,73,77,79,80,86,91,94,101,102,108,109,110,115,119,120,124,126,129,131,135,139],[108],[61,63,70,76],[89,90,145,146,147,148,149,150,151,152,153,154,156],[86,89,94,161,167],[79,119],[75],[61,62,63,119],[63,64,119],[70,119],[61,62,64,65,70,76,80,81,82,86,88,94,101,110,115,116,117,118,120],[61,65,66,110],[61,70,80,81,82,96,110,119,120],[73,74,76,79,80,81,92,99,110,111,112,113,114],[119],[103],[80,112],[68,80],[61,70,80],[69],[111],[110],[110,111],[74,78,80,81,103,104,105,106,119,120],[65,105,110,119],[61,78,80,103,120],[77,80],[60,65,66,78,80,110,119],[61,110,119],[68],[61,70,84,86,88,89,94,110,120],[68,70,77,86,92,120],[61,68,74,77,80,86,120],[61,68,70,71,77,78,80,85,120],[61,68,70,74,78,80,81,85,86,87,88,89,90,91,92,93,95,119,120],[65,69,70,91,94,110,119],[61,66,68,69,86,88,89,90,94,119],[106,122],[69,70,103,106,124],[69,70,106,126,127],[106,129],[106,131],[106,133],[69,70,106,127,135],[69,70,106,125,127,136,137],[69,70,106,127,138,140,141],[69,70,106,127,136,141,143],[69,106,127,139],[65],[65,69,121],[65,121],[65,121,124,135,139],[65,121,124,135],[65,121,135,139],[61,69],[89,122],[69,89,124],[89],[69,70,89,126],[70,89,94,129],[70,89,94,119,131],[70,89,94,119,133],[69,70,89,119,135],[69,70,89,119,137],[69,70,89,119,140],[69,70,89,119,143],[89,139],[60,61,64,65,67,70,76,77,80,81,82,83,96,97,98,99,100,109,111,115,119,120],[83,96,97,110,119,157],[61,83,96,97,110,157,158],[61,73,79,83,96,97,110,119,157],[61,70,81,83,86,89,94,96,97,110,120,155,157,160],[96],[70,81,83,95,110,120],[61,63,80,110],[80,115],[61,70,71,72,80,111,115],[61,73,80,115],[70,74,76,78,79,115,120],[62,65,83,101,119],[61,62,80,83,101,109,119],[61,65,67,76,77,83,94,96,100,102,107,108,110,111,115,119],[60]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5ba0a094f93834bf1d227ddfb621d45ffe5b37e4dfe0b8518cdb769713f86633","affectsGlobalScope":true,"impliedFormat":99},{"version":"0fb789e71544b33050f556c483b82704450a1f5ed8277c35674891aaaa6a95ef","signature":"826d87ec474ecd59c827441df44d49f420dbe099333c3344e31dfada8cc39902","impliedFormat":99},{"version":"49e958d30eddbc54789eb540bd08c00b6ec4782a488935e8f29218796375fae6","signature":"f881a1a2b219f636190a264c5e6c61c8860b5f4c8a803d76d3729cfd97072d13","impliedFormat":99},{"version":"725cf9cb38ff2000cd2156e28dc06fb265cb6fc79f3a9d83141940b502f0fca6","signature":"fa40725ac8d2fe1f3e11590e2f2bd0ac523256d9f6805bc425c2286c7c93f894","impliedFormat":99},{"version":"0dcf0b8b29a5e0a4f5a592adea458990b22354a1a4c2766d0b024df0aebd71ff","signature":"ee40f42d658eb673fa53ff333ab90b838d3d4397fcf6a4ce49cfba5202f7c4ab","impliedFormat":99},{"version":"eea8be5c1eea68d449669b540be53f89e6cb749871fd8c13f2ae7869e167dbed","signature":"8d84c9cf16816327dc926a3b63fb8eb67ad6b2bb632f524154189b7320c30863","impliedFormat":99},{"version":"26fbcaad253a32731dbd9defa3203585dd37484b79e0588406dfe4466fad2520","signature":"82bf95c1d5594c8bccf0ae18f7c16116df3534239a00284ddf96759da3602812","impliedFormat":99},{"version":"26eee6d5475b7bf6ab5b0e8ee2cbefddd6c4d34a6b80ca12ee6511c943c7bb43","signature":"97326a2f5f0fce22509018fe77795cb2313d61f1ef71eff134612c81ec2ac600","impliedFormat":99},{"version":"1b96001d41ed1e44d23be82e73651b97a0337c8c71edccb8c18007aa4125a5b1","signature":"6dde36af67f486d0925af4ba0339e7a66b7f71fd36f1a4d928869ccbf4dfdda0","impliedFormat":99},{"version":"fde57d23fbfd443f940e2635fbf8073ca1c12d0b4ff785edd11b567e1a8de058","signature":"d377f7b60ef3d4795f2da2bb908398d6f817be42b0bb91813fe7d69a8afb7ba3","impliedFormat":99},{"version":"08c926f4d04ed66056babb87ca3d8ba6692d4ed829fef9b802ec5abcee844ff9","signature":"a6b4aedab2b80d14f70ff4cde40b08294544ffc82f437ee986e780d8fdba32fc","impliedFormat":99},{"version":"93478a22db5f8686e1c0c656798ed2409baab75dd1ccfffad0b29d1af36fbaf8","signature":"384cb58c372f77df67101837debb690eb5a3fa21e7867db2a5e9cfa428189a6e","impliedFormat":99},{"version":"8c72604442ade45e80db4becc8b15cb6a62279797dba0aa114ab8b830befbf4e","signature":"afcf49d3e0bfb93f7ba0802ac21a8cdee4cb9f08e66aeef6dd7de60e5db2754b","impliedFormat":99},{"version":"83d66848c8099c9fa05d49999db1dc0ee07072bdbd98675055a0ee8e48c61431","signature":"4fe26dc4bac065bdc055fd26f9ab411f282f020052ef557761cd96160810f442","impliedFormat":99},{"version":"535fff50a9073b90d6621c049584b95365bcab98d3b3a353c17b0e780a236222","signature":"9aa36325cd99649318217f9f9a87ad3cf4951520cfae47869cebc1e7d80820f4","impliedFormat":99},{"version":"753478ce7a42b669b1ce008cab957c3ee69bea88a09e9cfed0ee9557c70f82b7","signature":"046cf1637a30f54c247748ec08c64cedaa5b498a109268514922f2e86234002d","impliedFormat":99},{"version":"e73d693dbc420ea2f5525275bf48a1a958c00c14f4d310938c6ff562171084b4","signature":"11f10eef6b087b59bd9e527db506274380a36587a1bff3450e220ad7ec2ce45e","impliedFormat":99},{"version":"3ab55b4335654f11edfac43e7479c2113cec980539ab9f184b95f75a5e516e4c","signature":"4b877099c30f57cee49f5563d6c98ef6aa28f558549d6390ad542b7d7aee6a57","impliedFormat":99},{"version":"b3be2d2fe7ad00a18762420a9238d0740a6d11527b7fe2b837420dc4a4223d5f","signature":"9b29b1389b6d0736a97e2533c09e6084b696d4a5df83ae1289082c54d9b75f49","impliedFormat":99},{"version":"b1aa12a696499aec7886bad670c0d61ab1bbfb7010f509aad0a33976a43bb7a7","signature":"7fa0036a92ef198a2140758b695b615596e7860cde2f8f50dc8772f1ae23fde0","impliedFormat":99},{"version":"8751c170b7d20979afe81c6848afa318cd65c3d9026a4addb68b5f3271d21844","signature":"5fbb8d7443bd5a5b303f62cef8ce4b65cd729647d59916fb69f202c60db3f562","impliedFormat":99},{"version":"73a72274dd404908b200530c744bdd461a3ec8dbf0cb13a67d1638157dbb8ba3","signature":"fbc5a1c492e70c7900022a3d16cb26fc667e8d737e73ac8843228d0bd6430d78","impliedFormat":99},{"version":"620c8b4f5c54dace2084670794f6605c1534cefe9483039800c81479cd65c977","signature":"b7cb1a2407bb175fd4d74fcd72dedd16d3c7c9e1b0c5ef6b88e1a65350218d4c","impliedFormat":99},{"version":"619f7047ca3a1ec65a3398cd2d71717f6ecb3a579a46268366854142afad55a5","signature":"5a652125462bca72ea748d3bc73c458a9776fb3ad492674336f6d83df791c42d","impliedFormat":99},{"version":"8c3d3f7bbe1a90ead329bacae504d84d27a5e25ef21d34bfb8d796c62c983e1f","signature":"ed16135617242f809c2200d4c4b18610b4d0d7b7043903373da1f7cb27e394e8","impliedFormat":99},{"version":"03eb47e1e2969c3fc52fa7fdbd5c5841ffc3f7139fffc30d771d2b87e855b2fe","signature":"21248172fdb4c3ce859fa761a360940384895116a845e10fb20812ef4d29431c","impliedFormat":99},{"version":"5f8cc2f561d0eb5503a219a18d3f8aedf7659b97f71dd28bfe4c086d7fd08b0a","signature":"c38da59e148c444d6a822faf258069f07e20f51059757b8660d2b229881da156","impliedFormat":99},{"version":"6a05a62105154317ffd4f9deca628c8c3d2bbb7ef34b92c61b994a5929a7a70b","signature":"655c31a1722747d229233819701c97a0d0eb45de1c402d2af099ef6209823228","impliedFormat":99},{"version":"35a18cb45a375acffd7fd9924694a0fe490aff7e0456eaecfd8f06967b9b75a5","signature":"4d678bf8cab921c2d080b75126762897254dcc9424dd4527d9ed232a69258b11","impliedFormat":99},{"version":"412a870bb718eb9415faec7bc11ec73e104ded0dd8bacd66184ac0474dc806e8","signature":"c71fac303272beaa89b727174d0aa688665f420a8fbfdbdabd70d37ff1306ec2","impliedFormat":99},{"version":"d337e75063dafde8652b9fdcc652a392b9743bea5951ebc8f7ff4b0cbc93f8a4","signature":"4d8b4828eff7f5c832473b74466fb23d74a386d9b44efc842e5222f26c7a5de0","impliedFormat":99},{"version":"e1c1814eeb96c78e2437e92b81bdf82840424b0a4b22b600fd80c0c4ea936069","signature":"11d90ddf914600d7cdba80dc93576c8e4b9590b42542a4e4db56e36af1c3c341","impliedFormat":99},{"version":"84f7a3e27550c6167daf91d2757d4366ce70be74d91e1d2e218f2d61aefdee97","signature":"b151991c8ff51ddf092fd893067ea17885139ab5c8fe35a2a3f3709592bfa12b","impliedFormat":99},{"version":"b63eef02fb6f5bc004aeb338f6cb4fb6648cafcf9841396432738f2f3cfecf07","signature":"8adbddff6d8303fdf5de01602f8c2b9a28efc3bf60530eeba3857aa7f550f655","impliedFormat":99},{"version":"309b37dd89c078c27286180d57ef951f21363d029e475d9f8d6b436e2a31a62e","signature":"babf579da841813feb2c91dcd842f39537eb0371fb903b24eda3cdecba2bf14f","impliedFormat":99},{"version":"1138a695abe6478c7d61994fa53c361bf93b3bc46e861924adcb11b80d865b42","signature":"c94ed70800ac79504d077db058be93442bc1ef7fd26793cf62c2b6d68322d605","impliedFormat":99},{"version":"61fd0c318cdcb7d3c33b1a4ce9672b8265622a5df2ad6c9afdccbc9f4c1c0c0b","signature":"31f1e85b7793907da145a21c1b8a4b197c4e83ca8071c41f866224d5c85a34e1","impliedFormat":99},{"version":"c062cba77512f53efd4623537ddedc89605eda6abcfd3f74d3b5245b4653c7be","signature":"6706bda959cff733c53a50b9715f00471f3b691d40964483b372b406c6e89b71","impliedFormat":99},{"version":"f914faa3b6c2fe1ce1f307a5d780f2021ff2211737e17adc3de047ea242e9e54","signature":"3eaee23f112a80139af770d0a6b7623f33675966ec3dca3cdab74a0ea071064b","impliedFormat":99},{"version":"7f6e6e6104931e7907c74e53d336094350978646d9c02c2a205ffcea90b58e61","signature":"f02942f8ae408270e572fa4c23aca8f42b496b83a836bfc8cec4f559e8ce1125","impliedFormat":99},{"version":"45a3d03cb79677851a1597d31d0936c706cb80d3731b68677012520d555de2e6","signature":"68cfd7feb1396181cc75d8cfbd95ae5e76e2ffee3c99aeb04e4d3175737c7a97","impliedFormat":99},{"version":"f2dcc3dae29c6d5d8512491a46505324a77f4a2ecb6d9abbabfda54c189e08f1","signature":"4efda82c758514a08d950cbc7079752d18f74223fd28014d62a9009694c019dd","impliedFormat":99},{"version":"7381e02deaa54cca84fd5829a7abe72b9aea79739cef50d2ef45e7133e46a245","signature":"bdfe37f9178a0c445385afef820471496de4d62381ceab44090e1d2f7cbf9d57","impliedFormat":99},{"version":"d41aef2354b7b9bbbd538909867a16826b1111f88d82b3db7669904d88f01938","signature":"378b818788219a531c09232dc8246ed3d0b70113a75770eb1d2847084edc7eae","impliedFormat":99},{"version":"5e65666e88324e800f5351c15893a29855f637211aca9e1cd3f7cccd372e9370","signature":"566b53d6bd25dd8a6d93ef387b4a0ae8a795c1ea4854298c3a328fc6712aebb5","impliedFormat":99},{"version":"26c6f7db0180070206eb2449c0c5fa0189fdfc0a258af7f60762b14c5908ec7e","signature":"f6b7f82e188e0e7d18bfa9cf1dc3ae29b31eae9950b495772537815380c7a573","impliedFormat":99},{"version":"f309bd228e2982f60f7ed817323e80d1187c1520248ae02059bd93d23eaa1acf","signature":"2885b4f117dd1d518624b16d3993749c17042fe5d799b60a46d9654d45fc1be1","impliedFormat":99},{"version":"4943bb6f444f19566066f99d034bc97ca84d63eb7b4546bb47097ee81080a94c","signature":"f517fe6b9594b6bc1939368aec01eb109e47e51250a3f836c2aa32baed7b8523","impliedFormat":99},{"version":"f49bf30471eacec378a71ba1d9bb91359cb3a2d62a4c2369432dc9d4781e8a76","signature":"2db98de1d14bef065e3e3c8d46de848d2afd1b503df129cee35e41ad04ef05d9","impliedFormat":99},{"version":"81196161e8515da71f0dff826598a5e7bee75d8e1169a187e2289aa7447e1d9f","signature":"1d8e5d8f1f509ebacf09e733e4784fb0e0ea05e02a0a21e1668c5105a6883d35","impliedFormat":99},{"version":"0148966dd39f13ac019890cf47cfba7ea338d112bab622a1fa8f2050a7141320","signature":"e0a536d63d03a20b0da8cb90ea1c639eae665b8d092b7e2f68532e385d7c071b","impliedFormat":99},{"version":"d5b86d07c000e9387b102e82cf8d1f36b466c01186ea76d1a490f37966f51715","signature":"fbc291030037bd7b99b49ae84a7d7191146404671852e0acb1aadccd0b625074","impliedFormat":99},{"version":"9fd52944f4d0748affc7601ddcd21af6e8c622d2e2855c9a5ad215ca3e09a7ae","signature":"1bc91777d9c68f9f46697b1859f11ea39e6c51e1eb135336d81289eb25c97623","impliedFormat":99},{"version":"7f4d58b40b9fb2850c7807263b7f76ab025ee11099ce8f193f5ee4a6fbc48023","signature":"9b5e43a8d86d0bd41f3efb075e415d1f239702b02afb90e34abb868d82a0f5d6","impliedFormat":99},{"version":"8ab097d44a126a00b1b8ae02d98f6458346d3324dc379d241ac040ed4220edb3","signature":"50a6aa824772162e168c9859f53b17a42a312be6b3c5346866e0354fc7d2c61b","impliedFormat":99},{"version":"5bc4d797c4c00430b4e7cea2ca1ffa7d8e3223fb526997bb4a3b73b556b344f5","signature":"46d6995fa6153325dae9fcaf8eb7fdc183936a42a3fb851efcda43cc0bf7edef","impliedFormat":99},{"version":"c82e75185b0709ec0b4ba2b1dc62ec92b60c064c457510e2de266f9cea2ef22a","signature":"95e6bad556a8ac48fc21c4587a5d4ab66d736dd1859ca05d5f62cf76558f7a1b","impliedFormat":99},{"version":"1e434b5f963ca54162c007922a664c33c058045e1f8258bc47ca7b10b0df25a3","signature":"9b47d61d6e847112cf7e9f2fb1631d36e81d966b79b46ede120eaf85058f6a97","impliedFormat":99},{"version":"d3601402d82e419617b77fb8364e5192eb7f1d685288f09ff39d63cde4c9e51c","signature":"3ea67cb40367de619dc4addce96f4d5e80160ea305c6afe526d44a1b7988a3ea","impliedFormat":99},{"version":"6dd145cdae9cca3d1dd9c077f79bf64f486a5d6dd851a80b53a638c3ed0353fb","signature":"bd205ae001b9e85aad4aeb1755b24591dc12372fe660fe31ee315074062eea0d","impliedFormat":99},{"version":"aadb176e258461e1de9b7665a4c300a6c51c6f8181d710d273332a8ffd4d320e","signature":"a76de0006e09d40bbc66a81fee7271d9305a1161cb8b0e98abd8577b6b308dc1","impliedFormat":99},{"version":"dac0403c3ff87860d7b130e4d46797b3a14b8491a2d483cdd3939b36a465c71c","signature":"b76a00a0d000ba2ad5b9ecaf389922e8135c8087180aa769fd517bd404ad5459","impliedFormat":99},{"version":"ef58c75d40fb4394e68971549eb3351058cb0b275db2738ae67df13ffc150cc8","signature":"6b38678a012f8055e5f0a8aa9c1ca13d8a6d60110541d60e244a132b31f1fec2","impliedFormat":99},{"version":"387288e860f965c2862d17c155ad361b1c2ceaff5f97761d179262336b88580d","signature":"872937c6cd92ad2ca1548878c5c2325dc0ba3339a93a31ed1947884908dd8aa8","impliedFormat":99},{"version":"f47ba4df2de5c263e2a7c95464685602b0db64ad88bc1f62a477dc98311f88ab","signature":"98a1f2a3ec600dc06f82c4fe120b7d2ef6aa8ec258b1c4fb77e44a913cc6e233","impliedFormat":99},{"version":"4c92257cc7c9b722720be143ed2b5b8387267854c67017372b09e2bcbbea6063","signature":"c0e70bcea10f408ecc8833d2aa2c3af825d13e470d74990ba538d0a81cf56a7b","impliedFormat":99},{"version":"c3c7389b117ec2f370d63fd673a8fc379b335b73666ea9c481848043d27e85d3","signature":"47e1b725b6d55b6284e63568e9074f195005f8b79e066b28449663aef9aed95c","impliedFormat":99},{"version":"3c0e1904a08a9f573980fc9cabc22e76657990ee395bac9a6bb50a6c102e52bd","signature":"42e936ecc3b9b7ad5a489eeaea7c25af8d7b71162a08e00ad638648e87a7ee51","impliedFormat":99},{"version":"77099443b054b22cb41374e020cf0ec8bbc3b077c25d5afb2d73e2207c661b80","signature":"e6f972dc162ead1d86897a3488316aab8b034472695d40eac74b6557e184919d","impliedFormat":99},{"version":"ea4c2e9deca942ae568c64e85d74cd5eb67c40b827956fd9a82e81d70e70585c","signature":"d91415fa00b3eef01ae2e08e8ffaf7cef9fa568515c83ac1474a22cc55bb3718","impliedFormat":99},{"version":"137618331aa4f4dd38c93e26a20b43dc8dc25a95485cdfd496f1a104b1b07c3b","signature":"912202a19d5e8972357af639e5e65d06c9171e30d4bf077fcdfe184c30effc7c","impliedFormat":99},{"version":"aa7446683810dffa2f3379a2e3a4ad3bcdc59d8da258ceac844ad6b68d3b418a","signature":"16ea4109bf543dd521c2e9cd4ff0f8c498250ce26f6fe55739e077e0761c8807","impliedFormat":99},{"version":"8130e89488ac70797bd1737f59ab9d4ca43805a6886ec3e600eb29cfd681c96e","signature":"9ab0406e79c8ae7a4f552c6609b8ce436242d74abbeebd1f4303a63c53ccb56a","impliedFormat":99},{"version":"0d2f8deb225e2cb7c3a818ff1a6e2aaaaf2104a0af8104d8c3e112cb9856f3ae","signature":"76fdce1e19f5cf3a2243a37f1778f534dc527e73c25100a14d63994c2f0b8760","impliedFormat":99},{"version":"df3b85e40aa11deae5e4e9094927c0ddc7a768c10f8d2e4f793558d7c832337c","signature":"dca314f637b4d88b884e8a6d76fb82cbf2b896e28f69feae8da56046045cf278","impliedFormat":99},{"version":"484cf35592b2c8be3608d937a5238c1fef88315cedc853cc817c1333ad316e35","signature":"e7181fa8e23ed61baefe346d52c8e0eaa94ab0c495c50933f3d0b1de1f949230","impliedFormat":99},{"version":"79604b209f32f23345daab19964a53d8dc9488d1ed7e23bad0ff08fc2c772da8","signature":"4dcaec244d4486f21fa7800fd6853c914df66154d4ca6b7cf0aa0370c5e6a656","impliedFormat":99},{"version":"019abfb86e2f8f44b9f78ebe1ada8748f2bf578caaf9536475531cf4eb4bde62","signature":"5111e2e2ffb1264243951a0c15fa3498e2c0c23e74599f535ad2227a16d8c503","impliedFormat":99},{"version":"8a6aecc7b7cd01b03424ea5e4755f8abceb433c7cac3c4cc74aea2df676ca32a","signature":"2c6c2e2996661a1558d5ce4040ec63a12913ea0c52fd071adc079fb1f3fc125c","impliedFormat":99},{"version":"3e87e6d2e51b392e59034bf46547bd13ffbf54301ccf98cada6692eec7261860","signature":"b6c5cb675d41673f3d27982b79d6b96033d9f0976ff9c62a49b4d61bbfc71b1f","impliedFormat":99},{"version":"950cb741daec5e63de1500aa3db70f9879fa16164fbb8cbc100437a258643f84","signature":"db5ff6f8ae2b0a4ff8cb16b43646b5561304b219fcc10ab1c470965743fe7662","impliedFormat":99},{"version":"f6ce18c4659b7e933d0e0289ee01d20eabc88543587ba71e3ee59ea2560e8294","signature":"e4bf9388266333a7b08b77dfc53f0bd5cc25da0e148c7a896aaac443c6becb47","impliedFormat":99},{"version":"d316f795ecc284e4a91622cd71635ba3964cd3ee5fa4bcca828173767520113e","signature":"986c6fa0b20de6185466d165274d7896f8734b92302b70ffccf4614be069db61","impliedFormat":99},{"version":"c5da010a38dec8e8569cf895d9dfaf1432e1d29d7f9f73644eb01f33f097e89d","signature":"02fad959da0f7217696defb6dead5557228c3ef9791e4cbb28164d4bea2a8245","impliedFormat":99},{"version":"85f4bc1f1eea3a08f8abc20c7dc41671a8c4ba35860c9e948ef7ca39eff18dc2","signature":"43065306646acc1b02890238154e075cb4e2a6cbc73e213e1f56fcc6ad568d37","impliedFormat":99},{"version":"3f24a1b9dce9699930f668b87e564ff8fbdd5742fffee6dc35e5e6e6a7c3af78","signature":"ccd53c52eddd8eaa19baaf4ac4224f18b3c9ee90cbdb62001f1477e59c5006be","impliedFormat":99},{"version":"7a55412506f0f9dc36fb71e3cc6e6781526deb1a759038ff8fd08c45d99326f4","signature":"e83ecc19d67e55848641650aa73755b88b0085d526fefdace51ddb11da8a4e92","impliedFormat":99},{"version":"6620bc01f2502a0cc57ab81250183715cff09aa568e747c62ed05911b1cdeb17","signature":"fc4560cb792ceead9e3fea2f6af6cfc1f6c3ae85091f1857c7d268a11c01b948","impliedFormat":99},{"version":"cef86916072eb96932fc00f390dde6c6bd57243adf5b936946adb7ab3b88c7d6","signature":"e7f707dc443bc70c46576168b519c3ba5479373575af4399855ca8b0b3013a02","impliedFormat":99},{"version":"2de3c458fe2feecfaf56cb658616504d7484f0cdfdcb150c45d7cce4172b05b4","signature":"8b97d49f33fb21b2b6616c0600cb2e3968deede70049dd50e38e7d5e60258e48","impliedFormat":99},{"version":"729ae253baca9b66f161e5d741763d835c190717a18714a4cc10033be270e566","signature":"a61270eb38bce478ba85ad3126a149e7d178fdfc02d91d901ec450ca2a08a3c9","impliedFormat":99},{"version":"4e0c892416db776abe7394b8d8c870bd9a0130712e6939e7bb97ff1dfa68f5f1","signature":"5be8d9fadb8846ec9529a9a0839940b7ed8667d9473d37fcaddf5a5407046bb8","impliedFormat":99},{"version":"1029ff8709b714292e9e06f2c7a61ef03249cd622dc0a14b9ef090eb4f5440e3","signature":"b02e020e0ad1378e97a9e1d26795695ac5527087e5c174e8aea70ec0d00192e9","impliedFormat":99},{"version":"784a7c50aee5402707d9acaccc422eb7fdc49d099e4b9eef79985a8cda49c11f","signature":"b34ecdba664a2ec3b8dbf9e941b6dbe316902ba0e406a7c31299e7eb959fb7e9","impliedFormat":99},{"version":"f022ac45c7b49f346c7a4aec7035380a6c20e864c3a3c9b093a0749214fdd972","signature":"66fc58d212375c49354827feb93cf399644bddf49c6d5aa7cd716cd81cf5b691","impliedFormat":99},{"version":"e0b193eaf469545abda1cf3ca86cb25992513dfff1c993b4032f1c80e4848427","signature":"0c184d4bfd1585aefffd168cf5f09cd420bebc653e912e418c24cab332f186e3","impliedFormat":99},{"version":"582dc809d8b93a8fc16c77e1ffc53850f3f84b40f8cb2a3cdf1996f79f1b3088","signature":"5ba57c948c9666d17638efae14ac47877ede75629fe17a412e5d6d1a4c505fd1","impliedFormat":99},{"version":"355bafe303bae845767ef24a37f7b2c711c250c7448895c0c938875f7f9c2032","signature":"5cf4cc52274a28bd8ab9406ed3e98fa53551f4b4cf1a34bd65b78b5e1439414f","impliedFormat":99},{"version":"b9108c4d92c7ffe8546ebd753ef6901b2abd197367e64f6826c3897ac541c3ae","signature":"48706ca10c8d5d293d1546c75598d177ec2e218aadc913c0c0e22d140788e167","impliedFormat":99},{"version":"87f39774f98ef561e0b3801981dbf7b9bb906a51d42af257a22f82a95e1c7602","signature":"9ea3d311a1dd736d63c38632d4a4af2019f41fcec61243ebf8e9f5a9ffaf2cbe","impliedFormat":99},{"version":"6d55ba1191a52297542ccc25f3fb7b5f551db0ba6794358a69e57f0dd5d24f88","signature":"a03ba7ec376ee4f7053cc8948e003e6e0cf9aa4c7aa65faf61e76ab153554cc7","impliedFormat":99},{"version":"ea80f681fb9d0ff6988eb827a0a958503dc03fa73fe2bcfbea7770228dcd1eab","signature":"2b82423c06b300d8612dffe4c1c8b8a0e11c4f1459d69798fe14479617c28afe","impliedFormat":99},{"version":"751f94eda0facc0d092cded2f1486f42377722cec3ac816dc8694539d307cb62","signature":"5cc44328b5fa4bfbe7f0a0fb660d46b6de824e565e8079471b6961e20e12d939","impliedFormat":99},{"version":"eb8ae88b6da33af8ee9b9497c3e01d2ff5679b60f68972a4101abb0e795aa138","signature":"43ea4830a704b847b6a91de852d511b6d6606d4a21f7baac811abeb0f13428d7","impliedFormat":99},{"version":"96dba49c7ca675ef31b5e4fbfb040472e1399e7579756cbe75bc467fd818b725","signature":"a34189c39e64e75e77d978d1c1705f53c585e7598705ffb45487f46c26b2cae1","impliedFormat":99},{"version":"d7e5fa867a59ea2dd844ac46134b6200bec7be5bf9caa24ad818a8c1cb9960c6","signature":"c92b068c8e0d743f3e2a7508f27874062fa902ca054369176acbc9502015e4bf","impliedFormat":99},{"version":"7ab5ea0a0fee1f29e1fac8686e28f007d043ba95d7e3b632f8cc7301c37e6811","signature":"db959774546bdddc7101c53894e3138cd245b33175f7c9377f9343eec1a8d680","impliedFormat":99},{"version":"c27b65f34815f9448a64c605dd63f6e03af85ccb2ad4bdcd0cf5332b645c9705","signature":"8c826192b6757cbc3ffc140a36dc8ada7957796bd2242467287ae231450b4f99","impliedFormat":99},{"version":"4ace5a8e6261759a5cbd617cae0cbd88c0c5193bb5345673b0a5a48dcf51f640","signature":"32a2e5d5fbfd8d6d2851fc644c4f1051c2ab5f068adb276e8cdc1fb67774fe5f","impliedFormat":99},{"version":"eb54d8688792ecc441056d4150a5da1dba8815050829d8cf74d08d50aa40b8a9","signature":"10c7bdc6518b5f312287ce56e2ad08318c9c6a205f70fc51138764c9f0579ccd","impliedFormat":99}],"root":[[59,168]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"experimentalDecorators":true,"module":100,"noImplicitAny":false,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[162,1],[163,2],[164,3],[165,4],[166,5],[167,6],[168,7],[120,8],[76,9],[64,10],[101,11],[117,12],[119,13],[67,14],[83,15],[115,16],[118,17],[105,18],[113,19],[71,20],[72,21],[70,22],[112,23],[68,22],[111,24],[100,25],[107,26],[106,27],[104,28],[78,29],[81,30],[65,31],[88,22],[85,32],[69,32],[95,33],[93,34],[87,35],[86,36],[94,37],[89,38],[91,39],[123,40],[125,41],[128,42],[130,43],[132,44],[134,45],[136,46],[138,47],[142,48],[144,49],[141,50],[127,22],[122,51],[124,52],[126,53],[129,51],[131,51],[133,51],[135,52],[140,54],[137,55],[143,56],[139,53],[121,57],[145,58],[146,59],[90,60],[147,61],[148,62],[149,63],[150,64],[151,65],[152,66],[153,67],[154,68],[155,60],[156,69],[110,70],[158,71],[159,72],[160,73],[161,74],[97,75],[96,76],[77,77],[99,78],[73,79],[114,78],[92,78],[74,80],[80,81],[102,82],[108,83],[109,84],[98,17],[61,85]],"latestChangedDtsFile":"./src/main-api/Renderer.d.ts","version":"5.9.3"}
1
+ {"fileNames":["../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/env.d.ts","../src/core/lib/contextspy.ts","../src/utils.ts","../src/common/ianimationcontroller.ts","../src/core/utils.ts","../src/core/animations/animationmanager.ts","../src/core/renderers/coreshadernode.ts","../src/core/renderers/coreshaderprogram.ts","../src/core/coreshadermanager.ts","../src/core/lib/webglcontextwrapper.ts","../src/core/renderers/webgl/internal/shaderutils.ts","../src/core/lib/utils.ts","../src/core/lib/texturecompression.ts","../src/core/lib/texturesvg.ts","../src/core/textures/imagetexture.ts","../src/core/textures/subtexture.ts","../src/common/ieventemitter.ts","../src/common/eventemitter.ts","../src/core/texturememorymanager.ts","../src/core/renderers/corecontexttexture.ts","../src/core/textureerror.ts","../src/core/textures/texture.ts","../src/core/renderers/corerenderer.ts","../src/core/lib/matrix3d.ts","../src/core/coretextnode.ts","../src/core/renderers/corerenderop.ts","../src/core/renderers/webgl/internal/rendererutils.ts","../src/core/renderers/webgl/webglctxtexture.ts","../src/core/renderers/webgl/webglctxsubtexture.ts","../src/core/renderers/webgl/internal/buffercollection.ts","../src/core/renderers/webgl/webglshadernode.ts","../src/core/shaders/webgl/default.ts","../src/core/renderers/webgl/webglshaderprogram.ts","../src/core/textures/rendertexture.ts","../src/core/renderers/webgl/webglctxrendertexture.ts","../src/core/renderers/webgl/webglrenderer.ts","../src/core/renderers/webgl/sdfrenderop.ts","../src/core/text-rendering/textrenderer.ts","../src/core/text-rendering/textlayoutengine.ts","../src/main-api/utils.ts","../src/core/textures/colortexture.ts","../src/core/platforms/web/webplatform.ts","../src/core/animations/coreanimation.ts","../src/main-api/inode.ts","../src/core/lib/colorparser.ts","../src/core/renderers/canvas/canvastexture.ts","../src/core/lib/colorcache.ts","../src/core/renderers/canvas/canvasshadernode.ts","../src/core/renderers/canvas/canvasrenderer.ts","../src/main-api/inspector.ts","../src/main-api/renderer.ts","../src/core/stage.ts","../src/core/platforms/platform.ts","../src/core/lib/validateimagebitmap.ts","../src/core/lib/imageworker.ts","../src/core/textures/noisetexture.ts","../src/core/coretexturemanager.ts","../src/core/lib/rendercoords.ts","../src/core/autosizer.ts","../src/core/lib/collectionutils.ts","../src/core/corenode.ts","../src/common/commontypes.ts","../src/core/shaders/utils.ts","../src/core/shaders/templates/blurtemplate.ts","../src/core/shaders/canvas/blur.ts","../src/core/shaders/templates/bordertemplate.ts","../src/core/shaders/canvas/border.ts","../src/core/shaders/templates/holepunchtemplate.ts","../src/core/shaders/canvas/utils/render.ts","../src/core/shaders/canvas/holepunch.ts","../src/core/shaders/templates/lineargradienttemplate.ts","../src/core/shaders/canvas/lineargradient.ts","../src/core/shaders/templates/radialgradienttemplate.ts","../src/core/shaders/canvas/radialgradient.ts","../src/core/shaders/templates/radialprogresstemplate.ts","../src/core/shaders/canvas/radialprogress.ts","../src/core/shaders/templates/roundedtemplate.ts","../src/core/shaders/canvas/rounded.ts","../src/core/shaders/templates/roundedwithbordertemplate.ts","../src/core/shaders/canvas/roundedwithborder.ts","../src/core/shaders/templates/shadowtemplate.ts","../src/core/shaders/templates/roundedwithborderandshadowtemplate.ts","../src/core/shaders/canvas/shadow.ts","../src/core/shaders/canvas/roundedwithborderandshadow.ts","../src/core/shaders/templates/roundedwithshadowtemplate.ts","../src/core/shaders/canvas/roundedwithshadow.ts","../src/core/shaders/webgl/blur.ts","../src/core/shaders/webgl/border.ts","../src/core/shaders/webgl/holepunch.ts","../src/core/shaders/webgl/lineargradient.ts","../src/core/shaders/webgl/radialgradient.ts","../src/core/shaders/webgl/radialprogress.ts","../src/core/shaders/webgl/rounded.ts","../src/core/shaders/webgl/roundedwithborder.ts","../src/core/shaders/webgl/roundedwithborderandshadow.ts","../src/core/shaders/webgl/roundedwithshadow.ts","../src/core/shaders/webgl/sdfshader.ts","../src/core/shaders/webgl/shadow.ts","../src/core/text-rendering/utils.ts","../src/core/text-rendering/canvasfonthandler.ts","../src/core/text-rendering/canvastextrenderer.ts","../src/core/text-rendering/sdffonthandler.ts","../src/core/text-rendering/sdftextrenderer.ts","../exports/canvas-shaders.ts","../exports/canvas.ts","../exports/index.ts","../exports/inspector.ts","../exports/utils.ts","../exports/webgl-shaders.ts","../exports/webgl.ts"],"fileIdsList":[[106,123,125,128,130,132,134,136,138,141,142,144],[104,106,107,159],[62,63,65,69,73,77,79,80,86,91,94,101,102,108,109,110,115,119,120,124,126,129,131,135,139],[108],[61,63,70,76],[89,90,145,146,147,148,149,150,151,152,153,154,156],[86,89,94,161,167],[79,119],[75],[61,62,63,119],[63,64,119],[70,119],[61,62,64,65,70,76,80,81,82,86,88,94,101,110,115,116,117,118,120],[61,65,66,110],[61,70,80,81,82,96,110,119,120],[73,74,76,79,80,81,92,99,110,111,112,113,114],[119],[103],[80,112],[68,80],[61,70,80],[69],[111],[110],[110,111],[74,78,80,81,103,104,105,106,119,120],[65,105,110,119],[61,78,80,103,120],[77,80],[60,65,66,78,80,110,119],[61,110,119],[68],[61,70,84,86,88,89,94,110,120],[68,70,77,86,92,120],[61,68,74,77,80,86,120],[61,68,70,71,77,78,80,85,120],[61,68,70,74,78,80,81,85,86,87,88,89,90,91,92,93,95,119,120],[65,69,70,91,94,110,119],[61,66,68,69,86,88,89,90,94,119],[106,122],[69,70,103,106,124],[69,70,106,126,127],[106,129],[106,131],[106,133],[69,70,106,127,135],[69,70,106,125,127,136,137],[69,70,106,127,138,140,141],[69,70,106,127,136,141,143],[69,106,127,139],[65],[65,69,121],[65,121],[65,121,124,135,139],[65,121,124,135],[65,121,135,139],[61,69],[89,122],[69,89,124],[89],[69,70,89,126],[70,89,94,129],[70,89,94,119,131],[70,89,94,119,133],[69,70,89,119,135],[69,70,89,119,137],[69,70,89,119,140],[69,70,89,119,143],[89,139],[60,61,64,65,67,70,76,77,80,81,82,83,96,97,98,99,100,109,111,115,119,120],[83,96,97,110,119,157],[61,83,96,97,110,157,158],[61,73,79,83,96,97,110,119,157],[61,70,81,83,86,89,94,96,97,110,120,155,157,160],[96],[70,81,83,95,110,120],[61,63,80,110],[80,115],[61,70,71,72,80,111,115],[61,73,80,115],[70,74,76,78,79,115,120],[62,65,83,101,119],[61,62,80,83,101,109,119],[61,65,67,76,77,81,83,94,96,100,102,107,108,110,111,115,119],[60]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5ba0a094f93834bf1d227ddfb621d45ffe5b37e4dfe0b8518cdb769713f86633","affectsGlobalScope":true,"impliedFormat":99},{"version":"0fb789e71544b33050f556c483b82704450a1f5ed8277c35674891aaaa6a95ef","signature":"826d87ec474ecd59c827441df44d49f420dbe099333c3344e31dfada8cc39902","impliedFormat":99},{"version":"49e958d30eddbc54789eb540bd08c00b6ec4782a488935e8f29218796375fae6","signature":"f881a1a2b219f636190a264c5e6c61c8860b5f4c8a803d76d3729cfd97072d13","impliedFormat":99},{"version":"725cf9cb38ff2000cd2156e28dc06fb265cb6fc79f3a9d83141940b502f0fca6","signature":"fa40725ac8d2fe1f3e11590e2f2bd0ac523256d9f6805bc425c2286c7c93f894","impliedFormat":99},{"version":"0dcf0b8b29a5e0a4f5a592adea458990b22354a1a4c2766d0b024df0aebd71ff","signature":"ee40f42d658eb673fa53ff333ab90b838d3d4397fcf6a4ce49cfba5202f7c4ab","impliedFormat":99},{"version":"eea8be5c1eea68d449669b540be53f89e6cb749871fd8c13f2ae7869e167dbed","signature":"8d84c9cf16816327dc926a3b63fb8eb67ad6b2bb632f524154189b7320c30863","impliedFormat":99},{"version":"26fbcaad253a32731dbd9defa3203585dd37484b79e0588406dfe4466fad2520","signature":"82bf95c1d5594c8bccf0ae18f7c16116df3534239a00284ddf96759da3602812","impliedFormat":99},{"version":"26eee6d5475b7bf6ab5b0e8ee2cbefddd6c4d34a6b80ca12ee6511c943c7bb43","signature":"97326a2f5f0fce22509018fe77795cb2313d61f1ef71eff134612c81ec2ac600","impliedFormat":99},{"version":"1b96001d41ed1e44d23be82e73651b97a0337c8c71edccb8c18007aa4125a5b1","signature":"6dde36af67f486d0925af4ba0339e7a66b7f71fd36f1a4d928869ccbf4dfdda0","impliedFormat":99},{"version":"ddef741d9eb0c8e9a77803ddea6d25e4d3e489720577ceed9e1d7dc812fc864a","signature":"d6f973e1b92cbcbab0202e7813e7efb94cecd46dba3ef1d3c40b544498a7d11d","impliedFormat":99},{"version":"08c926f4d04ed66056babb87ca3d8ba6692d4ed829fef9b802ec5abcee844ff9","signature":"a6b4aedab2b80d14f70ff4cde40b08294544ffc82f437ee986e780d8fdba32fc","impliedFormat":99},{"version":"93478a22db5f8686e1c0c656798ed2409baab75dd1ccfffad0b29d1af36fbaf8","signature":"384cb58c372f77df67101837debb690eb5a3fa21e7867db2a5e9cfa428189a6e","impliedFormat":99},{"version":"8c72604442ade45e80db4becc8b15cb6a62279797dba0aa114ab8b830befbf4e","signature":"afcf49d3e0bfb93f7ba0802ac21a8cdee4cb9f08e66aeef6dd7de60e5db2754b","impliedFormat":99},{"version":"83d66848c8099c9fa05d49999db1dc0ee07072bdbd98675055a0ee8e48c61431","signature":"4fe26dc4bac065bdc055fd26f9ab411f282f020052ef557761cd96160810f442","impliedFormat":99},{"version":"535fff50a9073b90d6621c049584b95365bcab98d3b3a353c17b0e780a236222","signature":"9aa36325cd99649318217f9f9a87ad3cf4951520cfae47869cebc1e7d80820f4","impliedFormat":99},{"version":"753478ce7a42b669b1ce008cab957c3ee69bea88a09e9cfed0ee9557c70f82b7","signature":"046cf1637a30f54c247748ec08c64cedaa5b498a109268514922f2e86234002d","impliedFormat":99},{"version":"e73d693dbc420ea2f5525275bf48a1a958c00c14f4d310938c6ff562171084b4","signature":"11f10eef6b087b59bd9e527db506274380a36587a1bff3450e220ad7ec2ce45e","impliedFormat":99},{"version":"3ab55b4335654f11edfac43e7479c2113cec980539ab9f184b95f75a5e516e4c","signature":"4b877099c30f57cee49f5563d6c98ef6aa28f558549d6390ad542b7d7aee6a57","impliedFormat":99},{"version":"b3be2d2fe7ad00a18762420a9238d0740a6d11527b7fe2b837420dc4a4223d5f","signature":"9b29b1389b6d0736a97e2533c09e6084b696d4a5df83ae1289082c54d9b75f49","impliedFormat":99},{"version":"b1aa12a696499aec7886bad670c0d61ab1bbfb7010f509aad0a33976a43bb7a7","signature":"7fa0036a92ef198a2140758b695b615596e7860cde2f8f50dc8772f1ae23fde0","impliedFormat":99},{"version":"8751c170b7d20979afe81c6848afa318cd65c3d9026a4addb68b5f3271d21844","signature":"5fbb8d7443bd5a5b303f62cef8ce4b65cd729647d59916fb69f202c60db3f562","impliedFormat":99},{"version":"73a72274dd404908b200530c744bdd461a3ec8dbf0cb13a67d1638157dbb8ba3","signature":"fbc5a1c492e70c7900022a3d16cb26fc667e8d737e73ac8843228d0bd6430d78","impliedFormat":99},{"version":"bb8d75c4a77323ef23195fae7b6f52e36bc3235b8cbeaf0eea6f41eef845c124","signature":"83ef77a9d31db06a43d8ff1b68dff887b282754b170d0a9d56e1a752049dcd5d","impliedFormat":99},{"version":"619f7047ca3a1ec65a3398cd2d71717f6ecb3a579a46268366854142afad55a5","signature":"5a652125462bca72ea748d3bc73c458a9776fb3ad492674336f6d83df791c42d","impliedFormat":99},{"version":"8c3d3f7bbe1a90ead329bacae504d84d27a5e25ef21d34bfb8d796c62c983e1f","signature":"ed16135617242f809c2200d4c4b18610b4d0d7b7043903373da1f7cb27e394e8","impliedFormat":99},{"version":"03eb47e1e2969c3fc52fa7fdbd5c5841ffc3f7139fffc30d771d2b87e855b2fe","signature":"21248172fdb4c3ce859fa761a360940384895116a845e10fb20812ef4d29431c","impliedFormat":99},{"version":"44e9f0e89d6e19b4d6e107c4658fb62c0d453e6afa0c51a980b1057a4a69d9bd","signature":"4c31e651822192e7f40bd3c13394d10fed932d6517b3d6fa44130bc4064efd82","impliedFormat":99},{"version":"6a05a62105154317ffd4f9deca628c8c3d2bbb7ef34b92c61b994a5929a7a70b","signature":"655c31a1722747d229233819701c97a0d0eb45de1c402d2af099ef6209823228","impliedFormat":99},{"version":"35a18cb45a375acffd7fd9924694a0fe490aff7e0456eaecfd8f06967b9b75a5","signature":"4d678bf8cab921c2d080b75126762897254dcc9424dd4527d9ed232a69258b11","impliedFormat":99},{"version":"412a870bb718eb9415faec7bc11ec73e104ded0dd8bacd66184ac0474dc806e8","signature":"c71fac303272beaa89b727174d0aa688665f420a8fbfdbdabd70d37ff1306ec2","impliedFormat":99},{"version":"d337e75063dafde8652b9fdcc652a392b9743bea5951ebc8f7ff4b0cbc93f8a4","signature":"4d8b4828eff7f5c832473b74466fb23d74a386d9b44efc842e5222f26c7a5de0","impliedFormat":99},{"version":"e1c1814eeb96c78e2437e92b81bdf82840424b0a4b22b600fd80c0c4ea936069","signature":"11d90ddf914600d7cdba80dc93576c8e4b9590b42542a4e4db56e36af1c3c341","impliedFormat":99},{"version":"58b0fe838de9ea35c51d3c979a1072665f2cd8edb30f2f4da036459ad9ba0f34","signature":"a3704c460c9c989dadbf1cfbc8f9dac80b22d96f9cbbf1305b656587e39a5753","impliedFormat":99},{"version":"b63eef02fb6f5bc004aeb338f6cb4fb6648cafcf9841396432738f2f3cfecf07","signature":"8adbddff6d8303fdf5de01602f8c2b9a28efc3bf60530eeba3857aa7f550f655","impliedFormat":99},{"version":"309b37dd89c078c27286180d57ef951f21363d029e475d9f8d6b436e2a31a62e","signature":"babf579da841813feb2c91dcd842f39537eb0371fb903b24eda3cdecba2bf14f","impliedFormat":99},{"version":"2790facdd268cf0445c81588a454ae367153b852d6fb82700c609eec9198bd77","signature":"bf20b704d350bd14fe4b5222253b79220fc2b678e2b82377d1ba0fb2d7fd4c69","impliedFormat":99},{"version":"61fd0c318cdcb7d3c33b1a4ce9672b8265622a5df2ad6c9afdccbc9f4c1c0c0b","signature":"31f1e85b7793907da145a21c1b8a4b197c4e83ca8071c41f866224d5c85a34e1","impliedFormat":99},{"version":"c062cba77512f53efd4623537ddedc89605eda6abcfd3f74d3b5245b4653c7be","signature":"6706bda959cff733c53a50b9715f00471f3b691d40964483b372b406c6e89b71","impliedFormat":99},{"version":"f914faa3b6c2fe1ce1f307a5d780f2021ff2211737e17adc3de047ea242e9e54","signature":"3eaee23f112a80139af770d0a6b7623f33675966ec3dca3cdab74a0ea071064b","impliedFormat":99},{"version":"7f6e6e6104931e7907c74e53d336094350978646d9c02c2a205ffcea90b58e61","signature":"f02942f8ae408270e572fa4c23aca8f42b496b83a836bfc8cec4f559e8ce1125","impliedFormat":99},{"version":"45a3d03cb79677851a1597d31d0936c706cb80d3731b68677012520d555de2e6","signature":"68cfd7feb1396181cc75d8cfbd95ae5e76e2ffee3c99aeb04e4d3175737c7a97","impliedFormat":99},{"version":"f2dcc3dae29c6d5d8512491a46505324a77f4a2ecb6d9abbabfda54c189e08f1","signature":"4efda82c758514a08d950cbc7079752d18f74223fd28014d62a9009694c019dd","impliedFormat":99},{"version":"7381e02deaa54cca84fd5829a7abe72b9aea79739cef50d2ef45e7133e46a245","signature":"bdfe37f9178a0c445385afef820471496de4d62381ceab44090e1d2f7cbf9d57","impliedFormat":99},{"version":"d41aef2354b7b9bbbd538909867a16826b1111f88d82b3db7669904d88f01938","signature":"378b818788219a531c09232dc8246ed3d0b70113a75770eb1d2847084edc7eae","impliedFormat":99},{"version":"5e65666e88324e800f5351c15893a29855f637211aca9e1cd3f7cccd372e9370","signature":"566b53d6bd25dd8a6d93ef387b4a0ae8a795c1ea4854298c3a328fc6712aebb5","impliedFormat":99},{"version":"26c6f7db0180070206eb2449c0c5fa0189fdfc0a258af7f60762b14c5908ec7e","signature":"f6b7f82e188e0e7d18bfa9cf1dc3ae29b31eae9950b495772537815380c7a573","impliedFormat":99},{"version":"f309bd228e2982f60f7ed817323e80d1187c1520248ae02059bd93d23eaa1acf","signature":"2885b4f117dd1d518624b16d3993749c17042fe5d799b60a46d9654d45fc1be1","impliedFormat":99},{"version":"4943bb6f444f19566066f99d034bc97ca84d63eb7b4546bb47097ee81080a94c","signature":"f517fe6b9594b6bc1939368aec01eb109e47e51250a3f836c2aa32baed7b8523","impliedFormat":99},{"version":"eb23d2fd79c2a9cf6560d5d2b70c7118b6bd0b6363d95b9a061e2cad156a1843","signature":"4f9c4b9dbd120667b4f0ba9bff7e163400642a2ac8348ca926d595d031d470fd","impliedFormat":99},{"version":"81196161e8515da71f0dff826598a5e7bee75d8e1169a187e2289aa7447e1d9f","signature":"1d8e5d8f1f509ebacf09e733e4784fb0e0ea05e02a0a21e1668c5105a6883d35","impliedFormat":99},{"version":"a927c900ab56fc61d06c65c5a9dcb65d25fbd0ae0c87cf2d6af5b0c083600340","signature":"59cf6960fe314fedec43a346e6f90a5b099ed0c3b602993ca4bd50ce63a33549","impliedFormat":99},{"version":"d5b86d07c000e9387b102e82cf8d1f36b466c01186ea76d1a490f37966f51715","signature":"fbc291030037bd7b99b49ae84a7d7191146404671852e0acb1aadccd0b625074","impliedFormat":99},{"version":"9fd52944f4d0748affc7601ddcd21af6e8c622d2e2855c9a5ad215ca3e09a7ae","signature":"1bc91777d9c68f9f46697b1859f11ea39e6c51e1eb135336d81289eb25c97623","impliedFormat":99},{"version":"7f4d58b40b9fb2850c7807263b7f76ab025ee11099ce8f193f5ee4a6fbc48023","signature":"9b5e43a8d86d0bd41f3efb075e415d1f239702b02afb90e34abb868d82a0f5d6","impliedFormat":99},{"version":"8ab097d44a126a00b1b8ae02d98f6458346d3324dc379d241ac040ed4220edb3","signature":"50a6aa824772162e168c9859f53b17a42a312be6b3c5346866e0354fc7d2c61b","impliedFormat":99},{"version":"5bc4d797c4c00430b4e7cea2ca1ffa7d8e3223fb526997bb4a3b73b556b344f5","signature":"46d6995fa6153325dae9fcaf8eb7fdc183936a42a3fb851efcda43cc0bf7edef","impliedFormat":99},{"version":"c82e75185b0709ec0b4ba2b1dc62ec92b60c064c457510e2de266f9cea2ef22a","signature":"95e6bad556a8ac48fc21c4587a5d4ab66d736dd1859ca05d5f62cf76558f7a1b","impliedFormat":99},{"version":"1e434b5f963ca54162c007922a664c33c058045e1f8258bc47ca7b10b0df25a3","signature":"9b47d61d6e847112cf7e9f2fb1631d36e81d966b79b46ede120eaf85058f6a97","impliedFormat":99},{"version":"d3601402d82e419617b77fb8364e5192eb7f1d685288f09ff39d63cde4c9e51c","signature":"3ea67cb40367de619dc4addce96f4d5e80160ea305c6afe526d44a1b7988a3ea","impliedFormat":99},{"version":"6dd145cdae9cca3d1dd9c077f79bf64f486a5d6dd851a80b53a638c3ed0353fb","signature":"bd205ae001b9e85aad4aeb1755b24591dc12372fe660fe31ee315074062eea0d","impliedFormat":99},{"version":"aadb176e258461e1de9b7665a4c300a6c51c6f8181d710d273332a8ffd4d320e","signature":"a76de0006e09d40bbc66a81fee7271d9305a1161cb8b0e98abd8577b6b308dc1","impliedFormat":99},{"version":"dac0403c3ff87860d7b130e4d46797b3a14b8491a2d483cdd3939b36a465c71c","signature":"b76a00a0d000ba2ad5b9ecaf389922e8135c8087180aa769fd517bd404ad5459","impliedFormat":99},{"version":"ef58c75d40fb4394e68971549eb3351058cb0b275db2738ae67df13ffc150cc8","signature":"6b38678a012f8055e5f0a8aa9c1ca13d8a6d60110541d60e244a132b31f1fec2","impliedFormat":99},{"version":"387288e860f965c2862d17c155ad361b1c2ceaff5f97761d179262336b88580d","signature":"872937c6cd92ad2ca1548878c5c2325dc0ba3339a93a31ed1947884908dd8aa8","impliedFormat":99},{"version":"f47ba4df2de5c263e2a7c95464685602b0db64ad88bc1f62a477dc98311f88ab","signature":"98a1f2a3ec600dc06f82c4fe120b7d2ef6aa8ec258b1c4fb77e44a913cc6e233","impliedFormat":99},{"version":"4c92257cc7c9b722720be143ed2b5b8387267854c67017372b09e2bcbbea6063","signature":"c0e70bcea10f408ecc8833d2aa2c3af825d13e470d74990ba538d0a81cf56a7b","impliedFormat":99},{"version":"c3c7389b117ec2f370d63fd673a8fc379b335b73666ea9c481848043d27e85d3","signature":"47e1b725b6d55b6284e63568e9074f195005f8b79e066b28449663aef9aed95c","impliedFormat":99},{"version":"3c0e1904a08a9f573980fc9cabc22e76657990ee395bac9a6bb50a6c102e52bd","signature":"42e936ecc3b9b7ad5a489eeaea7c25af8d7b71162a08e00ad638648e87a7ee51","impliedFormat":99},{"version":"77099443b054b22cb41374e020cf0ec8bbc3b077c25d5afb2d73e2207c661b80","signature":"e6f972dc162ead1d86897a3488316aab8b034472695d40eac74b6557e184919d","impliedFormat":99},{"version":"ea4c2e9deca942ae568c64e85d74cd5eb67c40b827956fd9a82e81d70e70585c","signature":"d91415fa00b3eef01ae2e08e8ffaf7cef9fa568515c83ac1474a22cc55bb3718","impliedFormat":99},{"version":"137618331aa4f4dd38c93e26a20b43dc8dc25a95485cdfd496f1a104b1b07c3b","signature":"912202a19d5e8972357af639e5e65d06c9171e30d4bf077fcdfe184c30effc7c","impliedFormat":99},{"version":"aa7446683810dffa2f3379a2e3a4ad3bcdc59d8da258ceac844ad6b68d3b418a","signature":"16ea4109bf543dd521c2e9cd4ff0f8c498250ce26f6fe55739e077e0761c8807","impliedFormat":99},{"version":"8130e89488ac70797bd1737f59ab9d4ca43805a6886ec3e600eb29cfd681c96e","signature":"9ab0406e79c8ae7a4f552c6609b8ce436242d74abbeebd1f4303a63c53ccb56a","impliedFormat":99},{"version":"0d2f8deb225e2cb7c3a818ff1a6e2aaaaf2104a0af8104d8c3e112cb9856f3ae","signature":"76fdce1e19f5cf3a2243a37f1778f534dc527e73c25100a14d63994c2f0b8760","impliedFormat":99},{"version":"df3b85e40aa11deae5e4e9094927c0ddc7a768c10f8d2e4f793558d7c832337c","signature":"dca314f637b4d88b884e8a6d76fb82cbf2b896e28f69feae8da56046045cf278","impliedFormat":99},{"version":"484cf35592b2c8be3608d937a5238c1fef88315cedc853cc817c1333ad316e35","signature":"e7181fa8e23ed61baefe346d52c8e0eaa94ab0c495c50933f3d0b1de1f949230","impliedFormat":99},{"version":"79604b209f32f23345daab19964a53d8dc9488d1ed7e23bad0ff08fc2c772da8","signature":"4dcaec244d4486f21fa7800fd6853c914df66154d4ca6b7cf0aa0370c5e6a656","impliedFormat":99},{"version":"019abfb86e2f8f44b9f78ebe1ada8748f2bf578caaf9536475531cf4eb4bde62","signature":"5111e2e2ffb1264243951a0c15fa3498e2c0c23e74599f535ad2227a16d8c503","impliedFormat":99},{"version":"8a6aecc7b7cd01b03424ea5e4755f8abceb433c7cac3c4cc74aea2df676ca32a","signature":"2c6c2e2996661a1558d5ce4040ec63a12913ea0c52fd071adc079fb1f3fc125c","impliedFormat":99},{"version":"3e87e6d2e51b392e59034bf46547bd13ffbf54301ccf98cada6692eec7261860","signature":"b6c5cb675d41673f3d27982b79d6b96033d9f0976ff9c62a49b4d61bbfc71b1f","impliedFormat":99},{"version":"950cb741daec5e63de1500aa3db70f9879fa16164fbb8cbc100437a258643f84","signature":"db5ff6f8ae2b0a4ff8cb16b43646b5561304b219fcc10ab1c470965743fe7662","impliedFormat":99},{"version":"f6ce18c4659b7e933d0e0289ee01d20eabc88543587ba71e3ee59ea2560e8294","signature":"e4bf9388266333a7b08b77dfc53f0bd5cc25da0e148c7a896aaac443c6becb47","impliedFormat":99},{"version":"d316f795ecc284e4a91622cd71635ba3964cd3ee5fa4bcca828173767520113e","signature":"986c6fa0b20de6185466d165274d7896f8734b92302b70ffccf4614be069db61","impliedFormat":99},{"version":"c5da010a38dec8e8569cf895d9dfaf1432e1d29d7f9f73644eb01f33f097e89d","signature":"02fad959da0f7217696defb6dead5557228c3ef9791e4cbb28164d4bea2a8245","impliedFormat":99},{"version":"85f4bc1f1eea3a08f8abc20c7dc41671a8c4ba35860c9e948ef7ca39eff18dc2","signature":"43065306646acc1b02890238154e075cb4e2a6cbc73e213e1f56fcc6ad568d37","impliedFormat":99},{"version":"3f24a1b9dce9699930f668b87e564ff8fbdd5742fffee6dc35e5e6e6a7c3af78","signature":"ccd53c52eddd8eaa19baaf4ac4224f18b3c9ee90cbdb62001f1477e59c5006be","impliedFormat":99},{"version":"7a55412506f0f9dc36fb71e3cc6e6781526deb1a759038ff8fd08c45d99326f4","signature":"e83ecc19d67e55848641650aa73755b88b0085d526fefdace51ddb11da8a4e92","impliedFormat":99},{"version":"6620bc01f2502a0cc57ab81250183715cff09aa568e747c62ed05911b1cdeb17","signature":"fc4560cb792ceead9e3fea2f6af6cfc1f6c3ae85091f1857c7d268a11c01b948","impliedFormat":99},{"version":"cef86916072eb96932fc00f390dde6c6bd57243adf5b936946adb7ab3b88c7d6","signature":"e7f707dc443bc70c46576168b519c3ba5479373575af4399855ca8b0b3013a02","impliedFormat":99},{"version":"2de3c458fe2feecfaf56cb658616504d7484f0cdfdcb150c45d7cce4172b05b4","signature":"8b97d49f33fb21b2b6616c0600cb2e3968deede70049dd50e38e7d5e60258e48","impliedFormat":99},{"version":"729ae253baca9b66f161e5d741763d835c190717a18714a4cc10033be270e566","signature":"a61270eb38bce478ba85ad3126a149e7d178fdfc02d91d901ec450ca2a08a3c9","impliedFormat":99},{"version":"4e0c892416db776abe7394b8d8c870bd9a0130712e6939e7bb97ff1dfa68f5f1","signature":"5be8d9fadb8846ec9529a9a0839940b7ed8667d9473d37fcaddf5a5407046bb8","impliedFormat":99},{"version":"1029ff8709b714292e9e06f2c7a61ef03249cd622dc0a14b9ef090eb4f5440e3","signature":"b02e020e0ad1378e97a9e1d26795695ac5527087e5c174e8aea70ec0d00192e9","impliedFormat":99},{"version":"784a7c50aee5402707d9acaccc422eb7fdc49d099e4b9eef79985a8cda49c11f","signature":"b34ecdba664a2ec3b8dbf9e941b6dbe316902ba0e406a7c31299e7eb959fb7e9","impliedFormat":99},{"version":"f022ac45c7b49f346c7a4aec7035380a6c20e864c3a3c9b093a0749214fdd972","signature":"66fc58d212375c49354827feb93cf399644bddf49c6d5aa7cd716cd81cf5b691","impliedFormat":99},{"version":"e0b193eaf469545abda1cf3ca86cb25992513dfff1c993b4032f1c80e4848427","signature":"0c184d4bfd1585aefffd168cf5f09cd420bebc653e912e418c24cab332f186e3","impliedFormat":99},{"version":"582dc809d8b93a8fc16c77e1ffc53850f3f84b40f8cb2a3cdf1996f79f1b3088","signature":"5ba57c948c9666d17638efae14ac47877ede75629fe17a412e5d6d1a4c505fd1","impliedFormat":99},{"version":"355bafe303bae845767ef24a37f7b2c711c250c7448895c0c938875f7f9c2032","signature":"5cf4cc52274a28bd8ab9406ed3e98fa53551f4b4cf1a34bd65b78b5e1439414f","impliedFormat":99},{"version":"b9108c4d92c7ffe8546ebd753ef6901b2abd197367e64f6826c3897ac541c3ae","signature":"48706ca10c8d5d293d1546c75598d177ec2e218aadc913c0c0e22d140788e167","impliedFormat":99},{"version":"87f39774f98ef561e0b3801981dbf7b9bb906a51d42af257a22f82a95e1c7602","signature":"9ea3d311a1dd736d63c38632d4a4af2019f41fcec61243ebf8e9f5a9ffaf2cbe","impliedFormat":99},{"version":"6d55ba1191a52297542ccc25f3fb7b5f551db0ba6794358a69e57f0dd5d24f88","signature":"a03ba7ec376ee4f7053cc8948e003e6e0cf9aa4c7aa65faf61e76ab153554cc7","impliedFormat":99},{"version":"ea80f681fb9d0ff6988eb827a0a958503dc03fa73fe2bcfbea7770228dcd1eab","signature":"2b82423c06b300d8612dffe4c1c8b8a0e11c4f1459d69798fe14479617c28afe","impliedFormat":99},{"version":"751f94eda0facc0d092cded2f1486f42377722cec3ac816dc8694539d307cb62","signature":"5cc44328b5fa4bfbe7f0a0fb660d46b6de824e565e8079471b6961e20e12d939","impliedFormat":99},{"version":"eb8ae88b6da33af8ee9b9497c3e01d2ff5679b60f68972a4101abb0e795aa138","signature":"43ea4830a704b847b6a91de852d511b6d6606d4a21f7baac811abeb0f13428d7","impliedFormat":99},{"version":"96dba49c7ca675ef31b5e4fbfb040472e1399e7579756cbe75bc467fd818b725","signature":"a34189c39e64e75e77d978d1c1705f53c585e7598705ffb45487f46c26b2cae1","impliedFormat":99},{"version":"d7e5fa867a59ea2dd844ac46134b6200bec7be5bf9caa24ad818a8c1cb9960c6","signature":"c92b068c8e0d743f3e2a7508f27874062fa902ca054369176acbc9502015e4bf","impliedFormat":99},{"version":"7ab5ea0a0fee1f29e1fac8686e28f007d043ba95d7e3b632f8cc7301c37e6811","signature":"db959774546bdddc7101c53894e3138cd245b33175f7c9377f9343eec1a8d680","impliedFormat":99},{"version":"c27b65f34815f9448a64c605dd63f6e03af85ccb2ad4bdcd0cf5332b645c9705","signature":"8c826192b6757cbc3ffc140a36dc8ada7957796bd2242467287ae231450b4f99","impliedFormat":99},{"version":"4ace5a8e6261759a5cbd617cae0cbd88c0c5193bb5345673b0a5a48dcf51f640","signature":"32a2e5d5fbfd8d6d2851fc644c4f1051c2ab5f068adb276e8cdc1fb67774fe5f","impliedFormat":99},{"version":"eb54d8688792ecc441056d4150a5da1dba8815050829d8cf74d08d50aa40b8a9","signature":"10c7bdc6518b5f312287ce56e2ad08318c9c6a205f70fc51138764c9f0579ccd","impliedFormat":99}],"root":[[59,168]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"experimentalDecorators":true,"module":100,"noImplicitAny":false,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[162,1],[163,2],[164,3],[165,4],[166,5],[167,6],[168,7],[120,8],[76,9],[64,10],[101,11],[117,12],[119,13],[67,14],[83,15],[115,16],[118,17],[105,18],[113,19],[71,20],[72,21],[70,22],[112,23],[68,22],[111,24],[100,25],[107,26],[106,27],[104,28],[78,29],[81,30],[65,31],[88,22],[85,32],[69,32],[95,33],[93,34],[87,35],[86,36],[94,37],[89,38],[91,39],[123,40],[125,41],[128,42],[130,43],[132,44],[134,45],[136,46],[138,47],[142,48],[144,49],[141,50],[127,22],[122,51],[124,52],[126,53],[129,51],[131,51],[133,51],[135,52],[140,54],[137,55],[143,56],[139,53],[121,57],[145,58],[146,59],[90,60],[147,61],[148,62],[149,63],[150,64],[151,65],[152,66],[153,67],[154,68],[155,60],[156,69],[110,70],[158,71],[159,72],[160,73],[161,74],[97,75],[96,76],[77,77],[99,78],[73,79],[114,78],[92,78],[74,80],[80,81],[102,82],[108,83],[109,84],[98,17],[61,85]],"latestChangedDtsFile":"./src/main-api/Renderer.d.ts","version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidtv/renderer",
3
- "version": "1.4.2",
3
+ "version": "1.5.0-0",
4
4
  "description": "SolidTV Renderer",
5
5
  "type": "module",
6
6
  "main": "./dist/exports/index.js",
@@ -11,8 +11,9 @@ import type {
11
11
  * Optimized WebGL Context Wrapper
12
12
  *
13
13
  * @remarks
14
- * This class contains the subset of the WebGLRenderingContext
15
- * API that is used by the renderer. Select high volume WebGL methods include
14
+ * This class contains the subset of the WebGLRenderingContext &
15
+ * WebGL2RenderingContext API that is used by the renderer. Select high volume
16
+ * WebGL methods include
16
17
  * caching optimizations to avoid making WebGL calls if the state is already set
17
18
  * to the desired value.
18
19
  *
@@ -50,6 +51,23 @@ export class WebGlContextWrapper {
50
51
  private curUniformLocations: Record<string, WebGLUniformLocation> = {};
51
52
  //#endregion Cached WebGL State
52
53
 
54
+ //#region Vertex Array Objects
55
+ // Native VAO handle when running on WebGL2, otherwise null.
56
+ private gl2: WebGL2RenderingContext | null;
57
+ // OES_vertex_array_object handle when running on WebGL1 with the extension,
58
+ // otherwise null.
59
+ private vaoExt: OES_vertex_array_object | null;
60
+ /**
61
+ * True when Vertex Array Objects are available (native WebGL2 or the
62
+ * `OES_vertex_array_object` WebGL1 extension). Lets callers cache attribute
63
+ * layout in a VAO and bind it with a single call instead of re-pointing
64
+ * every attribute on each draw.
65
+ */
66
+ public readonly canUseVertexArrayObject: boolean;
67
+ /** True when the underlying context is a WebGL2RenderingContext. */
68
+ public readonly isWebGl2: boolean;
69
+ //#endregion Vertex Array Objects
70
+
53
71
  //#region Canvas
54
72
  public readonly canvas;
55
73
  //#endregion Canvas
@@ -93,7 +111,7 @@ export class WebGlContextWrapper {
93
111
  public readonly INVALID_OPERATION: number;
94
112
  //#endregion WebGL Enums
95
113
 
96
- constructor(private gl: WebGLRenderingContext) {
114
+ constructor(private gl: WebGLRenderingContext | WebGL2RenderingContext) {
97
115
  // A freshly created WebGL context is in a fully specified default state.
98
116
  // Rather than reading that state back with getParameter/isEnabled — each a
99
117
  // synchronous CPU<->GPU round-trip, and previously ~one per texture unit
@@ -128,6 +146,19 @@ export class WebGlContextWrapper {
128
146
  this.boundElementArrayBuffer = null;
129
147
  this.curProgram = null;
130
148
 
149
+ // Resolve Vertex Array Object support: native on WebGL2, otherwise the
150
+ // OES_vertex_array_object extension on WebGL1 (universally available on
151
+ // the target browsers). `self` is used over `window` so the check also
152
+ // works when the context lives on an OffscreenCanvas in a worker.
153
+ this.gl2 =
154
+ self.WebGL2RenderingContext && gl instanceof self.WebGL2RenderingContext
155
+ ? (gl as WebGL2RenderingContext)
156
+ : null;
157
+ this.vaoExt =
158
+ this.gl2 === null ? gl.getExtension('OES_vertex_array_object') : null;
159
+ this.canUseVertexArrayObject = this.gl2 !== null || this.vaoExt !== null;
160
+ this.isWebGl2 = this.gl2 !== null;
161
+
131
162
  this.canvas = gl.canvas;
132
163
 
133
164
  // Extract GLenums
@@ -681,6 +712,75 @@ export class WebGlContextWrapper {
681
712
  this.gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
682
713
  }
683
714
 
715
+ /**
716
+ * ```
717
+ * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
718
+ * ```
719
+ *
720
+ * @remarks
721
+ * Binds an element (index) array buffer WITHOUT the upload that
722
+ * {@link elementArrayBufferData} performs, and WITHOUT the binding-cache
723
+ * short-circuit. The element-array binding is part of Vertex Array Object
724
+ * state, so this is used while building a VAO to record the shared index
725
+ * buffer into it. The bind is unconditional because binding a VAO already
726
+ * changes the element-array binding out from under the cache.
727
+ *
728
+ * @param buffer
729
+ */
730
+ bindElementArrayBuffer(buffer: WebGLBuffer | null) {
731
+ this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
732
+ this.boundElementArrayBuffer = buffer;
733
+ }
734
+
735
+ /**
736
+ * Creates a Vertex Array Object.
737
+ *
738
+ * @remarks
739
+ * Backed by native WebGL2 or the `OES_vertex_array_object` extension. Returns
740
+ * `null` when neither is available; guard with {@link canUseVertexArrayObject}.
741
+ *
742
+ * @returns
743
+ */
744
+ createVertexArray(): WebGLVertexArrayObject | null {
745
+ if (this.gl2 !== null) {
746
+ return this.gl2.createVertexArray();
747
+ }
748
+ if (this.vaoExt !== null) {
749
+ return this.vaoExt.createVertexArrayOES();
750
+ }
751
+ return null;
752
+ }
753
+
754
+ /**
755
+ * Binds a Vertex Array Object (or `null` to bind the default VAO).
756
+ *
757
+ * @param vertexArray
758
+ */
759
+ bindVertexArray(vertexArray: WebGLVertexArrayObject | null) {
760
+ if (this.gl2 !== null) {
761
+ this.gl2.bindVertexArray(vertexArray);
762
+ return;
763
+ }
764
+ if (this.vaoExt !== null) {
765
+ this.vaoExt.bindVertexArrayOES(vertexArray);
766
+ }
767
+ }
768
+
769
+ /**
770
+ * Deletes a Vertex Array Object.
771
+ *
772
+ * @param vertexArray
773
+ */
774
+ deleteVertexArray(vertexArray: WebGLVertexArrayObject) {
775
+ if (this.gl2 !== null) {
776
+ this.gl2.deleteVertexArray(vertexArray);
777
+ return;
778
+ }
779
+ if (this.vaoExt !== null) {
780
+ this.vaoExt.deleteVertexArrayOES(vertexArray);
781
+ }
782
+ }
783
+
684
784
  /**
685
785
  * Returns object with Attribute names as key and numbers as location values
686
786
  *
@@ -18,6 +18,35 @@ export interface BufferInfo {
18
18
  totalAvailable: number;
19
19
  }
20
20
 
21
+ /**
22
+ * Backend and device capabilities of an active renderer.
23
+ *
24
+ * @remarks
25
+ * Intended as a one-shot startup diagnostic (some fields are GL round-trips,
26
+ * see {@link CoreRenderer.getCapabilities}). Useful for confirming which
27
+ * rendering path a given device actually took (e.g. whether Vertex Array
28
+ * Objects engaged) and for logging device limits from the field.
29
+ */
30
+ export interface RendererCapabilities {
31
+ /** Active rendering backend. */
32
+ renderMode: 'webgl' | 'canvas';
33
+ /**
34
+ * WebGL major version of the active context (`1` or `2`), or `null` for the
35
+ * Canvas2D backend.
36
+ */
37
+ webGlVersion: 1 | 2 | null;
38
+ /**
39
+ * Whether attribute layout is cached in Vertex Array Objects (native WebGL2
40
+ * or the `OES_vertex_array_object` WebGL1 extension). `false` on Canvas2D or
41
+ * when neither is available.
42
+ */
43
+ vertexArrayObject: boolean;
44
+ /** Maximum texture dimension in pixels (`0` when not applicable). */
45
+ maxTextureSize: number;
46
+ /** Maximum simultaneously bound texture units (`0` when not applicable). */
47
+ maxTextureUnits: number;
48
+ }
49
+
21
50
  export abstract class CoreRenderer {
22
51
  public options: CoreRendererOptions;
23
52
  public mode: 'webgl' | 'canvas' | undefined;
@@ -56,6 +85,14 @@ export abstract class CoreRenderer {
56
85
  abstract getBufferInfo(): BufferInfo | null;
57
86
  abstract getQuadCount(): number | null;
58
87
  abstract getRenderOpCount(): number | null;
88
+ /**
89
+ * Report the active backend and device capabilities.
90
+ *
91
+ * @remarks
92
+ * Reads live GL parameters, which are CPU↔GPU round-trips, so call this once
93
+ * at startup (e.g. to log) rather than per frame.
94
+ */
95
+ abstract getCapabilities(): RendererCapabilities;
59
96
  abstract updateViewport(): void;
60
97
  abstract updateClearColor(color: number): void;
61
98
  getTextureCoords?(node: CoreNode): TextureCoords | undefined;
@@ -32,3 +32,17 @@ describe('CanvasRenderer.renderContext', () => {
32
32
  expect((renderer as any).context.globalAlpha).toBe(1);
33
33
  });
34
34
  });
35
+
36
+ describe('CanvasRenderer.getCapabilities', () => {
37
+ it('reports the canvas backend with no WebGL or VAO support', () => {
38
+ const renderer = Object.create(CanvasRenderer.prototype) as CanvasRenderer;
39
+
40
+ expect(renderer.getCapabilities()).toEqual({
41
+ renderMode: 'canvas',
42
+ webGlVersion: null,
43
+ vertexArrayObject: false,
44
+ maxTextureSize: 0,
45
+ maxTextureUnits: 0,
46
+ });
47
+ });
48
+ });
@@ -2,7 +2,11 @@ import type { CoreNode } from '../../CoreNode.js';
2
2
  import { SubTexture } from '../../textures/SubTexture.js';
3
3
  import { TextureType, type Texture } from '../../textures/Texture.js';
4
4
  import type { CoreContextTexture } from '../CoreContextTexture.js';
5
- import { CoreRenderer, type CoreRendererOptions } from '../CoreRenderer.js';
5
+ import {
6
+ CoreRenderer,
7
+ type CoreRendererOptions,
8
+ type RendererCapabilities,
9
+ } from '../CoreRenderer.js';
6
10
  import { CanvasTexture } from './CanvasTexture.js';
7
11
  import { parseColor } from '../../lib/colorParser.js';
8
12
  import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
@@ -293,6 +297,16 @@ export class CanvasRenderer extends CoreRenderer {
293
297
  return null;
294
298
  }
295
299
 
300
+ getCapabilities(): RendererCapabilities {
301
+ return {
302
+ renderMode: 'canvas',
303
+ webGlVersion: null,
304
+ vertexArrayObject: false,
305
+ maxTextureSize: 0,
306
+ maxTextureUnits: 0,
307
+ };
308
+ }
309
+
296
310
  // Canvas2D has no GPU out-of-memory signal to probe.
297
311
  checkForOutOfMemory(): boolean {
298
312
  return false;
@@ -9,6 +9,7 @@ import {
9
9
  CoreRenderer,
10
10
  type BufferInfo,
11
11
  type CoreRendererOptions,
12
+ type RendererCapabilities,
12
13
  } from '../CoreRenderer.js';
13
14
  import { SdfRenderOp } from './SdfRenderOp.js';
14
15
  import type { CoreContextTexture } from '../CoreContextTexture.js';
@@ -133,6 +134,15 @@ export class WebGlRenderer extends CoreRenderer {
133
134
  defaultShaderNode: WebGlShaderNode | null = null;
134
135
  quadBufferCollection: BufferCollection;
135
136
 
137
+ /**
138
+ * Shared static element (index) buffer for quad rendering.
139
+ *
140
+ * @remarks
141
+ * Bound once globally, but also recorded into each shader program's Vertex
142
+ * Array Object since the element-array binding is part of VAO state.
143
+ */
144
+ indexBuffer: WebGLBuffer | null = null;
145
+
136
146
  clearColor: WebGlColor = {
137
147
  raw: 0x00000000,
138
148
  normalized: [0, 0, 0, 0],
@@ -187,7 +197,7 @@ export class WebGlRenderer extends CoreRenderer {
187
197
  glw.setBlend(true);
188
198
  glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);
189
199
 
190
- createIndexBuffer(glw, this.stage.bufferMemory);
200
+ this.indexBuffer = createIndexBuffer(glw, this.stage.bufferMemory);
191
201
 
192
202
  // Create the static node coords buffer
193
203
  // 80 is the magic number used in createIndexBuffer
@@ -1280,6 +1290,17 @@ export class WebGlRenderer extends CoreRenderer {
1280
1290
  return bufferInfo;
1281
1291
  }
1282
1292
 
1293
+ getCapabilities(): RendererCapabilities {
1294
+ const glw = this.glw;
1295
+ return {
1296
+ renderMode: 'webgl',
1297
+ webGlVersion: glw.isWebGl2 ? 2 : 1,
1298
+ vertexArrayObject: glw.canUseVertexArrayObject,
1299
+ maxTextureSize: glw.getParameter(glw.MAX_TEXTURE_SIZE) as number,
1300
+ maxTextureUnits: glw.getParameter(glw.MAX_TEXTURE_IMAGE_UNITS) as number,
1301
+ };
1302
+ }
1303
+
1283
1304
  /**
1284
1305
  * Drain the GL error queue once and report whether a GL_OUT_OF_MEMORY was
1285
1306
  * seen since the last call.
@@ -30,6 +30,19 @@ export class WebGlShaderProgram implements CoreShaderProgram {
30
30
  public isDestroyed = false;
31
31
  supportsIndexedTextures = false;
32
32
 
33
+ /**
34
+ * Cached Vertex Array Objects, keyed by the buffer collection they capture.
35
+ *
36
+ * @remarks
37
+ * A VAO records this program's attribute layout (enabled arrays, pointers and
38
+ * their source buffers) plus the shared element index buffer, so a draw only
39
+ * needs a single `bindVertexArray` instead of re-pointing every attribute. In
40
+ * practice a program only ever binds one collection, but keying by collection
41
+ * keeps it correct if that ever changes. Empty / unused when the context has
42
+ * no VAO support (see {@link WebGlContextWrapper.canUseVertexArrayObject}).
43
+ */
44
+ protected vaos = new Map<BufferCollection, WebGLVertexArrayObject | null>();
45
+
33
46
  constructor(
34
47
  renderer: WebGlRenderer,
35
48
  config: WebGlShaderType,
@@ -259,6 +272,30 @@ export class WebGlShaderProgram implements CoreShaderProgram {
259
272
 
260
273
  bindBufferCollection(buffer: BufferCollection) {
261
274
  const { glw } = this;
275
+
276
+ if (glw.canUseVertexArrayObject === true) {
277
+ let vao = this.vaos.get(buffer);
278
+ if (vao === undefined) {
279
+ // First draw with this collection: record the attribute layout into a
280
+ // VAO. createVao leaves the new VAO bound, so there's nothing more to do.
281
+ vao = this.createVao(buffer);
282
+ this.vaos.set(buffer, vao);
283
+ return;
284
+ }
285
+ glw.bindVertexArray(vao);
286
+ return;
287
+ }
288
+
289
+ // No VAO support: re-point every attribute on each draw.
290
+ this.bindAttributes(buffer);
291
+ }
292
+
293
+ /**
294
+ * Point this program's vertex attributes at the given buffer collection.
295
+ * When a VAO is bound this records into it; otherwise it mutates global state.
296
+ */
297
+ private bindAttributes(buffer: BufferCollection) {
298
+ const { glw } = this;
262
299
  const attribs = this.attributeLocations;
263
300
  const attribLen = attribs.length;
264
301
 
@@ -282,6 +319,25 @@ export class WebGlShaderProgram implements CoreShaderProgram {
282
319
  }
283
320
  }
284
321
 
322
+ /**
323
+ * Create and populate a Vertex Array Object capturing this program's
324
+ * attribute layout for the given buffer collection. The new VAO is left bound.
325
+ */
326
+ private createVao(buffer: BufferCollection): WebGLVertexArrayObject | null {
327
+ const { glw } = this;
328
+ const vao = glw.createVertexArray();
329
+ glw.bindVertexArray(vao);
330
+
331
+ this.bindAttributes(buffer);
332
+
333
+ // The element-array binding is part of VAO state and starts out null on a
334
+ // fresh VAO, so record the shared index buffer into it or indexed
335
+ // drawElements would read from no buffer.
336
+ glw.bindElementArrayBuffer(this.renderer.indexBuffer);
337
+
338
+ return vao;
339
+ }
340
+
285
341
  bindTextures(textures: WebGlCtxTexture[]) {
286
342
  const t = textures[0];
287
343
  if (t === undefined) {
@@ -299,6 +355,13 @@ export class WebGlShaderProgram implements CoreShaderProgram {
299
355
  }
300
356
 
301
357
  detach(): void {
358
+ // With VAOs the enabled-attribute state lives in each per-collection VAO,
359
+ // not in global context state. Disabling here would mutate whichever VAO is
360
+ // currently bound and corrupt it for the next draw, so there's nothing to
361
+ // do on a program switch.
362
+ if (this.glw.canUseVertexArrayObject === true) {
363
+ return;
364
+ }
302
365
  this.disableAttributes();
303
366
  }
304
367
 
@@ -310,6 +373,13 @@ export class WebGlShaderProgram implements CoreShaderProgram {
310
373
 
311
374
  this.detach();
312
375
 
376
+ for (const vao of this.vaos.values()) {
377
+ if (vao !== null) {
378
+ glw.deleteVertexArray(vao);
379
+ }
380
+ }
381
+ this.vaos.clear();
382
+
313
383
  glw.deleteProgram(this.program!);
314
384
  this.program = null;
315
385
  this.uniformLocations = null;