fitsview 0.3.3__tar.gz → 0.3.5.dev0__tar.gz

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 (84) hide show
  1. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/AGENTS.md +6 -1
  2. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/PKG-INFO +3 -1
  3. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/README.md +2 -0
  4. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/_version.py +1 -1
  5. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/labextension/package.json +1 -1
  6. fitsview-0.3.3/fitsview/labextension/static/55.ac78f4ea4a687f96d25d.js → fitsview-0.3.5.dev0/fitsview/labextension/static/55.63ee9ee87c7737f48ec6.js +1 -1
  7. fitsview-0.3.5.dev0/fitsview/labextension/static/728.d181c6f11da84a449851.js +1 -0
  8. fitsview-0.3.5.dev0/fitsview/labextension/static/777.7bc4a6d6820f793b0d35.js +1 -0
  9. fitsview-0.3.3/fitsview/labextension/static/14e2ce1ce9dea8d282d3.wasm → fitsview-0.3.5.dev0/fitsview/labextension/static/7b93d2a8e325f02dc768.wasm +0 -0
  10. fitsview-0.3.5.dev0/fitsview/labextension/static/remoteEntry.e33d64c8966dcb0c9630.js +1 -0
  11. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/pyproject.toml +8 -4
  12. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/ui-tests/jupyter_server_test_config.py +4 -0
  13. fitsview-0.3.5.dev0/ui-tests/package.json +21 -0
  14. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/ui-tests/yarn.lock +661 -710
  15. fitsview-0.3.5.dev0/uv.lock +2257 -0
  16. fitsview-0.3.5.dev0/viewarr/package-lock.json +14 -0
  17. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/viewarr.d.ts +6 -6
  18. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/viewarr.js +16 -16
  19. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/viewarr_bg.wasm +0 -0
  20. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/viewarr_bg.wasm.d.ts +6 -6
  21. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/yarn.lock +743 -743
  22. fitsview-0.3.3/.gitmodules +0 -3
  23. fitsview-0.3.3/fitsview/labextension/static/728.f72867741749a85b33b3.js +0 -1
  24. fitsview-0.3.3/fitsview/labextension/static/777.e9338b5c36dcbc94add8.js +0 -1
  25. fitsview-0.3.3/fitsview/labextension/static/remoteEntry.c89edd06d5c9383ee0e1.js +0 -1
  26. fitsview-0.3.3/package-lock.json +0 -15493
  27. fitsview-0.3.3/ui-tests/package.json +0 -15
  28. fitsview-0.3.3/viewarr/.git +0 -1
  29. fitsview-0.3.3/viewarr/Cargo.lock +0 -4358
  30. fitsview-0.3.3/viewarr/pkg/.gitignore +0 -1
  31. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/.copier-answers.yml +0 -0
  32. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/.gitignore +0 -0
  33. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/.prettierignore +0 -0
  34. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/.yarnrc.yml +0 -0
  35. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/CHANGELOG.md +0 -0
  36. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/LICENSE +0 -0
  37. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/babel.config.js +0 -0
  38. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/conftest.py +0 -0
  39. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/__init__.py +0 -0
  40. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/handlers.py +0 -0
  41. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/labextension/static/764.754d0996bf96c92a233c.js +0 -0
  42. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/labextension/static/style.js +0 -0
  43. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/labextension/static/third-party-licenses.json +0 -0
  44. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/tests/__init__.py +0 -0
  45. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/tests/generate_files.py +0 -0
  46. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/fitsview/tests/test_handlers.py +0 -0
  47. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/install.json +0 -0
  48. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/jest.config.js +0 -0
  49. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/jupyter-config/server-config/fitsview.json +0 -0
  50. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/package.json +0 -0
  51. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/src/__tests__/fitsview.spec.ts +0 -0
  52. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/src/handler.ts +0 -0
  53. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/src/index.ts +0 -0
  54. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/src/viewarr.d.ts +0 -0
  55. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/src/widget.ts +0 -0
  56. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/style/base.css +0 -0
  57. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/style/index.css +0 -0
  58. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/style/index.js +0 -0
  59. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/tsconfig.json +0 -0
  60. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/tsconfig.test.json +0 -0
  61. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/ui-tests/README.md +0 -0
  62. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/ui-tests/playwright.config.js +0 -0
  63. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/ui-tests/tests/fitsview.spec.ts +0 -0
  64. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/.gitignore +0 -0
  65. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/.vscode/settings.json +0 -0
  66. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/Cargo.toml +0 -0
  67. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/LICENSE +0 -0
  68. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/README.md +0 -0
  69. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/build.rs +0 -0
  70. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/generate_colormaps.py +0 -0
  71. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/js/index.d.ts +0 -0
  72. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/js/index.js +0 -0
  73. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/package.json +0 -0
  74. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/LICENSE +0 -0
  75. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/README.md +0 -0
  76. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/package.json +0 -0
  77. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/wrapper.d.ts +0 -0
  78. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/pkg/wrapper.js +0 -0
  79. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/app.rs +0 -0
  80. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/colormap.rs +0 -0
  81. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/colormap_luts.rs +0 -0
  82. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/lib.rs +0 -0
  83. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/transform.rs +0 -0
  84. {fitsview-0.3.3 → fitsview-0.3.5.dev0}/viewarr/src/widget.rs +0 -0
@@ -588,7 +588,12 @@ See [Development Workflow](#development-workflow) section for full command refer
588
588
 
589
589
  ## Viewarr (Rust/WASM Image Viewer)
590
590
 
591
- The `viewarr/` directory contains a Rust/WASM image viewer built with egui. This is a separate component that compiles to WebAssembly and is bundled into the JupyterLab extension.
591
+ This package lives in the `viewarr` monorepo. The `viewarr/` directory here is a **symlink to
592
+ the single shared `../viewarr`** copy at the repo root (not a submodule, not a private copy). It
593
+ is a Rust/WASM image viewer built with egui that compiles to WebAssembly and is bundled into the
594
+ JupyterLab extension. The same shared `viewarr/pkg/` is consumed by `pyviewarr`, so a viewarr
595
+ change affects both packages — build and test both before committing, and a single release ships
596
+ the new viewarr into both (see the root `README.md` and `.github/workflows/ci.yml`).
592
597
 
593
598
  ### Building Viewarr
594
599
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fitsview
3
- Version: 0.3.3
3
+ Version: 0.3.5.dev0
4
4
  Summary: View FITS astronomical data files in JupyterLab without downloading entire files.
5
5
  Project-URL: Homepage, https://github.com/joseph-long/jupyterlab-fitsview/
6
6
  Project-URL: Bug Tracker, https://github.com/joseph-long/jupyterlab-fitsview/issues
@@ -72,6 +72,8 @@ Description-Content-Type: text/markdown
72
72
 
73
73
  A JupyterLab extension for viewing FITS (Flexible Image Transport System) files without downloading entire files to the browser. This is essential for working with large astronomical datasets.
74
74
 
75
+ ![Screenshot of a JupyterLab interface with a notebook next to a FITS viewer](./screenshot.png)
76
+
75
77
  ## Features
76
78
 
77
79
  - **Lazy loading**: Opens FITS files without downloading the full content to the browser
@@ -5,6 +5,8 @@
5
5
 
6
6
  A JupyterLab extension for viewing FITS (Flexible Image Transport System) files without downloading entire files to the browser. This is essential for working with large astronomical datasets.
7
7
 
8
+ ![Screenshot of a JupyterLab interface with a notebook next to a FITS viewer](./screenshot.png)
9
+
8
10
  ## Features
9
11
 
10
12
  - **Lazy loading**: Opens FITS files without downloading the full content to the browser
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '0.3.3'
4
+ __version__ = VERSION = '0.3.5.dev0'
@@ -116,7 +116,7 @@
116
116
  "extension": true,
117
117
  "outputDir": "fitsview/labextension",
118
118
  "_build": {
119
- "load": "static/remoteEntry.c89edd06d5c9383ee0e1.js",
119
+ "load": "static/remoteEntry.e33d64c8966dcb0c9630.js",
120
120
  "extension": "./extension",
121
121
  "style": "./style"
122
122
  }
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkfitsview=self.webpackChunkfitsview||[]).push([[55],{55(e,n,t){t.r(n),t.d(n,{ViewerHandle:()=>_,default:()=>X,initSync:()=>H});class _{static __wrap(e){e>>>=0;const n=Object.create(_.prototype);return n.__wbg_ptr=e,b.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,b.unregister(this),e}free(){const e=this.__destroy_into_raw();q.__wbg_viewerhandle_free(e,0)}clearCallbacks(){q.viewerhandle_clearCallbacks(this.__wbg_ptr)}static create(e){return q.viewerhandle_create(e)}destroy(){q.viewerhandle_destroy(this.__wbg_ptr)}getBias(){return q.viewerhandle_getBias(this.__wbg_ptr)}getColormap(){let e,n;try{const t=q.viewerhandle_getColormap(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getColormapReversed(){return 0!==q.viewerhandle_getColormapReversed(this.__wbg_ptr)}getContrast(){return q.viewerhandle_getContrast(this.__wbg_ptr)}getMarkers(){return q.viewerhandle_getMarkers(this.__wbg_ptr)}getOverlayMessage(){let e,n;try{const t=q.viewerhandle_getOverlayMessage(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getPivotPoint(){return q.viewerhandle_getPivotPoint(this.__wbg_ptr)}getRotation(){return q.viewerhandle_getRotation(this.__wbg_ptr)}getShowPivotMarker(){return 0!==q.viewerhandle_getShowPivotMarker(this.__wbg_ptr)}getStretchMode(){let e,n;try{const t=q.viewerhandle_getStretchMode(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getValueRange(){return q.viewerhandle_getValueRange(this.__wbg_ptr)}getViewBounds(e,n){return q.viewerhandle_getViewBounds(this.__wbg_ptr,e,n)}getZoom(){return q.viewerhandle_getZoom(this.__wbg_ptr)}onClick(e){q.viewerhandle_onClick(this.__wbg_ptr,e)}onStateChange(e){q.viewerhandle_onStateChange(this.__wbg_ptr,e)}setBias(e){q.viewerhandle_setBias(this.__wbg_ptr,e)}setColormap(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setColormap(this.__wbg_ptr,n,t)}setColormapReversed(e){q.viewerhandle_setColormapReversed(this.__wbg_ptr,e)}setContrast(e){q.viewerhandle_setContrast(this.__wbg_ptr,e)}setImageData(e,n,t,_){const r=D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$,o=q.viewerhandle_setImageData(this.__wbg_ptr,e,n,t,r,c);if(o[1])throw z(o[0])}setMarkers(e){const n=function(e,n){const t=n(4*e.length,4)>>>0;return S().set(e,t/4),$=e.length,t}(e,q.__wbindgen_malloc),t=$;q.viewerhandle_setMarkers(this.__wbg_ptr,n,t)}setOverlayMessage(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setOverlayMessage(this.__wbg_ptr,n,t)}setPivotPoint(e,n){q.viewerhandle_setPivotPoint(this.__wbg_ptr,e,n)}setRotation(e){q.viewerhandle_setRotation(this.__wbg_ptr,e)}setShowPivotMarker(e){q.viewerhandle_setShowPivotMarker(this.__wbg_ptr,e)}setStretchMode(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setStretchMode(this.__wbg_ptr,n,t)}setValueRange(e,n){q.viewerhandle_setValueRange(this.__wbg_ptr,e,n)}setViewBounds(e,n,t,_,r,c){q.viewerhandle_setViewBounds(this.__wbg_ptr,e,n,t,_,r,c)}setZoom(e){q.viewerhandle_setZoom(this.__wbg_ptr,e)}zoomIn(){q.viewerhandle_zoomIn(this.__wbg_ptr)}zoomOut(){q.viewerhandle_zoomOut(this.__wbg_ptr)}zoomToFit(){q.viewerhandle_zoomToFit(this.__wbg_ptr)}}function r(){const e={__proto__:null,__wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25:function(e){const n="boolean"==typeof e?e:void 0;return O(n)?16777215:n?1:0},__wbg___wbindgen_debug_string_0bc8482c6e3508ae:function(e,n){const t=D(g(n),q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg___wbindgen_in_47fa6863be6f2f25:function(e,n){return e in n},__wbg___wbindgen_is_function_0095a73b8b156f76:function(e){return"function"==typeof e},__wbg___wbindgen_is_undefined_9e4d92534c42d778:function(e){return void 0===e},__wbg___wbindgen_number_get_8ff4255516ccad3e:function(e,n){const t="number"==typeof n?n:void 0;x().setFloat64(e+8,O(t)?0:t,!0),x().setInt32(e+0,!O(t),!0)},__wbg___wbindgen_string_get_72fb696202c56729:function(e,n){const t="string"==typeof n?n:void 0;var _=O(t)?0:D(t,q.__wbindgen_malloc,q.__wbindgen_realloc),r=$;x().setInt32(e+4,r,!0),x().setInt32(e+0,_,!0)},__wbg___wbindgen_throw_be289d5034ed271b:function(e,n){throw new Error(k(e,n))},__wbg__wbg_cb_unref_d9b87ff7982e3b21:function(e){e._wbg_cb_unref()},__wbg_activeElement_1554b6917654f8d6:function(e){const n=e.activeElement;return O(n)?0:f(n)},__wbg_activeElement_d9d2a80dfafa67ed:function(e){const n=e.activeElement;return O(n)?0:f(n)},__wbg_activeTexture_6f9a710514686c24:function(e,n){e.activeTexture(n>>>0)},__wbg_activeTexture_7e39cb8fdf4b6d5a:function(e,n){e.activeTexture(n>>>0)},__wbg_addEventListener_c917b5aafbcf493f:function(){return T(function(e,n,t,_,r){e.addEventListener(k(n,t),_,r)},arguments)},__wbg_altKey_73c1173ba53073d5:function(e){return e.altKey},__wbg_altKey_8155c319c215e3aa:function(e){return e.altKey},__wbg_appendChild_dea38765a26d346d:function(){return T(function(e,n){return e.appendChild(n)},arguments)},__wbg_arrayBuffer_05ce1af23e9064e8:function(e){return e.arrayBuffer()},__wbg_at_dfc235641cc0e40c:function(e,n){return e.at(n)},__wbg_attachShader_32114efcf2744eb6:function(e,n,t){e.attachShader(n,t)},__wbg_attachShader_b36058e5c9eeaf54:function(e,n,t){e.attachShader(n,t)},__wbg_bindBuffer_69a7a0b8f3f9b9cf:function(e,n,t){e.bindBuffer(n>>>0,t)},__wbg_bindBuffer_c9068e8712a034f5:function(e,n,t){e.bindBuffer(n>>>0,t)},__wbg_bindTexture_b2b7b1726a83f93e:function(e,n,t){e.bindTexture(n>>>0,t)},__wbg_bindTexture_ec13ddcb9dc8e032:function(e,n,t){e.bindTexture(n>>>0,t)},__wbg_bindVertexArrayOES_c2610602f7485b3f:function(e,n){e.bindVertexArrayOES(n)},__wbg_bindVertexArray_78220d1edb1d2382:function(e,n){e.bindVertexArray(n)},__wbg_blendEquationSeparate_1b12c43928cc7bc1:function(e,n,t){e.blendEquationSeparate(n>>>0,t>>>0)},__wbg_blendEquationSeparate_a8094fbec94cf80e:function(e,n,t){e.blendEquationSeparate(n>>>0,t>>>0)},__wbg_blendFuncSeparate_95465944f788a092:function(e,n,t,_,r){e.blendFuncSeparate(n>>>0,t>>>0,_>>>0,r>>>0)},__wbg_blendFuncSeparate_f366c170c5097fbe:function(e,n,t,_,r){e.blendFuncSeparate(n>>>0,t>>>0,_>>>0,r>>>0)},__wbg_blockSize_ef9a626745d7dfac:function(e){return e.blockSize},__wbg_blur_07f34335e06e5234:function(){return T(function(e){e.blur()},arguments)},__wbg_body_f67922363a220026:function(e){const n=e.body;return O(n)?0:f(n)},__wbg_bottom_c7ec510a18034add:function(e){return e.bottom},__wbg_bufferData_52235e85894af988:function(e,n,t,_){e.bufferData(n>>>0,t,_>>>0)},__wbg_bufferData_98f6c413a8f0f139:function(e,n,t,_){e.bufferData(n>>>0,t,_>>>0)},__wbg_button_d86841d0a03adc44:function(e){return e.button},__wbg_call_389efe28435a9388:function(){return T(function(e,n){return e.call(n)},arguments)},__wbg_call_4708e0c13bdc8e95:function(){return T(function(e,n,t){return e.call(n,t)},arguments)},__wbg_cancelAnimationFrame_cd35895d78cf4510:function(){return T(function(e,n){e.cancelAnimationFrame(n)},arguments)},__wbg_cancel_8f4e3a220b2f0fe1:function(e){e.cancel()},__wbg_changedTouches_b6ab7be7b1aed8d6:function(e){return e.changedTouches},__wbg_clearColor_404a3b16d43db93b:function(e,n,t,_,r){e.clearColor(n,t,_,r)},__wbg_clearColor_f16a5dae33fe425d:function(e,n,t,_,r){e.clearColor(n,t,_,r)},__wbg_clearInterval_c75df0651e74fbb8:function(e,n){e.clearInterval(n)},__wbg_clear_4d801d0d054c3579:function(e,n){e.clear(n>>>0)},__wbg_clear_7187030f892c5ca0:function(e,n){e.clear(n>>>0)},__wbg_clientX_a3c5f4ff30e91264:function(e){return e.clientX},__wbg_clientX_ed7d2827ca30c165:function(e){return e.clientX},__wbg_clientY_79ab4711d0597b2c:function(e){return e.clientY},__wbg_clientY_e28509acb9b4a42a:function(e){return e.clientY},__wbg_clipboardData_018789e461e23aaa:function(e){const n=e.clipboardData;return O(n)?0:f(n)},__wbg_clipboard_98c5a32249fa8416:function(e){return e.clipboard},__wbg_colorMask_177d9762658e5e28:function(e,n,t,_,r){e.colorMask(0!==n,0!==t,0!==_,0!==r)},__wbg_colorMask_7a8dbc86e7376a9b:function(e,n,t,_,r){e.colorMask(0!==n,0!==t,0!==_,0!==r)},__wbg_compileShader_63b824e86bb00b8f:function(e,n){e.compileShader(n)},__wbg_compileShader_94718a93495d565d:function(e,n){e.compileShader(n)},__wbg_contentBoxSize_328a5cd3e7d063a9:function(e){return e.contentBoxSize},__wbg_contentRect_79b98e4d4f4728a4:function(e){return e.contentRect},__wbg_createBuffer_26534c05e01b8559:function(e){const n=e.createBuffer();return O(n)?0:f(n)},__wbg_createBuffer_c4ec897aacc1b91c:function(e){const n=e.createBuffer();return O(n)?0:f(n)},__wbg_createElement_49f60fdcaae809c8:function(){return T(function(e,n,t){return e.createElement(k(n,t))},arguments)},__wbg_createProgram_98aaa91f7c81c5e2:function(e){const n=e.createProgram();return O(n)?0:f(n)},__wbg_createProgram_9b7710a1f2701c2c:function(e){const n=e.createProgram();return O(n)?0:f(n)},__wbg_createShader_e3ac08ed8c5b14b2:function(e,n){const t=e.createShader(n>>>0);return O(t)?0:f(t)},__wbg_createShader_f2b928ca9a426b14:function(e,n){const t=e.createShader(n>>>0);return O(t)?0:f(t)},__wbg_createTexture_16d2c8a3d7d4a75a:function(e){const n=e.createTexture();return O(n)?0:f(n)},__wbg_createTexture_f9451a82c7527ce2:function(e){const n=e.createTexture();return O(n)?0:f(n)},__wbg_createVertexArrayOES_bd76ceee6ab9b95e:function(e){const n=e.createVertexArrayOES();return O(n)?0:f(n)},__wbg_createVertexArray_ad5294951ae57497:function(e){const n=e.createVertexArray();return O(n)?0:f(n)},__wbg_ctrlKey_09a1b54d77dea92b:function(e){return e.ctrlKey},__wbg_ctrlKey_96ff94f8b18636a3:function(e){return e.ctrlKey},__wbg_dataTransfer_d924a622fbe51b06:function(e){const n=e.dataTransfer;return O(n)?0:f(n)},__wbg_data_acd149571f3b741a:function(e,n){const t=n.data;var _=O(t)?0:D(t,q.__wbindgen_malloc,q.__wbindgen_realloc),r=$;x().setInt32(e+4,r,!0),x().setInt32(e+0,_,!0)},__wbg_debug_21bee8b7f5110d62:function(e,n){console.debug(k(e,n))},__wbg_deleteBuffer_22fcc93912cbf659:function(e,n){e.deleteBuffer(n)},__wbg_deleteBuffer_ab099883c168644d:function(e,n){e.deleteBuffer(n)},__wbg_deleteProgram_9298fb3e3c1d3a78:function(e,n){e.deleteProgram(n)},__wbg_deleteProgram_f354e79b8cae8076:function(e,n){e.deleteProgram(n)},__wbg_deleteShader_aaf3b520a64d5d9d:function(e,n){e.deleteShader(n)},__wbg_deleteShader_ff70ca962883e241:function(e,n){e.deleteShader(n)},__wbg_deleteTexture_2be78224e5584a8b:function(e,n){e.deleteTexture(n)},__wbg_deleteTexture_9d411c0e60ffa324:function(e,n){e.deleteTexture(n)},__wbg_deltaMode_a1d1df711e44cefc:function(e){return e.deltaMode},__wbg_deltaX_f0ca9116db5f7bc1:function(e){return e.deltaX},__wbg_deltaY_eb94120160ac821c:function(e){return e.deltaY},__wbg_detachShader_0837532df5c988ca:function(e,n,t){e.detachShader(n,t)},__wbg_detachShader_1ba1e8cb604560a9:function(e,n,t){e.detachShader(n,t)},__wbg_devicePixelContentBoxSize_8f39437eab7f03ea:function(e){return e.devicePixelContentBoxSize},__wbg_devicePixelRatio_5c458affc89fc209:function(e){return e.devicePixelRatio},__wbg_disableVertexAttribArray_24a020060006b10f:function(e,n){e.disableVertexAttribArray(n>>>0)},__wbg_disableVertexAttribArray_4bac633c27bae599:function(e,n){e.disableVertexAttribArray(n>>>0)},__wbg_disable_7fe6fb3e97717f88:function(e,n){e.disable(n>>>0)},__wbg_disable_bd37bdcca1764aea:function(e,n){e.disable(n>>>0)},__wbg_disconnect_5202f399852258c0:function(e){e.disconnect()},__wbg_document_ee35a3d3ae34ef6c:function(e){const n=e.document;return O(n)?0:f(n)},__wbg_drawElements_94f6577070a45da2:function(e,n,t,_,r){e.drawElements(n>>>0,t,_>>>0,r)},__wbg_drawElements_ea2abffa9d1dc736:function(e,n,t,_,r){e.drawElements(n>>>0,t,_>>>0,r)},__wbg_elementFromPoint_c626cb9a65328c63:function(e,n,t){const _=e.elementFromPoint(n,t);return O(_)?0:f(_)},__wbg_elementFromPoint_fcddd007465b6e73:function(e,n,t){const _=e.elementFromPoint(n,t);return O(_)?0:f(_)},__wbg_enableVertexAttribArray_475e06c31777296d:function(e,n){e.enableVertexAttribArray(n>>>0)},__wbg_enableVertexAttribArray_aa6e40408261eeb9:function(e,n){e.enableVertexAttribArray(n>>>0)},__wbg_enable_d1ac04dfdd2fb3ae:function(e,n){e.enable(n>>>0)},__wbg_enable_fee40f19b7053ea3:function(e,n){e.enable(n>>>0)},__wbg_error_541113e32ba1ecbd:function(e,n){let t,_;try{t=e,_=n,console.error(k(e,n))}finally{q.__wbindgen_free(t,_,1)}},__wbg_files_c7608e3fb8eb4d07:function(e){const n=e.files;return O(n)?0:f(n)},__wbg_focus_128ff465f65677cc:function(){return T(function(e){e.focus()},arguments)},__wbg_force_6acda126382fc3c0:function(e){return e.force},__wbg_generateMipmap_5f9058c19cf7c6c1:function(e,n){e.generateMipmap(n>>>0)},__wbg_generateMipmap_c3aad515dd61ffd6:function(e,n){e.generateMipmap(n>>>0)},__wbg_getAttribLocation_16c406a68275ed4b:function(e,n,t,_){return e.getAttribLocation(n,k(t,_))},__wbg_getAttribLocation_7321cf2d67e036f6:function(e,n,t,_){return e.getAttribLocation(n,k(t,_))},__wbg_getBoundingClientRect_b5c8c34d07878818:function(e){return e.getBoundingClientRect()},__wbg_getComputedStyle_2d1f9dfe4ee7e0b9:function(){return T(function(e,n){const t=e.getComputedStyle(n);return O(t)?0:f(t)},arguments)},__wbg_getContext_2a5764d48600bc43:function(){return T(function(e,n,t){const _=e.getContext(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getData_2aada4ab05d445e3:function(){return T(function(e,n,t,_){const r=D(n.getData(k(t,_)),q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},arguments)},__wbg_getError_1182114725905664:function(e){return e.getError()},__wbg_getError_bba8594facbfd5e1:function(e){return e.getError()},__wbg_getExtension_388df13305a298af:function(){return T(function(e,n,t){const _=e.getExtension(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getExtension_3c0cb5ae01bb4b17:function(){return T(function(e,n,t){const _=e.getExtension(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getItem_0c792d344808dcf5:function(){return T(function(e,n,t,_){const r=n.getItem(k(t,_));var c=O(r)?0:D(r,q.__wbindgen_malloc,q.__wbindgen_realloc),o=$;x().setInt32(e+4,o,!0),x().setInt32(e+0,c,!0)},arguments)},__wbg_getParameter_1ecb910cfdd21f88:function(){return T(function(e,n){return e.getParameter(n>>>0)},arguments)},__wbg_getParameter_2e1f97ecaab76274:function(){return T(function(e,n){return e.getParameter(n>>>0)},arguments)},__wbg_getProgramInfoLog_2ffa30e3abb8b5c2:function(e,n,t){const _=n.getProgramInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getProgramInfoLog_dbfda4b6e7eb1b37:function(e,n,t){const _=n.getProgramInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getProgramParameter_43fbc6d2613c08b3:function(e,n,t){return e.getProgramParameter(n,t>>>0)},__wbg_getProgramParameter_92e4540ca9da06b2:function(e,n,t){return e.getProgramParameter(n,t>>>0)},__wbg_getPropertyValue_d6911b2a1f9acba9:function(){return T(function(e,n,t,_){const r=D(n.getPropertyValue(k(t,_)),q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},arguments)},__wbg_getRootNode_193e544ed534e810:function(e){return e.getRootNode()},__wbg_getShaderInfoLog_9991e9e77b0c6805:function(e,n,t){const _=n.getShaderInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getShaderInfoLog_9e0b96da4b13ae49:function(e,n,t){const _=n.getShaderInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getShaderParameter_786fd84f85720ca8:function(e,n,t){return e.getShaderParameter(n,t>>>0)},__wbg_getShaderParameter_afa4a3dd9dd397c1:function(e,n,t){return e.getShaderParameter(n,t>>>0)},__wbg_getSupportedExtensions_57142a6b598d7787:function(e){const n=e.getSupportedExtensions();return O(n)?0:f(n)},__wbg_getSupportedExtensions_c37f749a951eba04:function(e){const n=e.getSupportedExtensions();return O(n)?0:f(n)},__wbg_getUniformLocation_71c070e6644669ad:function(e,n,t,_){const r=e.getUniformLocation(n,k(t,_));return O(r)?0:f(r)},__wbg_getUniformLocation_d06b3a5b3c60e95c:function(e,n,t,_){const r=e.getUniformLocation(n,k(t,_));return O(r)?0:f(r)},__wbg_get_4fe487fe39ff3573:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_5bd55a138a9e899f:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_9a1f194723936140:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_9b94d73e6221f75c:function(e,n){return e[n>>>0]},__wbg_get_b3ed3ad4be2bc8ac:function(){return T(function(e,n){return Reflect.get(e,n)},arguments)},__wbg_get_index_bbec7c126dd67fce:function(e,n){return e[n>>>0]},__wbg_get_index_efdc399e215e9164:function(e,n){return e[n>>>0]},__wbg_hash_90eadad0e1447454:function(){return T(function(e,n){const t=D(n.hash,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_height_38750dc6de41ee75:function(e){return e.height},__wbg_height_c2027cf67d1c9b11:function(e){return e.height},__wbg_hidden_8ce6a98b8c12451c:function(e){return e.hidden},__wbg_host_92d607209031b72c:function(){return T(function(e,n){const t=D(n.host,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_hostname_0c450e33386895ba:function(){return T(function(e,n){const t=D(n.hostname,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_href_67854c3dd511f6f3:function(){return T(function(e,n){const t=D(n.href,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_id_ff64a5892a30d4e9:function(e,n){const t=D(n.id,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_identifier_5feaba602edf9981:function(e){return e.identifier},__wbg_info_2e7d618e9cb88d77:function(e,n){console.info(k(e,n))},__wbg_inlineSize_3e4e7e8c813884fd:function(e){return e.inlineSize},__wbg_instanceof_Document_50f5ff170c1a7826:function(e){let n;try{n=e instanceof Document}catch(e){n=!1}return n},__wbg_instanceof_Element_9e662f49ab6c6beb:function(e){let n;try{n=e instanceof Element}catch(e){n=!1}return n},__wbg_instanceof_HtmlElement_5abfac207260fd6f:function(e){let n;try{n=e instanceof HTMLElement}catch(e){n=!1}return n},__wbg_instanceof_HtmlInputElement_c10b7260b4e0710a:function(e){let n;try{n=e instanceof HTMLInputElement}catch(e){n=!1}return n},__wbg_instanceof_ResizeObserverEntry_16bca25646e32231:function(e){let n;try{n=e instanceof ResizeObserverEntry}catch(e){n=!1}return n},__wbg_instanceof_ResizeObserverSize_cee71be747d9d29e:function(e){let n;try{n=e instanceof ResizeObserverSize}catch(e){n=!1}return n},__wbg_instanceof_ShadowRoot_5285adde3587c73e:function(e){let n;try{n=e instanceof ShadowRoot}catch(e){n=!1}return n},__wbg_instanceof_WebGl2RenderingContext_4a08a94517ed5240:function(e){let n;try{n=e instanceof WebGL2RenderingContext}catch(e){n=!1}return n},__wbg_instanceof_WebGlRenderingContext_53391327f021e3ab:function(e){let n;try{n=e instanceof WebGLRenderingContext}catch(e){n=!1}return n},__wbg_instanceof_Window_ed49b2db8df90359:function(e){let n;try{n=e instanceof Window}catch(e){n=!1}return n},__wbg_isComposing_1eafc5b1376f01d1:function(e){return e.isComposing},__wbg_isComposing_9323fa62320f5fc0:function(e){return e.isComposing},__wbg_isSecureContext_1e186b850f07cfb3:function(e){return e.isSecureContext},__wbg_is_f29129f676e5410c:function(e,n){return Object.is(e,n)},__wbg_item_98b174cdde606b25:function(e,n){const t=e.item(n>>>0);return O(t)?0:f(t)},__wbg_items_4130211600bde9a4:function(e){return e.items},__wbg_keyCode_155291a11654466e:function(e){return e.keyCode},__wbg_key_d41e8e825e6bb0e9:function(e,n){const t=D(n.key,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_lastModified_a5cfce993c651681:function(e){return e.lastModified},__wbg_left_3b7c3c1030d5ca7a:function(e){return e.left},__wbg_length_0a185f5e6b78bcc5:function(e){return e.length},__wbg_length_182cff298f8d099b:function(e){return e.length},__wbg_length_1e8b0a6e52c08b9a:function(e){return e.length},__wbg_length_25b2ccd77d48ecb1:function(e){return e.length},__wbg_length_32ed9a279acd054c:function(e){return e.length},__wbg_length_35a7bace40f36eac:function(e){return e.length},__wbg_length_500e25dbc316fd13:function(e){return e.length},__wbg_length_8ce069301528a78d:function(e){return e.length},__wbg_length_9a7876c9728a0979:function(e){return e.length},__wbg_length_9efde69e99cd464e:function(e){return e.length},__wbg_length_b1593d937f31cef9:function(e){return e.length},__wbg_length_dd7a84decbd9cde7:function(e){return e.length},__wbg_length_e2449a254c768bd8:function(e){return e.length},__wbg_length_f7386240689107f3:function(e){return e.length},__wbg_linkProgram_6600dd2c0863bbfd:function(e,n){e.linkProgram(n)},__wbg_linkProgram_be6b825cf66d177b:function(e,n){e.linkProgram(n)},__wbg_localStorage_a22d31b9eacc4594:function(){return T(function(e){const n=e.localStorage;return O(n)?0:f(n)},arguments)},__wbg_location_df7ca06c93e51763:function(e){return e.location},__wbg_matchMedia_91d4fc9729dc3c84:function(){return T(function(e,n,t){const _=e.matchMedia(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_matches_4b5c22bd830f7bb3:function(e){return e.matches},__wbg_metaKey_374999c340f70626:function(e){return e.metaKey},__wbg_metaKey_67113fb40365d736:function(e){return e.metaKey},__wbg_name_171cddfde96a29c8:function(e,n){const t=D(n.name,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_navigator_43be698ba96fc088:function(e){return e.navigator},__wbg_new_1e41d4ad75c60d04:function(e){return new Int16Array(e)},__wbg_new_2e2be9617c4407d5:function(){return T(function(e){return new ResizeObserver(e)},arguments)},__wbg_new_358bba68c164c0c7:function(){return new Error},__wbg_new_361308b2356cecd0:function(){return new Object},__wbg_new_3eb36ae241fe6f44:function(){return new Array},__wbg_new_4e06668820182522:function(e){return new Uint16Array(e)},__wbg_new_62561633336f4cb6:function(e){return new BigUint64Array(e)},__wbg_new_6860731fa32d2e93:function(e){return new Int8Array(e)},__wbg_new_72c627ba80de1c21:function(e){return new Int32Array(e)},__wbg_new_9ccae8c3d6099588:function(e){return new Float32Array(e)},__wbg_new_b5d9e2fb389fef91:function(e,n){try{var t={a:e,b:n};const _=new Promise((e,n)=>{const _=t.a;t.a=0;try{return function(e,n,t,_){q.wasm_bindgen__convert__closures_____invoke__h5ad7d9a44532e3a5(e,n,t,_)}(_,t.b,e,n)}finally{t.a=_}});return _}finally{t.a=t.b=0}},__wbg_new_d17d15ba1d2042a1:function(e){return new Float64Array(e)},__wbg_new_d9eada177dd1dc88:function(e){return new BigInt64Array(e)},__wbg_new_dd2b680c8bf6ae29:function(e){return new Uint8Array(e)},__wbg_new_ebe5c47b71282e03:function(e){return new Uint32Array(e)},__wbg_new_from_slice_a3d2629dc1826784:function(e,n){return new Uint8Array(y(e,n))},__wbg_new_no_args_1c7c842f08d00ebb:function(e,n){return new Function(k(e,n))},__wbg_new_with_length_63f2683cc2521026:function(e){return new Float32Array(e>>>0)},__wbg_new_with_length_6523745c0bd32809:function(e){return new Float64Array(e>>>0)},__wbg_new_with_record_from_str_to_blob_promise_17d3b40dbba6c99d:function(){return T(function(e){return new ClipboardItem(e)},arguments)},__wbg_new_with_text_c4caedd46c3e5f01:function(){return T(function(e,n){return new SpeechSynthesisUtterance(k(e,n))},arguments)},__wbg_new_with_u8_array_sequence_and_options_cc0f8f2c1ef62e68:function(){return T(function(e,n){return new Blob(e,n)},arguments)},__wbg_now_2c95c9de01293173:function(e){return e.now()},__wbg_now_ebffdf7e580f210d:function(e){return e.now()},__wbg_observe_1ae37077cf10b11b:function(e,n,t){e.observe(n,t)},__wbg_of_f915f7cd925b21a5:function(e){return Array.of(e)},__wbg_offsetTop_e3d5b0a34b3200fc:function(e){return e.offsetTop},__wbg_open_ea44acde696d3b0c:function(){return T(function(e,n,t,_,r){const c=e.open(k(n,t),k(_,r));return O(c)?0:f(c)},arguments)},__wbg_origin_a9c891fa602b4d40:function(){return T(function(e,n){const t=D(n.origin,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_performance_06f12ba62483475d:function(e){const n=e.performance;return O(n)?0:f(n)},__wbg_performance_7a3ffd0b17f663ad:function(e){return e.performance},__wbg_pixelStorei_2a65936c11b710fe:function(e,n,t){e.pixelStorei(n>>>0,t)},__wbg_pixelStorei_f7cc498f52d523f1:function(e,n,t){e.pixelStorei(n>>>0,t)},__wbg_port_dc56bc76d55c2b55:function(){return T(function(e,n){const t=D(n.port,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_preventDefault_cdcfcd7e301b9702:function(e){e.preventDefault()},__wbg_protocol_4c3b13957de7d079:function(){return T(function(e,n){const t=D(n.protocol,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_prototypesetcall_2adb484744144f7f:function(e,n,t){Uint16Array.prototype.set.call(m(e,n),t)},__wbg_prototypesetcall_4846d4aa386c936f:function(e,n,t){Uint32Array.prototype.set.call(p(e,n),t)},__wbg_prototypesetcall_4f65a157230198d8:function(e,n,t){Int8Array.prototype.set.call(h(e,n),t)},__wbg_prototypesetcall_55c7bc6bcd6a9457:function(e,n,t){Int16Array.prototype.set.call(l(e,n),t)},__wbg_prototypesetcall_aefe6319f589ab4b:function(e,n,t){Float64Array.prototype.set.call(s(e,n),t)},__wbg_prototypesetcall_bdcdcc5842e4d77d:function(e,n,t){Uint8Array.prototype.set.call(y(e,n),t)},__wbg_prototypesetcall_c7e6a26aeade796d:function(e,n,t){Float32Array.prototype.set.call(d(e,n),t)},__wbg_prototypesetcall_f8118a9f36fee41e:function(e,n,t){Int32Array.prototype.set.call(w(e,n),t)},__wbg_push_8ffdcb2063340ba5:function(e,n){return e.push(n)},__wbg_queueMicrotask_0aa0a927f78f5d98:function(e){return e.queueMicrotask},__wbg_queueMicrotask_5bb536982f78a56f:function(e){queueMicrotask(e)},__wbg_readPixels_55b18304384e073d:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_readPixels_6ea8e288a8673282:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_readPixels_95b2464a7bb863a2:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_removeEventListener_e63328781a5b9af9:function(){return T(function(e,n,t,_){e.removeEventListener(k(n,t),_)},arguments)},__wbg_remove_31c39325eee968fc:function(e){e.remove()},__wbg_requestAnimationFrame_43682f8e1c5e5348:function(){return T(function(e,n){return e.requestAnimationFrame(n)},arguments)},__wbg_resolve_002c4b7d9d8f6b64:function(e){return Promise.resolve(e)},__wbg_right_154af6c2b1bf0c89:function(e){return e.right},__wbg_scissor_2ff8f18f05a6d408:function(e,n,t,_,r){e.scissor(n,t,_,r)},__wbg_scissor_b870b1434a9c25b4:function(e,n,t,_,r){e.scissor(n,t,_,r)},__wbg_search_1b385e665c888780:function(){return T(function(e,n){const t=D(n.search,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_setAttribute_cc8e4c8a2a008508:function(){return T(function(e,n,t,_,r){e.setAttribute(k(n,t),k(_,r))},arguments)},__wbg_setItem_cf340bb2edbd3089:function(){return T(function(e,n,t,_,r){e.setItem(k(n,t),k(_,r))},arguments)},__wbg_setProperty_cbb25c4e74285b39:function(){return T(function(e,n,t,_,r){e.setProperty(k(n,t),k(_,r))},arguments)},__wbg_set_6cb8631f80447a67:function(){return T(function(e,n,t){return Reflect.set(e,n,t)},arguments)},__wbg_set_a7e6b10165583fc4:function(e,n,t){e.set(s(n,t))},__wbg_set_autofocus_7125a4a223a1d570:function(){return T(function(e,n){e.autofocus=0!==n},arguments)},__wbg_set_box_73d3355c6f95f24d:function(e,n){e.box=i[n]},__wbg_set_f8edeec46569cc70:function(e,n,t){e.set(d(n,t))},__wbg_set_height_f21f985387070100:function(e,n){e.height=n>>>0},__wbg_set_once_56ba1b87a9884c15:function(e,n){e.once=0!==n},__wbg_set_pitch_91774e1f0bbc52fa:function(e,n){e.pitch=n},__wbg_set_rate_63dfcd5b7bcdbc07:function(e,n){e.rate=n},__wbg_set_tabIndex_eb89b6ffe111cd2c:function(e,n){e.tabIndex=n},__wbg_set_type_148de20768639245:function(e,n,t){e.type=k(n,t)},__wbg_set_type_abc37fa3c213f717:function(e,n,t){e.type=k(n,t)},__wbg_set_value_62a965e38b22b38c:function(e,n,t){e.value=k(n,t)},__wbg_set_volume_789cc971c19a2e24:function(e,n){e.volume=n},__wbg_set_width_d60bc4f2f20c56a4:function(e,n){e.width=n>>>0},__wbg_shaderSource_32425cfe6e5a1e52:function(e,n,t,_){e.shaderSource(n,k(t,_))},__wbg_shaderSource_8f4bda03f70359df:function(e,n,t,_){e.shaderSource(n,k(t,_))},__wbg_shiftKey_5558a3288542c985:function(e){return e.shiftKey},__wbg_shiftKey_564be91ec842bcc4:function(e){return e.shiftKey},__wbg_size_e05d31cc6049815f:function(e){return e.size},__wbg_speak_67796aeb0b5fd194:function(e,n){e.speak(n)},__wbg_speechSynthesis_95b40351572bb250:function(){return T(function(e){return e.speechSynthesis},arguments)},__wbg_stack_d87a83f5bc721084:function(e,n){const t=D(n.stack,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_static_accessor_GLOBAL_12837167ad935116:function(){const e=void 0===t.g?null:t.g;return O(e)?0:f(e)},__wbg_static_accessor_GLOBAL_THIS_e628e89ab3b1c95f:function(){const e="undefined"==typeof globalThis?null:globalThis;return O(e)?0:f(e)},__wbg_static_accessor_SELF_a621d3dfbb60d0ce:function(){const e="undefined"==typeof self?null:self;return O(e)?0:f(e)},__wbg_static_accessor_WINDOW_f8727f0cf888e0bd:function(){const e="undefined"==typeof window?null:window;return O(e)?0:f(e)},__wbg_stopPropagation_6e5e2a085214ac63:function(e){e.stopPropagation()},__wbg_style_0b7c9bd318f8b807:function(e){return e.style},__wbg_texImage2D_087ef94df78081f0:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texImage2D_13414a4692836804:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texImage2D_e71049312f3172d9:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texParameteri_0d45be2c88d6bad8:function(e,n,t,_){e.texParameteri(n>>>0,t>>>0,_)},__wbg_texParameteri_ec937d2161018946:function(e,n,t,_){e.texParameteri(n>>>0,t>>>0,_)},__wbg_texSubImage2D_19ae4cadb809f264:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texSubImage2D_d17a39cdec4a3495:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texSubImage2D_edf5bd70fda3feaf:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_then_0d9fe2c7b1857d32:function(e,n,t){return e.then(n,t)},__wbg_then_b9e7b3b5f1a9e1b5:function(e,n){return e.then(n)},__wbg_top_3d27ff6f468cf3fc:function(e){return e.top},__wbg_touches_55ce167b42bcdf52:function(e){return e.touches},__wbg_type_9a3860e6dd3a4156:function(e,n){const t=D(n.type,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_type_e8c7fade6d73451b:function(e,n){const t=D(n.type,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_uniform1i_9f3f72dbcb98ada9:function(e,n,t){e.uniform1i(n,t)},__wbg_uniform1i_e9aee4b9e7fe8c4b:function(e,n,t){e.uniform1i(n,t)},__wbg_uniform2f_1887b1268f65bfee:function(e,n,t,_){e.uniform2f(n,t,_)},__wbg_uniform2f_2aa77a6395d47f1d:function(e,n,t,_){e.uniform2f(n,t,_)},__wbg_useProgram_e82c1a5f87d81579:function(e,n){e.useProgram(n)},__wbg_useProgram_fe720ade4d3b6edb:function(e,n){e.useProgram(n)},__wbg_userAgent_34463fd660ba4a2a:function(){return T(function(e,n){const t=D(n.userAgent,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_value_e506a07878790ca0:function(e,n){const t=D(n.value,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_vertexAttribPointer_75f6ff47f6c9f8cb:function(e,n,t,_,r,c,o){e.vertexAttribPointer(n>>>0,t,_>>>0,0!==r,c,o)},__wbg_vertexAttribPointer_adbd1853cce679ad:function(e,n,t,_,r,c,o){e.vertexAttribPointer(n>>>0,t,_>>>0,0!==r,c,o)},__wbg_viewerhandle_new:function(e){return _.__wrap(e)},__wbg_viewport_174ae1c2209344ae:function(e,n,t,_,r){e.viewport(n,t,_,r)},__wbg_viewport_df236eac68bc7467:function(e,n,t,_,r){e.viewport(n,t,_,r)},__wbg_warn_11b4e4f7bff9ffb7:function(e,n){console.warn(k(e,n))},__wbg_width_5f66bde2e810fbde:function(e){return e.width},__wbg_width_7444cca5dfea0645:function(e){return e.width},__wbg_writeText_be1c3b83a3e46230:function(e,n,t){return e.writeText(k(n,t))},__wbg_write_d429ce72e918e180:function(e,n){return e.write(n)},__wbindgen_cast_0000000000000001:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h293211c26b6d7263,o)},__wbindgen_cast_0000000000000002:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h293211c26b6d7263,o)},__wbindgen_cast_0000000000000003:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h293211c26b6d7263,c)},__wbindgen_cast_0000000000000004:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h905b98c3d456fd30,a)},__wbindgen_cast_0000000000000005:function(e){return e},__wbindgen_cast_0000000000000006:function(e,n){return d(e,n)},__wbindgen_cast_0000000000000007:function(e,n){return l(e,n)},__wbindgen_cast_0000000000000008:function(e,n){return w(e,n)},__wbindgen_cast_0000000000000009:function(e,n){return h(e,n)},__wbindgen_cast_000000000000000a:function(e,n){return m(e,n)},__wbindgen_cast_000000000000000b:function(e,n){return p(e,n)},__wbindgen_cast_000000000000000c:function(e,n){return y(e,n)},__wbindgen_cast_000000000000000d:function(e,n){return k(e,n)},__wbindgen_init_externref_table:function(){const e=q.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}};return{__proto__:null,"./viewarr_bg.js":e}}function c(e,n){const t=q.wasm_bindgen__convert__closures_____invoke__h440c9e74639da121(e,n);if(t[1])throw z(t[0])}function o(e,n,t){q.wasm_bindgen__convert__closures_____invoke__hbce3c904773be13e(e,n,t)}function a(e,n,t){q.wasm_bindgen__convert__closures_____invoke__hfb9f1a9994119dd6(e,n,t)}Symbol.dispose&&(_.prototype[Symbol.dispose]=_.prototype.free);const i=["border-box","content-box","device-pixel-content-box"],b="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>q.__wbg_viewerhandle_free(e>>>0,1));function f(e){const n=q.__externref_table_alloc();return q.__wbindgen_externrefs.set(n,e),n}const u="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>e.dtor(e.a,e.b));function g(e){const n=typeof e;if("number"==n||"boolean"==n||null==e)return`${e}`;if("string"==n)return`"${e}"`;if("symbol"==n){const n=e.description;return null==n?"Symbol":`Symbol(${n})`}if("function"==n){const n=e.name;return"string"==typeof n&&n.length>0?`Function(${n})`:"Function"}if(Array.isArray(e)){const n=e.length;let t="[";n>0&&(t+=g(e[0]));for(let _=1;_<n;_++)t+=", "+g(e[_]);return t+="]",t}const t=/\[object ([^\]]+)\]/.exec(toString.call(e));let _;if(!(t&&t.length>1))return toString.call(e);if(_=t[1],"Object"==_)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:_}function d(e,n){return e>>>=0,S().subarray(e/4,e/4+n)}function s(e,n){return e>>>=0,(null!==A&&0!==A.byteLength||(A=new Float64Array(q.memory.buffer)),A).subarray(e/8,e/8+n)}function l(e,n){return e>>>=0,(null!==P&&0!==P.byteLength||(P=new Int16Array(q.memory.buffer)),P).subarray(e/2,e/2+n)}function w(e,n){return e>>>=0,(null!==C&&0!==C.byteLength||(C=new Int32Array(q.memory.buffer)),C).subarray(e/4,e/4+n)}function h(e,n){return e>>>=0,(null!==E&&0!==E.byteLength||(E=new Int8Array(q.memory.buffer)),E).subarray(e/1,e/1+n)}function m(e,n){return e>>>=0,(null!==R&&0!==R.byteLength||(R=new Uint16Array(q.memory.buffer)),R).subarray(e/2,e/2+n)}function p(e,n){return e>>>=0,(null!==M&&0!==M.byteLength||(M=new Uint32Array(q.memory.buffer)),M).subarray(e/4,e/4+n)}function y(e,n){return e>>>=0,B().subarray(e/1,e/1+n)}let v=null;function x(){return(null===v||!0===v.buffer.detached||void 0===v.buffer.detached&&v.buffer!==q.memory.buffer)&&(v=new DataView(q.memory.buffer)),v}let I=null;function S(){return null!==I&&0!==I.byteLength||(I=new Float32Array(q.memory.buffer)),I}let A=null,P=null,C=null,E=null;function k(e,n){return function(e,n){return W+=n,W>=U&&(V=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),V.decode(),W=n),V.decode(B().subarray(e,e+n))}(e>>>=0,n)}let R=null,M=null,L=null;function B(){return null!==L&&0!==L.byteLength||(L=new Uint8Array(q.memory.buffer)),L}function T(e,n){try{return e.apply(this,n)}catch(e){const n=f(e);q.__wbindgen_exn_store(n)}}function O(e){return null==e}function F(e,n,t,_){const r={a:e,b:n,cnt:1,dtor:t},c=(...e)=>{r.cnt++;const n=r.a;r.a=0;try{return _(n,r.b,...e)}finally{r.a=n,c._wbg_cb_unref()}};return c._wbg_cb_unref=()=>{0===--r.cnt&&(r.dtor(r.a,r.b),r.a=0,u.unregister(r))},u.register(c,r,r),c}function D(e,n,t){if(void 0===t){const t=K.encode(e),_=n(t.length,1)>>>0;return B().subarray(_,_+t.length).set(t),$=t.length,_}let _=e.length,r=n(_,1)>>>0;const c=B();let o=0;for(;o<_;o++){const n=e.charCodeAt(o);if(n>127)break;c[r+o]=n}if(o!==_){0!==o&&(e=e.slice(o)),r=t(r,_,_=o+3*e.length,1)>>>0;const n=B().subarray(r+o,r+_);o+=K.encodeInto(e,n).written,r=t(r,_,o,1)>>>0}return $=o,r}function z(e){const n=q.__wbindgen_externrefs.get(e);return q.__externref_table_dealloc(e),n}let V=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});V.decode();const U=2146435072;let W=0;const K=new TextEncoder;"encodeInto"in K||(K.encodeInto=function(e,n){const t=K.encode(e);return n.set(t),{read:e.length,written:t.length}});let j,q,$=0;function G(e,n){return q=e.exports,j=n,v=null,I=null,A=null,P=null,C=null,E=null,R=null,M=null,L=null,q.__wbindgen_start(),q}function H(e){if(void 0!==q)return q;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module:e}=e):console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const n=r();return e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),G(new WebAssembly.Instance(e,n),e)}async function X(e){if(void 0!==q)return q;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL(t(119),t.b));const n=r();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:_,module:c}=await async function(e,n){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,n)}catch(n){if(!e.ok||!function(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}(e.type)||"application/wasm"===e.headers.get("Content-Type"))throw n;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n)}const t=await e.arrayBuffer();return await WebAssembly.instantiate(t,n)}{const t=await WebAssembly.instantiate(e,n);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}(await e,n);return G(_,c)}},119(e,n,t){e.exports=t.p+"14e2ce1ce9dea8d282d3.wasm"}}]);
1
+ "use strict";(self.webpackChunkfitsview=self.webpackChunkfitsview||[]).push([[55],{55(e,n,t){t.r(n),t.d(n,{ViewerHandle:()=>_,default:()=>X,initSync:()=>H});class _{static __wrap(e){e>>>=0;const n=Object.create(_.prototype);return n.__wbg_ptr=e,b.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,b.unregister(this),e}free(){const e=this.__destroy_into_raw();q.__wbg_viewerhandle_free(e,0)}clearCallbacks(){q.viewerhandle_clearCallbacks(this.__wbg_ptr)}static create(e){return q.viewerhandle_create(e)}destroy(){q.viewerhandle_destroy(this.__wbg_ptr)}getBias(){return q.viewerhandle_getBias(this.__wbg_ptr)}getColormap(){let e,n;try{const t=q.viewerhandle_getColormap(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getColormapReversed(){return 0!==q.viewerhandle_getColormapReversed(this.__wbg_ptr)}getContrast(){return q.viewerhandle_getContrast(this.__wbg_ptr)}getMarkers(){return q.viewerhandle_getMarkers(this.__wbg_ptr)}getOverlayMessage(){let e,n;try{const t=q.viewerhandle_getOverlayMessage(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getPivotPoint(){return q.viewerhandle_getPivotPoint(this.__wbg_ptr)}getRotation(){return q.viewerhandle_getRotation(this.__wbg_ptr)}getShowPivotMarker(){return 0!==q.viewerhandle_getShowPivotMarker(this.__wbg_ptr)}getStretchMode(){let e,n;try{const t=q.viewerhandle_getStretchMode(this.__wbg_ptr);return e=t[0],n=t[1],k(t[0],t[1])}finally{q.__wbindgen_free(e,n,1)}}getValueRange(){return q.viewerhandle_getValueRange(this.__wbg_ptr)}getViewBounds(e,n){return q.viewerhandle_getViewBounds(this.__wbg_ptr,e,n)}getZoom(){return q.viewerhandle_getZoom(this.__wbg_ptr)}onClick(e){q.viewerhandle_onClick(this.__wbg_ptr,e)}onStateChange(e){q.viewerhandle_onStateChange(this.__wbg_ptr,e)}setBias(e){q.viewerhandle_setBias(this.__wbg_ptr,e)}setColormap(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setColormap(this.__wbg_ptr,n,t)}setColormapReversed(e){q.viewerhandle_setColormapReversed(this.__wbg_ptr,e)}setContrast(e){q.viewerhandle_setContrast(this.__wbg_ptr,e)}setImageData(e,n,t,_){const r=D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$,o=q.viewerhandle_setImageData(this.__wbg_ptr,e,n,t,r,c);if(o[1])throw z(o[0])}setMarkers(e){const n=function(e,n){const t=n(4*e.length,4)>>>0;return S().set(e,t/4),$=e.length,t}(e,q.__wbindgen_malloc),t=$;q.viewerhandle_setMarkers(this.__wbg_ptr,n,t)}setOverlayMessage(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setOverlayMessage(this.__wbg_ptr,n,t)}setPivotPoint(e,n){q.viewerhandle_setPivotPoint(this.__wbg_ptr,e,n)}setRotation(e){q.viewerhandle_setRotation(this.__wbg_ptr,e)}setShowPivotMarker(e){q.viewerhandle_setShowPivotMarker(this.__wbg_ptr,e)}setStretchMode(e){const n=D(e,q.__wbindgen_malloc,q.__wbindgen_realloc),t=$;q.viewerhandle_setStretchMode(this.__wbg_ptr,n,t)}setValueRange(e,n){q.viewerhandle_setValueRange(this.__wbg_ptr,e,n)}setViewBounds(e,n,t,_,r,c){q.viewerhandle_setViewBounds(this.__wbg_ptr,e,n,t,_,r,c)}setZoom(e){q.viewerhandle_setZoom(this.__wbg_ptr,e)}zoomIn(){q.viewerhandle_zoomIn(this.__wbg_ptr)}zoomOut(){q.viewerhandle_zoomOut(this.__wbg_ptr)}zoomToFit(){q.viewerhandle_zoomToFit(this.__wbg_ptr)}}function r(){const e={__proto__:null,__wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25:function(e){const n="boolean"==typeof e?e:void 0;return O(n)?16777215:n?1:0},__wbg___wbindgen_debug_string_0bc8482c6e3508ae:function(e,n){const t=D(g(n),q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg___wbindgen_in_47fa6863be6f2f25:function(e,n){return e in n},__wbg___wbindgen_is_function_0095a73b8b156f76:function(e){return"function"==typeof e},__wbg___wbindgen_is_undefined_9e4d92534c42d778:function(e){return void 0===e},__wbg___wbindgen_number_get_8ff4255516ccad3e:function(e,n){const t="number"==typeof n?n:void 0;x().setFloat64(e+8,O(t)?0:t,!0),x().setInt32(e+0,!O(t),!0)},__wbg___wbindgen_string_get_72fb696202c56729:function(e,n){const t="string"==typeof n?n:void 0;var _=O(t)?0:D(t,q.__wbindgen_malloc,q.__wbindgen_realloc),r=$;x().setInt32(e+4,r,!0),x().setInt32(e+0,_,!0)},__wbg___wbindgen_throw_be289d5034ed271b:function(e,n){throw new Error(k(e,n))},__wbg__wbg_cb_unref_d9b87ff7982e3b21:function(e){e._wbg_cb_unref()},__wbg_activeElement_1554b6917654f8d6:function(e){const n=e.activeElement;return O(n)?0:f(n)},__wbg_activeElement_d9d2a80dfafa67ed:function(e){const n=e.activeElement;return O(n)?0:f(n)},__wbg_activeTexture_6f9a710514686c24:function(e,n){e.activeTexture(n>>>0)},__wbg_activeTexture_7e39cb8fdf4b6d5a:function(e,n){e.activeTexture(n>>>0)},__wbg_addEventListener_c917b5aafbcf493f:function(){return T(function(e,n,t,_,r){e.addEventListener(k(n,t),_,r)},arguments)},__wbg_altKey_73c1173ba53073d5:function(e){return e.altKey},__wbg_altKey_8155c319c215e3aa:function(e){return e.altKey},__wbg_appendChild_dea38765a26d346d:function(){return T(function(e,n){return e.appendChild(n)},arguments)},__wbg_arrayBuffer_05ce1af23e9064e8:function(e){return e.arrayBuffer()},__wbg_at_dfc235641cc0e40c:function(e,n){return e.at(n)},__wbg_attachShader_32114efcf2744eb6:function(e,n,t){e.attachShader(n,t)},__wbg_attachShader_b36058e5c9eeaf54:function(e,n,t){e.attachShader(n,t)},__wbg_bindBuffer_69a7a0b8f3f9b9cf:function(e,n,t){e.bindBuffer(n>>>0,t)},__wbg_bindBuffer_c9068e8712a034f5:function(e,n,t){e.bindBuffer(n>>>0,t)},__wbg_bindTexture_b2b7b1726a83f93e:function(e,n,t){e.bindTexture(n>>>0,t)},__wbg_bindTexture_ec13ddcb9dc8e032:function(e,n,t){e.bindTexture(n>>>0,t)},__wbg_bindVertexArrayOES_c2610602f7485b3f:function(e,n){e.bindVertexArrayOES(n)},__wbg_bindVertexArray_78220d1edb1d2382:function(e,n){e.bindVertexArray(n)},__wbg_blendEquationSeparate_1b12c43928cc7bc1:function(e,n,t){e.blendEquationSeparate(n>>>0,t>>>0)},__wbg_blendEquationSeparate_a8094fbec94cf80e:function(e,n,t){e.blendEquationSeparate(n>>>0,t>>>0)},__wbg_blendFuncSeparate_95465944f788a092:function(e,n,t,_,r){e.blendFuncSeparate(n>>>0,t>>>0,_>>>0,r>>>0)},__wbg_blendFuncSeparate_f366c170c5097fbe:function(e,n,t,_,r){e.blendFuncSeparate(n>>>0,t>>>0,_>>>0,r>>>0)},__wbg_blockSize_ef9a626745d7dfac:function(e){return e.blockSize},__wbg_blur_07f34335e06e5234:function(){return T(function(e){e.blur()},arguments)},__wbg_body_f67922363a220026:function(e){const n=e.body;return O(n)?0:f(n)},__wbg_bottom_c7ec510a18034add:function(e){return e.bottom},__wbg_bufferData_52235e85894af988:function(e,n,t,_){e.bufferData(n>>>0,t,_>>>0)},__wbg_bufferData_98f6c413a8f0f139:function(e,n,t,_){e.bufferData(n>>>0,t,_>>>0)},__wbg_button_d86841d0a03adc44:function(e){return e.button},__wbg_call_389efe28435a9388:function(){return T(function(e,n){return e.call(n)},arguments)},__wbg_call_4708e0c13bdc8e95:function(){return T(function(e,n,t){return e.call(n,t)},arguments)},__wbg_cancelAnimationFrame_cd35895d78cf4510:function(){return T(function(e,n){e.cancelAnimationFrame(n)},arguments)},__wbg_cancel_8f4e3a220b2f0fe1:function(e){e.cancel()},__wbg_changedTouches_b6ab7be7b1aed8d6:function(e){return e.changedTouches},__wbg_clearColor_404a3b16d43db93b:function(e,n,t,_,r){e.clearColor(n,t,_,r)},__wbg_clearColor_f16a5dae33fe425d:function(e,n,t,_,r){e.clearColor(n,t,_,r)},__wbg_clearInterval_c75df0651e74fbb8:function(e,n){e.clearInterval(n)},__wbg_clear_4d801d0d054c3579:function(e,n){e.clear(n>>>0)},__wbg_clear_7187030f892c5ca0:function(e,n){e.clear(n>>>0)},__wbg_clientX_a3c5f4ff30e91264:function(e){return e.clientX},__wbg_clientX_ed7d2827ca30c165:function(e){return e.clientX},__wbg_clientY_79ab4711d0597b2c:function(e){return e.clientY},__wbg_clientY_e28509acb9b4a42a:function(e){return e.clientY},__wbg_clipboardData_018789e461e23aaa:function(e){const n=e.clipboardData;return O(n)?0:f(n)},__wbg_clipboard_98c5a32249fa8416:function(e){return e.clipboard},__wbg_colorMask_177d9762658e5e28:function(e,n,t,_,r){e.colorMask(0!==n,0!==t,0!==_,0!==r)},__wbg_colorMask_7a8dbc86e7376a9b:function(e,n,t,_,r){e.colorMask(0!==n,0!==t,0!==_,0!==r)},__wbg_compileShader_63b824e86bb00b8f:function(e,n){e.compileShader(n)},__wbg_compileShader_94718a93495d565d:function(e,n){e.compileShader(n)},__wbg_contentBoxSize_328a5cd3e7d063a9:function(e){return e.contentBoxSize},__wbg_contentRect_79b98e4d4f4728a4:function(e){return e.contentRect},__wbg_createBuffer_26534c05e01b8559:function(e){const n=e.createBuffer();return O(n)?0:f(n)},__wbg_createBuffer_c4ec897aacc1b91c:function(e){const n=e.createBuffer();return O(n)?0:f(n)},__wbg_createElement_49f60fdcaae809c8:function(){return T(function(e,n,t){return e.createElement(k(n,t))},arguments)},__wbg_createProgram_98aaa91f7c81c5e2:function(e){const n=e.createProgram();return O(n)?0:f(n)},__wbg_createProgram_9b7710a1f2701c2c:function(e){const n=e.createProgram();return O(n)?0:f(n)},__wbg_createShader_e3ac08ed8c5b14b2:function(e,n){const t=e.createShader(n>>>0);return O(t)?0:f(t)},__wbg_createShader_f2b928ca9a426b14:function(e,n){const t=e.createShader(n>>>0);return O(t)?0:f(t)},__wbg_createTexture_16d2c8a3d7d4a75a:function(e){const n=e.createTexture();return O(n)?0:f(n)},__wbg_createTexture_f9451a82c7527ce2:function(e){const n=e.createTexture();return O(n)?0:f(n)},__wbg_createVertexArrayOES_bd76ceee6ab9b95e:function(e){const n=e.createVertexArrayOES();return O(n)?0:f(n)},__wbg_createVertexArray_ad5294951ae57497:function(e){const n=e.createVertexArray();return O(n)?0:f(n)},__wbg_ctrlKey_09a1b54d77dea92b:function(e){return e.ctrlKey},__wbg_ctrlKey_96ff94f8b18636a3:function(e){return e.ctrlKey},__wbg_dataTransfer_d924a622fbe51b06:function(e){const n=e.dataTransfer;return O(n)?0:f(n)},__wbg_data_acd149571f3b741a:function(e,n){const t=n.data;var _=O(t)?0:D(t,q.__wbindgen_malloc,q.__wbindgen_realloc),r=$;x().setInt32(e+4,r,!0),x().setInt32(e+0,_,!0)},__wbg_debug_21bee8b7f5110d62:function(e,n){console.debug(k(e,n))},__wbg_deleteBuffer_22fcc93912cbf659:function(e,n){e.deleteBuffer(n)},__wbg_deleteBuffer_ab099883c168644d:function(e,n){e.deleteBuffer(n)},__wbg_deleteProgram_9298fb3e3c1d3a78:function(e,n){e.deleteProgram(n)},__wbg_deleteProgram_f354e79b8cae8076:function(e,n){e.deleteProgram(n)},__wbg_deleteShader_aaf3b520a64d5d9d:function(e,n){e.deleteShader(n)},__wbg_deleteShader_ff70ca962883e241:function(e,n){e.deleteShader(n)},__wbg_deleteTexture_2be78224e5584a8b:function(e,n){e.deleteTexture(n)},__wbg_deleteTexture_9d411c0e60ffa324:function(e,n){e.deleteTexture(n)},__wbg_deltaMode_a1d1df711e44cefc:function(e){return e.deltaMode},__wbg_deltaX_f0ca9116db5f7bc1:function(e){return e.deltaX},__wbg_deltaY_eb94120160ac821c:function(e){return e.deltaY},__wbg_detachShader_0837532df5c988ca:function(e,n,t){e.detachShader(n,t)},__wbg_detachShader_1ba1e8cb604560a9:function(e,n,t){e.detachShader(n,t)},__wbg_devicePixelContentBoxSize_8f39437eab7f03ea:function(e){return e.devicePixelContentBoxSize},__wbg_devicePixelRatio_5c458affc89fc209:function(e){return e.devicePixelRatio},__wbg_disableVertexAttribArray_24a020060006b10f:function(e,n){e.disableVertexAttribArray(n>>>0)},__wbg_disableVertexAttribArray_4bac633c27bae599:function(e,n){e.disableVertexAttribArray(n>>>0)},__wbg_disable_7fe6fb3e97717f88:function(e,n){e.disable(n>>>0)},__wbg_disable_bd37bdcca1764aea:function(e,n){e.disable(n>>>0)},__wbg_disconnect_5202f399852258c0:function(e){e.disconnect()},__wbg_document_ee35a3d3ae34ef6c:function(e){const n=e.document;return O(n)?0:f(n)},__wbg_drawElements_94f6577070a45da2:function(e,n,t,_,r){e.drawElements(n>>>0,t,_>>>0,r)},__wbg_drawElements_ea2abffa9d1dc736:function(e,n,t,_,r){e.drawElements(n>>>0,t,_>>>0,r)},__wbg_elementFromPoint_c626cb9a65328c63:function(e,n,t){const _=e.elementFromPoint(n,t);return O(_)?0:f(_)},__wbg_elementFromPoint_fcddd007465b6e73:function(e,n,t){const _=e.elementFromPoint(n,t);return O(_)?0:f(_)},__wbg_enableVertexAttribArray_475e06c31777296d:function(e,n){e.enableVertexAttribArray(n>>>0)},__wbg_enableVertexAttribArray_aa6e40408261eeb9:function(e,n){e.enableVertexAttribArray(n>>>0)},__wbg_enable_d1ac04dfdd2fb3ae:function(e,n){e.enable(n>>>0)},__wbg_enable_fee40f19b7053ea3:function(e,n){e.enable(n>>>0)},__wbg_error_541113e32ba1ecbd:function(e,n){let t,_;try{t=e,_=n,console.error(k(e,n))}finally{q.__wbindgen_free(t,_,1)}},__wbg_files_c7608e3fb8eb4d07:function(e){const n=e.files;return O(n)?0:f(n)},__wbg_focus_128ff465f65677cc:function(){return T(function(e){e.focus()},arguments)},__wbg_force_6acda126382fc3c0:function(e){return e.force},__wbg_generateMipmap_5f9058c19cf7c6c1:function(e,n){e.generateMipmap(n>>>0)},__wbg_generateMipmap_c3aad515dd61ffd6:function(e,n){e.generateMipmap(n>>>0)},__wbg_getAttribLocation_16c406a68275ed4b:function(e,n,t,_){return e.getAttribLocation(n,k(t,_))},__wbg_getAttribLocation_7321cf2d67e036f6:function(e,n,t,_){return e.getAttribLocation(n,k(t,_))},__wbg_getBoundingClientRect_b5c8c34d07878818:function(e){return e.getBoundingClientRect()},__wbg_getComputedStyle_2d1f9dfe4ee7e0b9:function(){return T(function(e,n){const t=e.getComputedStyle(n);return O(t)?0:f(t)},arguments)},__wbg_getContext_2a5764d48600bc43:function(){return T(function(e,n,t){const _=e.getContext(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getData_2aada4ab05d445e3:function(){return T(function(e,n,t,_){const r=D(n.getData(k(t,_)),q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},arguments)},__wbg_getError_1182114725905664:function(e){return e.getError()},__wbg_getError_bba8594facbfd5e1:function(e){return e.getError()},__wbg_getExtension_388df13305a298af:function(){return T(function(e,n,t){const _=e.getExtension(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getExtension_3c0cb5ae01bb4b17:function(){return T(function(e,n,t){const _=e.getExtension(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_getItem_0c792d344808dcf5:function(){return T(function(e,n,t,_){const r=n.getItem(k(t,_));var c=O(r)?0:D(r,q.__wbindgen_malloc,q.__wbindgen_realloc),o=$;x().setInt32(e+4,o,!0),x().setInt32(e+0,c,!0)},arguments)},__wbg_getParameter_1ecb910cfdd21f88:function(){return T(function(e,n){return e.getParameter(n>>>0)},arguments)},__wbg_getParameter_2e1f97ecaab76274:function(){return T(function(e,n){return e.getParameter(n>>>0)},arguments)},__wbg_getProgramInfoLog_2ffa30e3abb8b5c2:function(e,n,t){const _=n.getProgramInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getProgramInfoLog_dbfda4b6e7eb1b37:function(e,n,t){const _=n.getProgramInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getProgramParameter_43fbc6d2613c08b3:function(e,n,t){return e.getProgramParameter(n,t>>>0)},__wbg_getProgramParameter_92e4540ca9da06b2:function(e,n,t){return e.getProgramParameter(n,t>>>0)},__wbg_getPropertyValue_d6911b2a1f9acba9:function(){return T(function(e,n,t,_){const r=D(n.getPropertyValue(k(t,_)),q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},arguments)},__wbg_getRootNode_193e544ed534e810:function(e){return e.getRootNode()},__wbg_getShaderInfoLog_9991e9e77b0c6805:function(e,n,t){const _=n.getShaderInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getShaderInfoLog_9e0b96da4b13ae49:function(e,n,t){const _=n.getShaderInfoLog(t);var r=O(_)?0:D(_,q.__wbindgen_malloc,q.__wbindgen_realloc),c=$;x().setInt32(e+4,c,!0),x().setInt32(e+0,r,!0)},__wbg_getShaderParameter_786fd84f85720ca8:function(e,n,t){return e.getShaderParameter(n,t>>>0)},__wbg_getShaderParameter_afa4a3dd9dd397c1:function(e,n,t){return e.getShaderParameter(n,t>>>0)},__wbg_getSupportedExtensions_57142a6b598d7787:function(e){const n=e.getSupportedExtensions();return O(n)?0:f(n)},__wbg_getSupportedExtensions_c37f749a951eba04:function(e){const n=e.getSupportedExtensions();return O(n)?0:f(n)},__wbg_getUniformLocation_71c070e6644669ad:function(e,n,t,_){const r=e.getUniformLocation(n,k(t,_));return O(r)?0:f(r)},__wbg_getUniformLocation_d06b3a5b3c60e95c:function(e,n,t,_){const r=e.getUniformLocation(n,k(t,_));return O(r)?0:f(r)},__wbg_get_4fe487fe39ff3573:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_5bd55a138a9e899f:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_9a1f194723936140:function(e,n){const t=e[n>>>0];return O(t)?0:f(t)},__wbg_get_9b94d73e6221f75c:function(e,n){return e[n>>>0]},__wbg_get_b3ed3ad4be2bc8ac:function(){return T(function(e,n){return Reflect.get(e,n)},arguments)},__wbg_get_index_bbec7c126dd67fce:function(e,n){return e[n>>>0]},__wbg_get_index_efdc399e215e9164:function(e,n){return e[n>>>0]},__wbg_hash_90eadad0e1447454:function(){return T(function(e,n){const t=D(n.hash,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_height_38750dc6de41ee75:function(e){return e.height},__wbg_height_c2027cf67d1c9b11:function(e){return e.height},__wbg_hidden_8ce6a98b8c12451c:function(e){return e.hidden},__wbg_host_92d607209031b72c:function(){return T(function(e,n){const t=D(n.host,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_hostname_0c450e33386895ba:function(){return T(function(e,n){const t=D(n.hostname,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_href_67854c3dd511f6f3:function(){return T(function(e,n){const t=D(n.href,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_id_ff64a5892a30d4e9:function(e,n){const t=D(n.id,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_identifier_5feaba602edf9981:function(e){return e.identifier},__wbg_info_2e7d618e9cb88d77:function(e,n){console.info(k(e,n))},__wbg_inlineSize_3e4e7e8c813884fd:function(e){return e.inlineSize},__wbg_instanceof_Document_50f5ff170c1a7826:function(e){let n;try{n=e instanceof Document}catch(e){n=!1}return n},__wbg_instanceof_Element_9e662f49ab6c6beb:function(e){let n;try{n=e instanceof Element}catch(e){n=!1}return n},__wbg_instanceof_HtmlElement_5abfac207260fd6f:function(e){let n;try{n=e instanceof HTMLElement}catch(e){n=!1}return n},__wbg_instanceof_HtmlInputElement_c10b7260b4e0710a:function(e){let n;try{n=e instanceof HTMLInputElement}catch(e){n=!1}return n},__wbg_instanceof_ResizeObserverEntry_16bca25646e32231:function(e){let n;try{n=e instanceof ResizeObserverEntry}catch(e){n=!1}return n},__wbg_instanceof_ResizeObserverSize_cee71be747d9d29e:function(e){let n;try{n=e instanceof ResizeObserverSize}catch(e){n=!1}return n},__wbg_instanceof_ShadowRoot_5285adde3587c73e:function(e){let n;try{n=e instanceof ShadowRoot}catch(e){n=!1}return n},__wbg_instanceof_WebGl2RenderingContext_4a08a94517ed5240:function(e){let n;try{n=e instanceof WebGL2RenderingContext}catch(e){n=!1}return n},__wbg_instanceof_WebGlRenderingContext_53391327f021e3ab:function(e){let n;try{n=e instanceof WebGLRenderingContext}catch(e){n=!1}return n},__wbg_instanceof_Window_ed49b2db8df90359:function(e){let n;try{n=e instanceof Window}catch(e){n=!1}return n},__wbg_isComposing_1eafc5b1376f01d1:function(e){return e.isComposing},__wbg_isComposing_9323fa62320f5fc0:function(e){return e.isComposing},__wbg_isSecureContext_1e186b850f07cfb3:function(e){return e.isSecureContext},__wbg_is_f29129f676e5410c:function(e,n){return Object.is(e,n)},__wbg_item_98b174cdde606b25:function(e,n){const t=e.item(n>>>0);return O(t)?0:f(t)},__wbg_items_4130211600bde9a4:function(e){return e.items},__wbg_keyCode_155291a11654466e:function(e){return e.keyCode},__wbg_key_d41e8e825e6bb0e9:function(e,n){const t=D(n.key,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_lastModified_a5cfce993c651681:function(e){return e.lastModified},__wbg_left_3b7c3c1030d5ca7a:function(e){return e.left},__wbg_length_0a185f5e6b78bcc5:function(e){return e.length},__wbg_length_182cff298f8d099b:function(e){return e.length},__wbg_length_1e8b0a6e52c08b9a:function(e){return e.length},__wbg_length_25b2ccd77d48ecb1:function(e){return e.length},__wbg_length_32ed9a279acd054c:function(e){return e.length},__wbg_length_35a7bace40f36eac:function(e){return e.length},__wbg_length_500e25dbc316fd13:function(e){return e.length},__wbg_length_8ce069301528a78d:function(e){return e.length},__wbg_length_9a7876c9728a0979:function(e){return e.length},__wbg_length_9efde69e99cd464e:function(e){return e.length},__wbg_length_b1593d937f31cef9:function(e){return e.length},__wbg_length_dd7a84decbd9cde7:function(e){return e.length},__wbg_length_e2449a254c768bd8:function(e){return e.length},__wbg_length_f7386240689107f3:function(e){return e.length},__wbg_linkProgram_6600dd2c0863bbfd:function(e,n){e.linkProgram(n)},__wbg_linkProgram_be6b825cf66d177b:function(e,n){e.linkProgram(n)},__wbg_localStorage_a22d31b9eacc4594:function(){return T(function(e){const n=e.localStorage;return O(n)?0:f(n)},arguments)},__wbg_location_df7ca06c93e51763:function(e){return e.location},__wbg_matchMedia_91d4fc9729dc3c84:function(){return T(function(e,n,t){const _=e.matchMedia(k(n,t));return O(_)?0:f(_)},arguments)},__wbg_matches_4b5c22bd830f7bb3:function(e){return e.matches},__wbg_metaKey_374999c340f70626:function(e){return e.metaKey},__wbg_metaKey_67113fb40365d736:function(e){return e.metaKey},__wbg_name_171cddfde96a29c8:function(e,n){const t=D(n.name,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_navigator_43be698ba96fc088:function(e){return e.navigator},__wbg_new_1e41d4ad75c60d04:function(e){return new Int16Array(e)},__wbg_new_2e2be9617c4407d5:function(){return T(function(e){return new ResizeObserver(e)},arguments)},__wbg_new_358bba68c164c0c7:function(){return new Error},__wbg_new_361308b2356cecd0:function(){return new Object},__wbg_new_3eb36ae241fe6f44:function(){return new Array},__wbg_new_4e06668820182522:function(e){return new Uint16Array(e)},__wbg_new_62561633336f4cb6:function(e){return new BigUint64Array(e)},__wbg_new_6860731fa32d2e93:function(e){return new Int8Array(e)},__wbg_new_72c627ba80de1c21:function(e){return new Int32Array(e)},__wbg_new_9ccae8c3d6099588:function(e){return new Float32Array(e)},__wbg_new_b5d9e2fb389fef91:function(e,n){try{var t={a:e,b:n};const _=new Promise((e,n)=>{const _=t.a;t.a=0;try{return function(e,n,t,_){q.wasm_bindgen__convert__closures_____invoke__h1625bce62660bc10(e,n,t,_)}(_,t.b,e,n)}finally{t.a=_}});return _}finally{t.a=t.b=0}},__wbg_new_d17d15ba1d2042a1:function(e){return new Float64Array(e)},__wbg_new_d9eada177dd1dc88:function(e){return new BigInt64Array(e)},__wbg_new_dd2b680c8bf6ae29:function(e){return new Uint8Array(e)},__wbg_new_ebe5c47b71282e03:function(e){return new Uint32Array(e)},__wbg_new_from_slice_a3d2629dc1826784:function(e,n){return new Uint8Array(y(e,n))},__wbg_new_no_args_1c7c842f08d00ebb:function(e,n){return new Function(k(e,n))},__wbg_new_with_length_63f2683cc2521026:function(e){return new Float32Array(e>>>0)},__wbg_new_with_length_6523745c0bd32809:function(e){return new Float64Array(e>>>0)},__wbg_new_with_record_from_str_to_blob_promise_17d3b40dbba6c99d:function(){return T(function(e){return new ClipboardItem(e)},arguments)},__wbg_new_with_text_c4caedd46c3e5f01:function(){return T(function(e,n){return new SpeechSynthesisUtterance(k(e,n))},arguments)},__wbg_new_with_u8_array_sequence_and_options_cc0f8f2c1ef62e68:function(){return T(function(e,n){return new Blob(e,n)},arguments)},__wbg_now_2c95c9de01293173:function(e){return e.now()},__wbg_now_ebffdf7e580f210d:function(e){return e.now()},__wbg_observe_1ae37077cf10b11b:function(e,n,t){e.observe(n,t)},__wbg_of_f915f7cd925b21a5:function(e){return Array.of(e)},__wbg_offsetTop_e3d5b0a34b3200fc:function(e){return e.offsetTop},__wbg_open_ea44acde696d3b0c:function(){return T(function(e,n,t,_,r){const c=e.open(k(n,t),k(_,r));return O(c)?0:f(c)},arguments)},__wbg_origin_a9c891fa602b4d40:function(){return T(function(e,n){const t=D(n.origin,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_performance_06f12ba62483475d:function(e){const n=e.performance;return O(n)?0:f(n)},__wbg_performance_7a3ffd0b17f663ad:function(e){return e.performance},__wbg_pixelStorei_2a65936c11b710fe:function(e,n,t){e.pixelStorei(n>>>0,t)},__wbg_pixelStorei_f7cc498f52d523f1:function(e,n,t){e.pixelStorei(n>>>0,t)},__wbg_port_dc56bc76d55c2b55:function(){return T(function(e,n){const t=D(n.port,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_preventDefault_cdcfcd7e301b9702:function(e){e.preventDefault()},__wbg_protocol_4c3b13957de7d079:function(){return T(function(e,n){const t=D(n.protocol,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_prototypesetcall_2adb484744144f7f:function(e,n,t){Uint16Array.prototype.set.call(m(e,n),t)},__wbg_prototypesetcall_4846d4aa386c936f:function(e,n,t){Uint32Array.prototype.set.call(p(e,n),t)},__wbg_prototypesetcall_4f65a157230198d8:function(e,n,t){Int8Array.prototype.set.call(h(e,n),t)},__wbg_prototypesetcall_55c7bc6bcd6a9457:function(e,n,t){Int16Array.prototype.set.call(l(e,n),t)},__wbg_prototypesetcall_aefe6319f589ab4b:function(e,n,t){Float64Array.prototype.set.call(s(e,n),t)},__wbg_prototypesetcall_bdcdcc5842e4d77d:function(e,n,t){Uint8Array.prototype.set.call(y(e,n),t)},__wbg_prototypesetcall_c7e6a26aeade796d:function(e,n,t){Float32Array.prototype.set.call(d(e,n),t)},__wbg_prototypesetcall_f8118a9f36fee41e:function(e,n,t){Int32Array.prototype.set.call(w(e,n),t)},__wbg_push_8ffdcb2063340ba5:function(e,n){return e.push(n)},__wbg_queueMicrotask_0aa0a927f78f5d98:function(e){return e.queueMicrotask},__wbg_queueMicrotask_5bb536982f78a56f:function(e){queueMicrotask(e)},__wbg_readPixels_55b18304384e073d:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_readPixels_6ea8e288a8673282:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_readPixels_95b2464a7bb863a2:function(){return T(function(e,n,t,_,r,c,o,a){e.readPixels(n,t,_,r,c>>>0,o>>>0,a)},arguments)},__wbg_removeEventListener_e63328781a5b9af9:function(){return T(function(e,n,t,_){e.removeEventListener(k(n,t),_)},arguments)},__wbg_remove_31c39325eee968fc:function(e){e.remove()},__wbg_requestAnimationFrame_43682f8e1c5e5348:function(){return T(function(e,n){return e.requestAnimationFrame(n)},arguments)},__wbg_resolve_002c4b7d9d8f6b64:function(e){return Promise.resolve(e)},__wbg_right_154af6c2b1bf0c89:function(e){return e.right},__wbg_scissor_2ff8f18f05a6d408:function(e,n,t,_,r){e.scissor(n,t,_,r)},__wbg_scissor_b870b1434a9c25b4:function(e,n,t,_,r){e.scissor(n,t,_,r)},__wbg_search_1b385e665c888780:function(){return T(function(e,n){const t=D(n.search,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_setAttribute_cc8e4c8a2a008508:function(){return T(function(e,n,t,_,r){e.setAttribute(k(n,t),k(_,r))},arguments)},__wbg_setItem_cf340bb2edbd3089:function(){return T(function(e,n,t,_,r){e.setItem(k(n,t),k(_,r))},arguments)},__wbg_setProperty_cbb25c4e74285b39:function(){return T(function(e,n,t,_,r){e.setProperty(k(n,t),k(_,r))},arguments)},__wbg_set_6cb8631f80447a67:function(){return T(function(e,n,t){return Reflect.set(e,n,t)},arguments)},__wbg_set_a7e6b10165583fc4:function(e,n,t){e.set(s(n,t))},__wbg_set_autofocus_7125a4a223a1d570:function(){return T(function(e,n){e.autofocus=0!==n},arguments)},__wbg_set_box_73d3355c6f95f24d:function(e,n){e.box=i[n]},__wbg_set_f8edeec46569cc70:function(e,n,t){e.set(d(n,t))},__wbg_set_height_f21f985387070100:function(e,n){e.height=n>>>0},__wbg_set_once_56ba1b87a9884c15:function(e,n){e.once=0!==n},__wbg_set_pitch_91774e1f0bbc52fa:function(e,n){e.pitch=n},__wbg_set_rate_63dfcd5b7bcdbc07:function(e,n){e.rate=n},__wbg_set_tabIndex_eb89b6ffe111cd2c:function(e,n){e.tabIndex=n},__wbg_set_type_148de20768639245:function(e,n,t){e.type=k(n,t)},__wbg_set_type_abc37fa3c213f717:function(e,n,t){e.type=k(n,t)},__wbg_set_value_62a965e38b22b38c:function(e,n,t){e.value=k(n,t)},__wbg_set_volume_789cc971c19a2e24:function(e,n){e.volume=n},__wbg_set_width_d60bc4f2f20c56a4:function(e,n){e.width=n>>>0},__wbg_shaderSource_32425cfe6e5a1e52:function(e,n,t,_){e.shaderSource(n,k(t,_))},__wbg_shaderSource_8f4bda03f70359df:function(e,n,t,_){e.shaderSource(n,k(t,_))},__wbg_shiftKey_5558a3288542c985:function(e){return e.shiftKey},__wbg_shiftKey_564be91ec842bcc4:function(e){return e.shiftKey},__wbg_size_e05d31cc6049815f:function(e){return e.size},__wbg_speak_67796aeb0b5fd194:function(e,n){e.speak(n)},__wbg_speechSynthesis_95b40351572bb250:function(){return T(function(e){return e.speechSynthesis},arguments)},__wbg_stack_d87a83f5bc721084:function(e,n){const t=D(n.stack,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_static_accessor_GLOBAL_12837167ad935116:function(){const e=void 0===t.g?null:t.g;return O(e)?0:f(e)},__wbg_static_accessor_GLOBAL_THIS_e628e89ab3b1c95f:function(){const e="undefined"==typeof globalThis?null:globalThis;return O(e)?0:f(e)},__wbg_static_accessor_SELF_a621d3dfbb60d0ce:function(){const e="undefined"==typeof self?null:self;return O(e)?0:f(e)},__wbg_static_accessor_WINDOW_f8727f0cf888e0bd:function(){const e="undefined"==typeof window?null:window;return O(e)?0:f(e)},__wbg_stopPropagation_6e5e2a085214ac63:function(e){e.stopPropagation()},__wbg_style_0b7c9bd318f8b807:function(e){return e.style},__wbg_texImage2D_087ef94df78081f0:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texImage2D_13414a4692836804:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texImage2D_e71049312f3172d9:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texParameteri_0d45be2c88d6bad8:function(e,n,t,_){e.texParameteri(n>>>0,t>>>0,_)},__wbg_texParameteri_ec937d2161018946:function(e,n,t,_){e.texParameteri(n>>>0,t>>>0,_)},__wbg_texSubImage2D_19ae4cadb809f264:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texSubImage2D_d17a39cdec4a3495:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_texSubImage2D_edf5bd70fda3feaf:function(){return T(function(e,n,t,_,r,c,o,a,i,b){e.texSubImage2D(n>>>0,t,_,r,c,o,a>>>0,i>>>0,b)},arguments)},__wbg_then_0d9fe2c7b1857d32:function(e,n,t){return e.then(n,t)},__wbg_then_b9e7b3b5f1a9e1b5:function(e,n){return e.then(n)},__wbg_top_3d27ff6f468cf3fc:function(e){return e.top},__wbg_touches_55ce167b42bcdf52:function(e){return e.touches},__wbg_type_9a3860e6dd3a4156:function(e,n){const t=D(n.type,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_type_e8c7fade6d73451b:function(e,n){const t=D(n.type,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_uniform1i_9f3f72dbcb98ada9:function(e,n,t){e.uniform1i(n,t)},__wbg_uniform1i_e9aee4b9e7fe8c4b:function(e,n,t){e.uniform1i(n,t)},__wbg_uniform2f_1887b1268f65bfee:function(e,n,t,_){e.uniform2f(n,t,_)},__wbg_uniform2f_2aa77a6395d47f1d:function(e,n,t,_){e.uniform2f(n,t,_)},__wbg_useProgram_e82c1a5f87d81579:function(e,n){e.useProgram(n)},__wbg_useProgram_fe720ade4d3b6edb:function(e,n){e.useProgram(n)},__wbg_userAgent_34463fd660ba4a2a:function(){return T(function(e,n){const t=D(n.userAgent,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},arguments)},__wbg_value_e506a07878790ca0:function(e,n){const t=D(n.value,q.__wbindgen_malloc,q.__wbindgen_realloc),_=$;x().setInt32(e+4,_,!0),x().setInt32(e+0,t,!0)},__wbg_vertexAttribPointer_75f6ff47f6c9f8cb:function(e,n,t,_,r,c,o){e.vertexAttribPointer(n>>>0,t,_>>>0,0!==r,c,o)},__wbg_vertexAttribPointer_adbd1853cce679ad:function(e,n,t,_,r,c,o){e.vertexAttribPointer(n>>>0,t,_>>>0,0!==r,c,o)},__wbg_viewerhandle_new:function(e){return _.__wrap(e)},__wbg_viewport_174ae1c2209344ae:function(e,n,t,_,r){e.viewport(n,t,_,r)},__wbg_viewport_df236eac68bc7467:function(e,n,t,_,r){e.viewport(n,t,_,r)},__wbg_warn_11b4e4f7bff9ffb7:function(e,n){console.warn(k(e,n))},__wbg_width_5f66bde2e810fbde:function(e){return e.width},__wbg_width_7444cca5dfea0645:function(e){return e.width},__wbg_writeText_be1c3b83a3e46230:function(e,n,t){return e.writeText(k(n,t))},__wbg_write_d429ce72e918e180:function(e,n){return e.write(n)},__wbindgen_cast_0000000000000001:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h38629009cac2a396,o)},__wbindgen_cast_0000000000000002:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h38629009cac2a396,o)},__wbindgen_cast_0000000000000003:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h38629009cac2a396,c)},__wbindgen_cast_0000000000000004:function(e,n){return F(e,n,q.wasm_bindgen__closure__destroy__h9c5afa9203b37a12,a)},__wbindgen_cast_0000000000000005:function(e){return e},__wbindgen_cast_0000000000000006:function(e,n){return d(e,n)},__wbindgen_cast_0000000000000007:function(e,n){return l(e,n)},__wbindgen_cast_0000000000000008:function(e,n){return w(e,n)},__wbindgen_cast_0000000000000009:function(e,n){return h(e,n)},__wbindgen_cast_000000000000000a:function(e,n){return m(e,n)},__wbindgen_cast_000000000000000b:function(e,n){return p(e,n)},__wbindgen_cast_000000000000000c:function(e,n){return y(e,n)},__wbindgen_cast_000000000000000d:function(e,n){return k(e,n)},__wbindgen_init_externref_table:function(){const e=q.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}};return{__proto__:null,"./viewarr_bg.js":e}}function c(e,n){const t=q.wasm_bindgen__convert__closures_____invoke__h1c1f774385058841(e,n);if(t[1])throw z(t[0])}function o(e,n,t){q.wasm_bindgen__convert__closures_____invoke__h04eb852776c2859a(e,n,t)}function a(e,n,t){q.wasm_bindgen__convert__closures_____invoke__h413df5ececa1baee(e,n,t)}Symbol.dispose&&(_.prototype[Symbol.dispose]=_.prototype.free);const i=["border-box","content-box","device-pixel-content-box"],b="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>q.__wbg_viewerhandle_free(e>>>0,1));function f(e){const n=q.__externref_table_alloc();return q.__wbindgen_externrefs.set(n,e),n}const u="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>e.dtor(e.a,e.b));function g(e){const n=typeof e;if("number"==n||"boolean"==n||null==e)return`${e}`;if("string"==n)return`"${e}"`;if("symbol"==n){const n=e.description;return null==n?"Symbol":`Symbol(${n})`}if("function"==n){const n=e.name;return"string"==typeof n&&n.length>0?`Function(${n})`:"Function"}if(Array.isArray(e)){const n=e.length;let t="[";n>0&&(t+=g(e[0]));for(let _=1;_<n;_++)t+=", "+g(e[_]);return t+="]",t}const t=/\[object ([^\]]+)\]/.exec(toString.call(e));let _;if(!(t&&t.length>1))return toString.call(e);if(_=t[1],"Object"==_)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:_}function d(e,n){return e>>>=0,S().subarray(e/4,e/4+n)}function s(e,n){return e>>>=0,(null!==A&&0!==A.byteLength||(A=new Float64Array(q.memory.buffer)),A).subarray(e/8,e/8+n)}function l(e,n){return e>>>=0,(null!==P&&0!==P.byteLength||(P=new Int16Array(q.memory.buffer)),P).subarray(e/2,e/2+n)}function w(e,n){return e>>>=0,(null!==C&&0!==C.byteLength||(C=new Int32Array(q.memory.buffer)),C).subarray(e/4,e/4+n)}function h(e,n){return e>>>=0,(null!==E&&0!==E.byteLength||(E=new Int8Array(q.memory.buffer)),E).subarray(e/1,e/1+n)}function m(e,n){return e>>>=0,(null!==R&&0!==R.byteLength||(R=new Uint16Array(q.memory.buffer)),R).subarray(e/2,e/2+n)}function p(e,n){return e>>>=0,(null!==M&&0!==M.byteLength||(M=new Uint32Array(q.memory.buffer)),M).subarray(e/4,e/4+n)}function y(e,n){return e>>>=0,B().subarray(e/1,e/1+n)}let v=null;function x(){return(null===v||!0===v.buffer.detached||void 0===v.buffer.detached&&v.buffer!==q.memory.buffer)&&(v=new DataView(q.memory.buffer)),v}let I=null;function S(){return null!==I&&0!==I.byteLength||(I=new Float32Array(q.memory.buffer)),I}let A=null,P=null,C=null,E=null;function k(e,n){return function(e,n){return W+=n,W>=U&&(V=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),V.decode(),W=n),V.decode(B().subarray(e,e+n))}(e>>>=0,n)}let R=null,M=null,L=null;function B(){return null!==L&&0!==L.byteLength||(L=new Uint8Array(q.memory.buffer)),L}function T(e,n){try{return e.apply(this,n)}catch(e){const n=f(e);q.__wbindgen_exn_store(n)}}function O(e){return null==e}function F(e,n,t,_){const r={a:e,b:n,cnt:1,dtor:t},c=(...e)=>{r.cnt++;const n=r.a;r.a=0;try{return _(n,r.b,...e)}finally{r.a=n,c._wbg_cb_unref()}};return c._wbg_cb_unref=()=>{0===--r.cnt&&(r.dtor(r.a,r.b),r.a=0,u.unregister(r))},u.register(c,r,r),c}function D(e,n,t){if(void 0===t){const t=K.encode(e),_=n(t.length,1)>>>0;return B().subarray(_,_+t.length).set(t),$=t.length,_}let _=e.length,r=n(_,1)>>>0;const c=B();let o=0;for(;o<_;o++){const n=e.charCodeAt(o);if(n>127)break;c[r+o]=n}if(o!==_){0!==o&&(e=e.slice(o)),r=t(r,_,_=o+3*e.length,1)>>>0;const n=B().subarray(r+o,r+_);o+=K.encodeInto(e,n).written,r=t(r,_,o,1)>>>0}return $=o,r}function z(e){const n=q.__wbindgen_externrefs.get(e);return q.__externref_table_dealloc(e),n}let V=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});V.decode();const U=2146435072;let W=0;const K=new TextEncoder;"encodeInto"in K||(K.encodeInto=function(e,n){const t=K.encode(e);return n.set(t),{read:e.length,written:t.length}});let j,q,$=0;function G(e,n){return q=e.exports,j=n,v=null,I=null,A=null,P=null,C=null,E=null,R=null,M=null,L=null,q.__wbindgen_start(),q}function H(e){if(void 0!==q)return q;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module:e}=e):console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const n=r();return e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),G(new WebAssembly.Instance(e,n),e)}async function X(e){if(void 0!==q)return q;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL(t(119),t.b));const n=r();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:_,module:c}=await async function(e,n){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,n)}catch(n){if(!e.ok||!function(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}(e.type)||"application/wasm"===e.headers.get("Content-Type"))throw n;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n)}const t=await e.arrayBuffer();return await WebAssembly.instantiate(t,n)}{const t=await WebAssembly.instantiate(e,n);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}(await e,n);return G(_,c)}},119(e,n,t){e.exports=t.p+"7b93d2a8e325f02dc768.wasm"}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfitsview=self.webpackChunkfitsview||[]).push([[728],{56(n,e,r){n.exports=function(n){var e=r.nc;e&&n.setAttribute("nonce",e)}},72(n){var e=[];function r(n){for(var r=-1,o=0;o<e.length;o++)if(e[o].identifier===n){r=o;break}return r}function o(n,o){for(var i={},a=[],p=0;p<n.length;p++){var l=n[p],c=o.base?l[0]+o.base:l[0],d=i[c]||0,s="".concat(c," ").concat(d);i[c]=d+1;var u=r(s),f={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==u)e[u].references++,e[u].updater(f);else{var v=t(f,o);o.byIndex=p,e.splice(p,0,{identifier:s,updater:v,references:1})}a.push(s)}return a}function t(n,e){var r=e.domAPI(e);return r.update(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;r.update(n=e)}else r.remove()}}n.exports=function(n,t){var i=o(n=n||[],t=t||{});return function(n){n=n||[];for(var a=0;a<i.length;a++){var p=r(i[a]);e[p].references--}for(var l=o(n,t),c=0;c<i.length;c++){var d=r(i[c]);0===e[d].references&&(e[d].updater(),e.splice(d,1))}i=l}}},113(n){n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},314(n){n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var r="",o=void 0!==e[5];return e[4]&&(r+="@supports (".concat(e[4],") {")),e[2]&&(r+="@media ".concat(e[2]," {")),o&&(r+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),r+=n(e),o&&(r+="}"),e[2]&&(r+="}"),e[4]&&(r+="}"),r}).join("")},e.i=function(n,r,o,t,i){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(o)for(var p=0;p<this.length;p++){var l=this[p][0];null!=l&&(a[l]=!0)}for(var c=0;c<n.length;c++){var d=[].concat(n[c]);o&&a[d[0]]||(void 0!==i&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),r&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=r):d[2]=r),t&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=t):d[4]="".concat(t)),e.push(d))}},e}},475(n,e,r){r.d(e,{A:()=>p});var o=r(601),t=r.n(o),i=r(314),a=r.n(i)()(t());a.push([n.id,"/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n\n.jp-FITSViewer {\n overflow: hidden;\n font-family: var(--jp-ui-font-family);\n height: 100%;\n}\n\n.jp-FITSViewer-content {\n height: 100%;\n}\n\n.jp-FITSViewer-layout {\n display: flex;\n height: 100%;\n}\n\n.jp-FITSViewer-viewerPanel {\n flex: 1;\n min-width: 300px;\n display: flex;\n flex-direction: column;\n}\n\n/* Control bar containing HDU buttons and slice controls */\n.jp-FITSViewer-controlBar {\n display: flex;\n flex-direction: column;\n background: var(--jp-layout-color1);\n border-bottom: 1px solid var(--jp-border-color1);\n}\n\n/* Horizontal HDU button bar */\n.jp-FITSViewer-hduBar {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n padding: 6px 8px;\n}\n\n.jp-FITSViewer-hduBar:empty {\n display: none;\n}\n\n.jp-FITSViewer-hduButton {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n color: var(--jp-ui-font-color1);\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n}\n\n.jp-FITSViewer-hduButton:hover:not(:disabled) {\n background: var(--jp-layout-color3);\n border-color: var(--jp-border-color2);\n}\n\n.jp-FITSViewer-hduButton-active {\n background: var(--jp-brand-color3);\n border-color: var(--jp-brand-color1);\n}\n\n.jp-FITSViewer-hduButton-disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n.jp-FITSViewer-hduContent {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 1px;\n}\n\n.jp-FITSViewer-hduName {\n white-space: nowrap;\n font-weight: 500;\n}\n\n.jp-FITSViewer-hduInfo {\n white-space: nowrap;\n font-size: 10px;\n color: var(--jp-ui-font-color2);\n}\n\n.jp-FITSViewer-hduLabel {\n white-space: nowrap;\n}\n\n.jp-FITSViewer-headerIcon {\n color: var(--jp-brand-color1);\n text-decoration: none;\n font-size: 14px;\n line-height: 1;\n opacity: 0.8;\n transition: opacity 0.15s ease;\n}\n\n.jp-FITSViewer-headerIcon:hover {\n opacity: 1;\n text-decoration: none;\n}\n\n.jp-FITSViewer-sliceControls {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n padding: 6px 8px;\n}\n\n.jp-FITSViewer-sliceControls:empty {\n display: none;\n padding: 0;\n}\n\n.jp-FITSViewer-sliceControl {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.jp-FITSViewer-sliceButton {\n margin-top: 8px;\n padding: 6px 12px;\n background: var(--jp-layout-color3);\n color: var(--jp-ui-font-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n}\n\n.jp-FITSViewer-sliceButton:hover {\n background: var(--jp-layout-color4);\n}\n\n.jp-FITSViewer-sliceControl .jp-FITSViewer-sliceButton {\n width: 28px;\n height: 28px;\n padding: 0;\n margin: 0;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.jp-FITSViewer-sliceControl .jp-FITSViewer-sliceButton:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.jp-FITSViewer-sliceControl .jp-FITSViewer-sliceButton:hover:not(:disabled) {\n background: var(--jp-layout-color3);\n}\n\n.jp-FITSViewer-sliceLabel {\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n min-width: 100px;\n text-align: center;\n}\n\n.jp-FITSViewer-viewerContainer {\n flex: 1;\n min-height: 200px;\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n overflow: hidden;\n position: relative;\n}\n\n.jp-FITSViewer-viewerPlaceholder {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n.jp-FITSViewer-metadataPanel {\n width: 350px;\n min-width: 250px;\n max-width: 450px;\n overflow-y: auto;\n padding: 16px;\n background: var(--jp-layout-color0);\n border-left: 1px solid var(--jp-border-color1);\n}\n\n.jp-FITSViewer-metadataPanel h2 {\n margin-top: 0;\n font-size: 1.2em;\n color: var(--jp-ui-font-color0);\n}\n\n.jp-FITSViewer-metadataPanel h3 {\n font-size: 1em;\n margin-bottom: 8px;\n color: var(--jp-ui-font-color1);\n}\n\n.jp-FITSViewer-hdu {\n margin-bottom: 24px;\n padding: 12px;\n background: var(--jp-layout-color1);\n border-radius: 4px;\n border: 1px solid var(--jp-border-color1);\n}\n\n.jp-FITSViewer-hdu-viewable {\n cursor: pointer;\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n}\n\n.jp-FITSViewer-hdu-viewable:hover {\n border-color: var(--jp-brand-color1);\n background: var(--jp-layout-color2);\n}\n\n.jp-FITSViewer-hdu-active {\n border-color: var(--jp-brand-color1);\n border-width: 2px;\n background: var(--jp-layout-color2);\n}\n\n.jp-FITSViewer-viewerStack {\n flex: 1;\n position: relative;\n min-height: 0;\n}\n\n.jp-FITSViewer-viewerStack .jp-FITSViewer-viewerContainer {\n position: absolute;\n inset: 0;\n}\n\n.jp-FITSViewer-headerLink {\n color: var(--jp-content-link-color);\n text-decoration: none;\n font-size: 13px;\n}\n\n.jp-FITSViewer-headerLink:hover {\n text-decoration: underline;\n}\n\n.jp-FITSViewer-headerTable {\n font-size: 0.85em;\n border-collapse: collapse;\n margin-top: 8px;\n}\n\n.jp-FITSViewer-headerTable td {\n padding: 4px 8px;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.jp-FITSViewer-headerTable td:first-child {\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.jp-FITSViewer-viewButton {\n margin-top: 8px;\n margin-right: 8px;\n padding: 6px 12px;\n background: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n}\n\n.jp-FITSViewer-viewButton:hover {\n background: var(--jp-brand-color0);\n}\n\n.jp-FITSViewer-sliceResult {\n margin-top: 8px;\n padding: 8px;\n background: var(--jp-layout-color2);\n border-radius: 4px;\n font-family: var(--jp-code-font-family);\n font-size: 0.85em;\n white-space: pre;\n overflow-x: auto;\n}\n\n.jp-FITSViewer-error {\n color: var(--jp-error-color1);\n padding: 12px;\n background: var(--jp-error-color3);\n border-radius: 4px;\n}\n\n.jp-FITSViewer-headerPre {\n margin: 0;\n padding: 8px;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n font-family: var(--jp-code-font-family);\n font-size: 0.85em;\n line-height: 1.4;\n white-space: pre;\n overflow: auto;\n max-height: 400px;\n}\n\n/* Large image prompt UI */\n.jp-FITSViewer-largeImagePrompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 20px;\n text-align: center;\n gap: 16px;\n}\n\n.jp-FITSViewer-largeImagePrompt p {\n margin: 0;\n color: var(--jp-ui-font-color1);\n font-size: 1em;\n}\n\n.jp-FITSViewer-fetchButton {\n padding: 8px 24px;\n font-size: 1em;\n}\n\n.jp-FITSViewer-progressContainer {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n max-width: 400px;\n}\n\n.jp-FITSViewer-progressBar {\n flex: 1;\n height: 20px;\n background: var(--jp-layout-color2);\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid var(--jp-border-color1);\n}\n\n.jp-FITSViewer-progressFill {\n height: 100%;\n width: 0%;\n background: var(--jp-brand-color1);\n transition: width 0.1s ease-out;\n}\n\n.jp-FITSViewer-progressText {\n min-width: 180px;\n font-family: var(--jp-code-font-family);\n font-size: 0.85em;\n color: var(--jp-ui-font-color1);\n}\n\n.jp-FITSViewer-cancelButton {\n padding: 4px 12px;\n font-size: 0.9em;\n}\n",""]);const p=a},540(n){n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},601(n){n.exports=function(n){return n[1]}},659(n){var e={};n.exports=function(n,r){var o=function(n){if(void 0===e[n]){var r=document.querySelector(n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(n){r=null}e[n]=r}return e[n]}(n);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(r)}},728(n,e,r){var o=r(72),t=r.n(o),i=r(825),a=r.n(i),p=r(659),l=r.n(p),c=r(56),d=r.n(c),s=r(540),u=r.n(s),f=r(113),v=r.n(f),h=r(475),x={};x.styleTagTransform=v(),x.setAttributes=d(),x.insert=l().bind(null,"head"),x.domAPI=a(),x.insertStyleElement=u(),t()(h.A,x),h.A&&h.A.locals&&h.A.locals},825(n){n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(r){!function(n,e,r){var o="";r.supports&&(o+="@supports (".concat(r.supports,") {")),r.media&&(o+="@media ".concat(r.media," {"));var t=void 0!==r.layer;t&&(o+="@layer".concat(r.layer.length>0?" ".concat(r.layer):""," {")),o+=r.css,t&&(o+="}"),r.media&&(o+="}"),r.supports&&(o+="}");var i=r.sourceMap;i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleTagTransform(o,n,e.options)}(e,n,r)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfitsview=self.webpackChunkfitsview||[]).push([[777],{777(e,t,n){n.r(t),n.d(t,{default:()=>f});var i,r=n(10),s=n(401),a=n(247),o=n(514);function c(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}!function(e){e.INT8="i8",e.UINT8="u8",e.INT16="i16",e.UINT16="u16",e.INT32="i32",e.UINT32="u32",e.INT64="i64",e.UINT64="u64",e.FLOAT32="f32",e.FLOAT64="f64"}(i||(i={}));let l=null;const d=n.e(32).then(n.t.bind(n,32,23)).then(e=>{l=e}).catch(e=>{console.warn("viewarr module not available, image viewer disabled:",e)});class h extends a.Widget{constructor(e){super(),this._viewerContainers=new Map,this._sliceStates=new Map,this._activeHduIndex=null,this._sliceControlsContainer=null,this._fetchAbortController=null,this._metadata=null,this._context=e,this.addClass("jp-FITSViewer"),this._baseViewerId="fitsview-"+h._instanceCounter++,this._content=document.createElement("div"),this._content.className="jp-FITSViewer-content",this.node.appendChild(this._content),e.ready.then(()=>{this._loadMetadata()})}_getViewerId(e){return`${this._baseViewerId}-hdu${e}`}async _loadMetadata(){const e=this._context.path;this._content.innerHTML=`<p>Loading metadata for ${e}...</p>`;try{const t=await async function(e="",t={}){const n=s.ServerConnection.makeSettings(),i=o.URLExt.join(n.baseUrl,"fitsview",e);let r;try{r=await s.ServerConnection.makeRequest(i,t,n)}catch(e){throw new s.ServerConnection.NetworkError(e)}let a=await r.text();if(a.length>0)try{a=JSON.parse(a)}catch(e){console.log("Not a JSON response body.",r)}if(!r.ok){let e="Unknown error";throw"string"==typeof a?e=a:a&&"object"==typeof a&&(e=a.error||a.message||JSON.stringify(a)),new s.ServerConnection.ResponseError(r,e)}return a}(`metadata?path=${encodeURIComponent(e)}`);this._metadata=t,this._renderMetadata()}catch(e){this._content.innerHTML=`<p class="jp-FITSViewer-error">Error loading FITS metadata: ${e}</p>`}}_renderMetadata(){if(!this._metadata)return;const{hdus:e}=this._metadata,t=e.filter(e=>e.shape&&e.shape.length>=2&&e.arrayType);let n="";for(const e of t)n+=`\n <div id="${this._getViewerId(e.index)}" class="jp-FITSViewer-viewerContainer" data-hdu="${e.index}" style="display: none;">\n <div class="jp-FITSViewer-viewerPlaceholder">Loading...</div>\n </div>\n `;0===t.length&&(n='\n <div class="jp-FITSViewer-viewerContainer">\n <div class="jp-FITSViewer-viewerPlaceholder">No viewable image data</div>\n </div>\n ');let i="";for(const t of e){const e=t.shape&&t.shape.length>=2&&t.arrayType,n=t.name||`HDU ${t.index}`;let r;r=t.shape&&t.shape.length>=2&&t.arrayType?`${t.shape.join("×")} [${t.arrayType}]`:t.shape&&1===t.shape.length?`${t.shape[0]} rows`:"—";const s=e?"":"disabled";i+=`\n <button class="${e?"jp-FITSViewer-hduButton":"jp-FITSViewer-hduButton jp-FITSViewer-hduButton-disabled"}" data-hdu="${t.index}" ${s}>\n <div class="jp-FITSViewer-hduContent">\n <span class="jp-FITSViewer-hduName">${t.index}: ${n}</span>\n <span class="jp-FITSViewer-hduInfo">${r}</span>\n </div>\n <a href="#" class="jp-FITSViewer-headerIcon" data-hdu="${t.index}" title="View Header">ⓘ</a>\n </button>\n `}const r=`\n <div class="jp-FITSViewer-layout">\n <div class="jp-FITSViewer-viewerPanel">\n <div class="jp-FITSViewer-controlBar">\n <div class="jp-FITSViewer-hduBar">${i}</div>\n <div id="${this._baseViewerId}-controls" class="jp-FITSViewer-sliceControls"></div>\n </div>\n <div class="jp-FITSViewer-viewerStack">\n ${n}\n </div>\n </div>\n </div>\n `;this._content.innerHTML=r,this._viewerContainers.clear();for(const e of t){const t=this._getViewerId(e.index),n=document.getElementById(t);n&&this._viewerContainers.set(e.index,n)}this._sliceControlsContainer=document.getElementById(`${this._baseViewerId}-controls`),d.then(()=>{this._autoDisplayFirstHDU()}),this._content.querySelectorAll(".jp-FITSViewer-hduButton").forEach(e=>{e.addEventListener("click",t=>{if(t.target.classList.contains("jp-FITSViewer-headerIcon"))return;const n=parseInt(e.dataset.hdu||"0",10);this._switchToHDU(n)})}),this._content.querySelectorAll(".jp-FITSViewer-headerIcon").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const n=parseInt(e.dataset.hdu||"0",10);this._openHeaderWindow(n)})})}async _switchToHDU(e){if(this._activeHduIndex===e)return;if(null!==this._activeHduIndex){const e=this._viewerContainers.get(this._activeHduIndex);e&&(e.style.display="none");const t=this._content.querySelector(`.jp-FITSViewer-hduButton[data-hdu="${this._activeHduIndex}"]`);t?.classList.remove("jp-FITSViewer-hduButton-active")}const t=this._viewerContainers.get(e);t&&(t.style.display="flex");const n=this._content.querySelector(`.jp-FITSViewer-hduButton[data-hdu="${e}"]`);n?.classList.add("jp-FITSViewer-hduButton-active"),this._activeHduIndex=e,await this._viewHDUImage(e)}_openHeaderWindow(e){const t=this._metadata?.hdus.find(t=>t.index===e);if(!t||!t.header)return;const n=`${this._context.path.split("/").pop()||"file"} - ${t.name||`HDU ${e}`} Header`,i=window.open("","_blank","width=800,height=600");i&&(i.document.write(`<!DOCTYPE html>\n<html>\n<head>\n <title>${n}</title>\n <style>\n body {\n font-family: monospace;\n padding: 16px;\n margin: 0;\n background: #1e1e1e;\n color: #d4d4d4;\n }\n pre {\n white-space: pre;\n margin: 0;\n line-height: 1.4;\n }\n </style>\n</head>\n<body>\n<pre>${t.header.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}</pre>\n</body>\n</html>`),i.document.close())}async _ensureViewer(e){await d;const t=this._viewerContainers.get(e),n=this._getViewerId(e);if(!l||!t)return!1;if(l.hasViewer(n))return!0;try{return t.innerHTML="",await l.createViewer(n),!0}catch(e){return console.error("Failed to create viewarr viewer:",e),!1}}_autoDisplayFirstHDU(){if(!this._metadata||!l)return;const e=this._metadata.hdus.find(e=>e.shape&&e.shape.length>=2&&e.arrayType);e&&this._switchToHDU(e.index)}async _viewHDUImage(e){if(!l)return void console.warn("viewarr not available");const t=this._metadata?.hdus.find(t=>t.index===e);if(!t||!t.shape||t.shape.length<2||!t.arrayType)return;const n=t.shape,r=n.length-2;let s=this._sliceStates.get(e);s||(s={hduIndex:e,shape:n,sliceIndices:new Array(r).fill(0)},this._sliceStates.set(e,s)),this._renderSliceControls();const a=this._getViewerId(e);if(l.hasViewer(a))return;const o=function(e,t){if(e.length<2)return 0;const n=e[e.length-2];return e[e.length-1]*n*function(e){switch(e){case i.INT8:case i.UINT8:return 1;case i.INT16:case i.UINT16:return 2;case i.INT32:case i.UINT32:case i.FLOAT32:return 4;case i.INT64:case i.UINT64:case i.FLOAT64:default:return 8}}(t)}(n,t.arrayType);o<=5242880?await this._fetchAndDisplaySlice():this._showLargeImagePrompt(o)}_getActiveSliceState(){if(null!==this._activeHduIndex)return this._sliceStates.get(this._activeHduIndex)}_getActiveViewerContainer(){if(null!==this._activeHduIndex)return this._viewerContainers.get(this._activeHduIndex)}_showLargeImagePrompt(e){const t=this._getActiveViewerContainer();if(!t)return;const n=c(e);t.innerHTML=`\n <div class="jp-FITSViewer-largeImagePrompt">\n <p>This image slice is <strong>${n}</strong>, which exceeds the auto-fetch limit.</p>\n <button class="jp-FITSViewer-fetchButton jp-mod-styled">\n Fetch and Display\n </button>\n <div class="jp-FITSViewer-progressContainer" style="display: none;">\n <div class="jp-FITSViewer-progressBar">\n <div class="jp-FITSViewer-progressFill"></div>\n </div>\n <span class="jp-FITSViewer-progressText">0%</span>\n <button class="jp-FITSViewer-cancelButton jp-mod-styled jp-mod-warn">\n Cancel\n </button>\n </div>\n </div>\n `;const i=t.querySelector(".jp-FITSViewer-fetchButton"),r=t.querySelector(".jp-FITSViewer-progressContainer"),s=t.querySelector(".jp-FITSViewer-progressFill"),a=t.querySelector(".jp-FITSViewer-progressText"),o=t.querySelector(".jp-FITSViewer-cancelButton");i.addEventListener("click",()=>{i.style.display="none",r.style.display="flex",this._fetchAndDisplaySliceWithProgress(s,a,r)}),o.addEventListener("click",()=>{this._fetchAbortController&&(this._fetchAbortController.abort(),this._fetchAbortController=null),i.style.display="block",r.style.display="none",s.style.width="0%",a.textContent="0%"})}async _fetchAndDisplaySliceWithProgress(e,t,n){const r=this._getActiveSliceState(),a=this._getActiveViewerContainer(),d=this._activeHduIndex;if(console.log("[FITSViewer] _fetchAndDisplaySliceWithProgress called"),console.log("[FITSViewer] sliceState:",r),console.log("[FITSViewer] viewarr:",l),!r||!l||null===d)return void console.warn("[FITSViewer] Early return: missing sliceState or viewarr");const h=this._getViewerId(d),{shape:p,sliceIndices:u}=r,w=p.map((e,t)=>{if(t<p.length-2){const e=u[t];return`${e}:${e+1}`}return`0:${e}`}).join(",");this._fetchAbortController=new AbortController;try{const n=this._context.path;console.log("[FITSViewer] Fetching slice:",{path:n,hduIndex:d,slices:w});const{buffer:r,shape:p,arrayType:u}=await async function(e,t,n){const r=s.ServerConnection.makeSettings(),a=o.URLExt.join(r.baseUrl,"fitsview",e),c={};r.token&&(c.Authorization=`token ${r.token}`);const l=await fetch(a,{method:"GET",credentials:"same-origin",headers:c,signal:n});if(!l.ok){const e=await l.text();let t=e;try{const n=JSON.parse(e);t=n.error||n.message||e}catch{}throw new s.ServerConnection.ResponseError(l,t)}const d=l.headers.get("X-FITS-Shape"),h=d?JSON.parse(d):[],p=l.headers.get("X-FITS-Type")||i.FLOAT64,u=l.headers.get("Content-Length"),w=u?parseInt(u,10):0;if(!t||!w||!l.body)return{buffer:await l.arrayBuffer(),shape:h,arrayType:p};const g=l.body.getReader(),I=[];let f=0,S=await g.read();for(;!S.done;)I.push(S.value),f+=S.value.length,t(f,w),S=await g.read();const v=new ArrayBuffer(f),T=new Uint8Array(v);let y=0;for(const e of I)T.set(e,y),y+=e.length;return{buffer:v,shape:h,arrayType:p}}(`slice?path=${encodeURIComponent(n)}&hdu=${d}&slices=${encodeURIComponent(w)}`,(n,i)=>{const r=Math.round(n/i*100);e.style.width=`${r}%`,t.textContent=`${r}% (${c(n)} / ${c(i)})`},this._fetchAbortController.signal);console.log("[FITSViewer] Fetch complete:",{bufferLength:r.byteLength,resultShape:p,arrayType:u}),this._fetchAbortController=null;const g=p[p.length-2]||1,I=p[p.length-1]||1;console.log("[FITSViewer] Image dimensions:",{width:I,height:g}),a?(console.log("[FITSViewer] Clearing container and creating viewer"),a.innerHTML="",await l.createViewer(h),console.log("[FITSViewer] Viewer created, hasViewer:",l.hasViewer(h))):console.warn("[FITSViewer] No viewer container!"),console.log("[FITSViewer] Calling setImageData"),l.setImageData(h,r,I,g,u),console.log("[FITSViewer] setImageData complete")}catch(e){if(this._fetchAbortController=null,"AbortError"===e.name)return void console.log("Fetch cancelled by user");console.error("Failed to load slice:",e),n.innerHTML=`<span class="jp-FITSViewer-error">Error: ${e}</span>`}}_renderSliceControls(){const e=this._getActiveSliceState();if(!this._sliceControlsContainer||!e)return;const{shape:t,sliceIndices:n}=e,i=t.length-2;if(0===i)return void(this._sliceControlsContainer.innerHTML="");let r="";for(let e=0;e<i;e++){const s=t[e],a=n[e];r+=`\n <div class="jp-FITSViewer-sliceControl" data-axis="${e}">\n <button class="jp-FITSViewer-sliceButton jp-FITSViewer-prevButton"\n data-axis="${e}"\n data-direction="prev"\n ${0===a?"disabled":""}>\n ◀\n </button>\n <span class="jp-FITSViewer-sliceLabel">\n ${1===i?"Plane":`Axis ${e}`}: <strong>${a+1}</strong> / ${s}\n </span>\n <button class="jp-FITSViewer-sliceButton jp-FITSViewer-nextButton"\n data-axis="${e}"\n data-direction="next"\n ${a>=s-1?"disabled":""}>\n ▶\n </button>\n </div>\n `}this._sliceControlsContainer.innerHTML=r,this._sliceControlsContainer.querySelectorAll(".jp-FITSViewer-sliceButton").forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget,n=parseInt(t.dataset.axis||"0",10),i=t.dataset.direction;this._navigateSlice(n,"next"===i?1:-1)})})}_navigateSlice(e,t){const n=this._getActiveSliceState();if(!n)return;const{shape:i,sliceIndices:r}=n,s=i[e],a=Math.max(0,Math.min(s-1,r[e]+t));a!==r[e]&&(n.sliceIndices[e]=a,this._renderSliceControls(),this._fetchAndDisplaySlice())}async _fetchAndDisplaySlice(){const e=this._getActiveSliceState(),t=this._activeHduIndex;if(!e||!l||null===t)return;if(!await this._ensureViewer(t))return;const n=this._getViewerId(t),{shape:r,sliceIndices:a}=e,c=r.map((e,t)=>{if(t<r.length-2){const e=a[t];return`${e}:${e+1}`}return`0:${e}`}).join(",");try{const e=this._context.path,{buffer:r,shape:a,arrayType:d}=await async function(e="",t={}){const n=s.ServerConnection.makeSettings(),r=o.URLExt.join(n.baseUrl,"fitsview",e);let a;try{a=await s.ServerConnection.makeRequest(r,t,n)}catch(e){throw new s.ServerConnection.NetworkError(e)}if(!a.ok){const e=await a.text();let t=e;try{const n=JSON.parse(e);t=n.error||n.message||e}catch{}throw new s.ServerConnection.ResponseError(a,t)}const c=await a.arrayBuffer(),l=a.headers.get("X-FITS-Shape");return{buffer:c,shape:l?JSON.parse(l):[],arrayType:a.headers.get("X-FITS-Type")||i.FLOAT64}}(`slice?path=${encodeURIComponent(e)}&hdu=${t}&slices=${encodeURIComponent(c)}`),h=a[a.length-2]||1,p=a[a.length-1]||1;l.setImageData(n,r,p,h,d)}catch(e){console.error("Failed to load slice:",e)}}onCloseRequest(e){l&&this._viewerContainers.forEach((e,t)=>{const n=this._getViewerId(t);l.hasViewer(n)&&l.destroyViewer(n)}),super.onCloseRequest(e),this.dispose()}}h._instanceCounter=0;class p extends r.DocumentWidget{constructor(e){super(e)}}const u="fitsview-provider";class w extends s.RestContentProvider{async get(e,t){return super.get(e,{...t,content:!1})}}class g extends r.ABCWidgetFactory{createNewWidget(e){const t=new h(e);return new p({context:e,content:t})}}class I{constructor(){this._disposed=!1}get name(){return"fits-model"}get contentType(){return"file"}get fileFormat(){return null}get isDisposed(){return this._disposed}dispose(){this._disposed=!0}preferredLanguage(e){return""}createNew(e){return new r.DocumentModel}}const f={id:"fitsview:plugin",description:"View FITS files in JupyterLab without downloading full content",autoStart:!0,requires:[s.IDefaultDrive],activate:(e,t)=>{console.log("JupyterLab extension fitsview is activated!");const n=t.contentProviderRegistry;if(n){const e=t.serverSettings;n.register(u,new w({apiEndpoint:"api/contents",serverSettings:e})),console.log("Registered FITS content provider")}e.docRegistry.addFileType({name:"fits",displayName:"FITS Image",mimeTypes:["image/fits"],extensions:[".fits",".fit",".fts"],fileFormat:"base64",contentType:"file",icon:void 0});const i=new I;e.docRegistry.addModelFactory(i);const r=new g({name:"FITS Viewer",modelName:"fits-model",fileTypes:["fits"],defaultFor:["fits"],contentProviderId:u});e.docRegistry.addWidgetFactory(r),console.log("FITS viewer factory registered")}}}}]);
@@ -0,0 +1 @@
1
+ var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,o,a,i,f,u,s,l,d,c,p,h,v,b,g,m,y,w,j,O,S,E,P,k,_={364(e,r,t){var n={"./index":()=>t.e(777).then(()=>()=>t(777)),"./extension":()=>t.e(777).then(()=>()=>t(777)),"./style":()=>t.e(728).then(()=>()=>t(728))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},T={};function x(e){var r=T[e];if(void 0!==r)return r.exports;var t=T[e]={id:e,exports:{}};return _[e](t,t.exports,x),t.exports}x.m=_,x.c=T,x.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return x.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,x.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);x.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;("object"==typeof i||"function"==typeof i)&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(e=>a[e]=()=>t[e]);return a.default=()=>t,x.d(o,a),o},x.d=(e,r)=>{for(var t in r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce((r,t)=>(x.f[t](e,r),r),[])),x.u=e=>e+"."+{55:"63ee9ee87c7737f48ec6",728:"d181c6f11da84a449851",764:"754d0996bf96c92a233c",777:"7bc4a6d6820f793b0d35"}[e]+".js?v="+{55:"63ee9ee87c7737f48ec6",728:"d181c6f11da84a449851",764:"754d0996bf96c92a233c",777:"7bc4a6d6820f793b0d35"}[e],x.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),x.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="fitsview:",x.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,f;if(void 0!==o)for(var u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var l=u[s];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==n+o){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var d=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(e=>e(n)),r)return r(n)},c=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),f&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var e={},r={};x.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];x.o(x.S,t)||(x.S[t]={});var a=x.S[t],i="fitsview",f=(e,r,t,n)=>{var o=a[e]=a[e]||{},f=o[r];(!f||!f.loaded&&(!n!=!f.eager?n:i>f.from))&&(o[r]={get:t,from:i,eager:!!n})},u=[];return"default"===t&&(f("fitsview","0.1.0",()=>x.e(777).then(()=>()=>x(777))),f("viewarr","0.1.0",()=>x.e(764).then(()=>()=>x(764)))),e[t]=u.length?Promise.all(u).then(()=>e[t]=1):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),o=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],f=(typeof i)[0];if(a!=f)return"o"==a&&"n"==f||"s"==f||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(f=e[o]))[0]?"-":(n>0?".":"")+(n=2,f);return t}var a=[];for(o=1;o<e.length;o++){var f=e[o];a.push(0===f?"not("+u()+")":1===f?"("+u()+" || "+u()+")":2===f?a.pop()+" "+a.pop():i(f))}return u();function u(){return a.pop().replace(/^\((.+)\)$/,"$1")}},f=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,u=!0;;i++,a++){var s,l,d=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(l=(typeof(s=r[a]))[0]))return!u||("u"==d?i>t&&!n:""==d!=n);if("u"==l){if(!u||"u"!=d)return!1}else if(u)if(d==l)if(i<=t){if(s!=e[i])return!1}else{if(n?s>e[i]:s<e[i])return!1;s!=e[i]&&(u=!1)}else if("s"!=d&&"n"!=d){if(n||i<=t)return!1;u=!1,i--}else{if(i<=t||l<d!=n)return!1;u=!1}else"s"!=d&&"n"!=d&&(u=!1,i--)}}var c=[],p=c.pop.bind(c);for(a=1;a<e.length;a++){var h=e[a];c.push(1==h?p()|p():2==h?p()&p():h?f(h,r):!p())}return!!p()},u=(e,r)=>e&&x.o(e,r),s=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),d=(e,r,t)=>{var n=t?l(e[r]):e[r];return(r=Object.keys(n).reduce((e,r)=>!e||a(e,r)?r:e,0))&&n[r]},c=(e,r,t,n)=>{var o=n?l(e[r]):e[r];return(r=Object.keys(o).reduce((e,r)=>!f(t,r)||e&&!a(e,r)?e:r,0))&&o[r]},p=(e,r,t)=>{var n=t?l(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e,0)},h=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",v=(e,r,t,n,o)=>{var a=e[t];return"No satisfying version ("+i(n)+")"+(o?" for eager consumption":"")+" of shared module "+t+" found in shared scope "+r+".\nAvailable versions: "+Object.keys(a).map(e=>e+" from "+a[e].from).join(", ")},b=e=>{throw new Error(e)},g=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},y=(e,r,t)=>t?t():((e,r)=>b("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),w=(m=e=>function(r,t,n,o,a){var i=x.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,x.S[r],t,!1,o,a)):e(r,x.S[r],t,n,o,a)})((e,r,t,n,o)=>u(r,t)?s(d(r,t,n)):y(e,t,o)),j=m((e,r,t,n,o,a)=>{if(!u(r,t))return y(e,t,a);var i=c(r,t,o,n);return i?s(i):(g(v(r,e,t,o,n)),s(d(r,t,n)))}),O=m((e,r,t,n,o,a)=>{if(!u(r,t))return y(e,t,a);var i=p(r,t,n);return f(o,i)||g(h(r,t,i,o)),s(r[t][i])}),S={},E={10:()=>j("default","@jupyterlab/docregistry",!1,[1,4,6,0]),247:()=>O("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),401:()=>O("default","@jupyterlab/services",!1,[1,7,6,0]),514:()=>O("default","@jupyterlab/coreutils",!1,[1,6,6,0]),32:()=>w("default","viewarr",!1,()=>x.e(764).then(()=>()=>x(764)))},P={32:[32],777:[10,247,401,514]},k={},x.f.consumes=(e,r)=>{x.o(P,e)&&P[e].forEach(e=>{if(x.o(S,e))return r.push(S[e]);if(!k[e]){var t=r=>{S[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()}};k[e]=!0;var n=r=>{delete S[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var o=E[e]();o.then?r.push(S[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}})},(()=>{x.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={712:0};x.f.j=(r,t)=>{var n=x.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(32!=r){var o=new Promise((t,o)=>n=e[r]=[t,o]);t.push(n[2]=o);var a=x.p+x.u(r),i=new Error;x.l(a,t=>{if(x.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}},"chunk-"+r,r)}else e[r]=0};var r=(r,t)=>{var n,o,[a,i,f]=t,u=0;if(a.some(r=>0!==e[r])){for(n in i)x.o(i,n)&&(x.m[n]=i[n]);f&&f(x)}for(r&&r(t);u<a.length;u++)o=a[u],x.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunkfitsview=self.webpackChunkfitsview||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x.nc=void 0;var A=x(364);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).fitsview=A})();
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version>=0.3.2"]
2
+ requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version>=0.3.2", "hatch-vcs"]
3
3
  build-backend = "hatchling.build"
4
4
 
5
5
  [project]
@@ -29,8 +29,7 @@ dependencies = [
29
29
  "astropy>=5.0",
30
30
  "numpy",
31
31
  ]
32
- version = "0.3.3"
33
- dynamic = ["description", "urls", "authors", "keywords"]
32
+ dynamic = ["version", "description", "urls", "authors", "keywords"]
34
33
 
35
34
  [project.optional-dependencies]
36
35
  test = [
@@ -42,9 +41,14 @@ test = [
42
41
  "pygments",
43
42
  ]
44
43
 
44
+ # Single source of truth for the version: the monorepo git tag (e.g. v0.3.4),
45
+ # shared with pyviewarr so both packages always release the same version.
46
+ # root = ".." points setuptools_scm at the monorepo root where .git lives.
45
47
  [tool.hatch.version]
46
- source = "nodejs"
48
+ source = "vcs"
49
+ raw-options = { root = "..", local_scheme = "no-local-version" }
47
50
 
51
+ # Project metadata (description/authors/urls/keywords) still comes from package.json.
48
52
  [tool.hatch.metadata.hooks.nodejs]
49
53
  fields = ["description", "authors", "urls", "keywords"]
50
54
 
@@ -8,5 +8,9 @@ from jupyterlab.galata import configure_jupyter_server
8
8
 
9
9
  configure_jupyter_server(c)
10
10
 
11
+ # CI runs these tests inside the official Playwright container, which runs as
12
+ # root; Jupyter refuses to start as root without this.
13
+ c.ServerApp.allow_root = True
14
+
11
15
  # Uncomment to set server log level to debug level
12
16
  # c.ServerApp.log_level = "DEBUG"
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "fitsview-ui-tests",
3
+ "version": "1.0.0",
4
+ "description": "JupyterLab fitsview Integration Tests",
5
+ "private": true,
6
+ "scripts": {
7
+ "start": "jupyter lab --config jupyter_server_test_config.py",
8
+ "test": "jlpm playwright test",
9
+ "test:update": "jlpm playwright test --update-snapshots"
10
+ },
11
+ "devDependencies": {
12
+ "@jupyterlab/galata": "^5.6.0",
13
+ "@playwright/test": "1.61.0"
14
+ },
15
+ "comment:playwright": "Pinned exactly to the Playwright Docker image tag in ../../.github/workflows/ci.yml (mcr.microsoft.com/playwright:v1.61.0-noble). Bump BOTH together; CI fails if they drift.",
16
+ "resolutions": {
17
+ "@playwright/test": "1.61.0",
18
+ "playwright": "1.61.0",
19
+ "playwright-core": "1.61.0"
20
+ }
21
+ }