Commit 643b4956 authored by Nikola's avatar Nikola

Added perspective gadget.

The gadget starts a given child gadget, which needs to be implemented for each use case, which has to implement the getData method.
Additionally, child gadgets may optionally include a postprocessing method to modify the perspective table according to specific requirements.
The perspective gadget will use both methods to display a perspective table.
parent 3f79e30e
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_perspective</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<title>Perspective for Manufacturing Orders</title>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="PerspectiveTest.js" type="text/javascript"></script>
</head>
<body>
<perspective-viewer editable></perspective-viewer>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTest.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*global window, document, rJS, worker, console, RSVP, fetch */
/*jslint indent: 2*/
(function (window, rJS, RSVP) {
"use strict";
function getStockTimelineData() {
return new RSVP.Queue()
.push(function () {
return fetch("test.csv");
})
.push(function (resp) {
return resp.text();
});
}
rJS(window)
.declareMethod("getData", function () {
return getStockTimelineData();
});
}(window, rJS, RSVP));
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTest.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<title>Perspective for Manufacturing Orders</title>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="PerspectiveTestNoData.js" type="text/javascript"></script>
</head>
<body>
<perspective-viewer editable></perspective-viewer>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTestNoData.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*global window, document, rJS, worker, console, RSVP, fetch */
/*jslint indent: 2*/
(function (window, rJS, RSVP) {
"use strict";
function getStockTimelineData() {
return new RSVP.Queue()
.push(function () {
return fetch("test.csv");
})
.push(function (resp) {
return "";
});
}
rJS(window)
.declareMethod("getData", function () {
return getStockTimelineData();
});
}(window, rJS, RSVP));
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTestNoData.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
All files besides perspective_base_gadget.* have been created by using webpack with this configuration:
const PerspectivePlugin = require("@finos/perspective-webpack-plugin");
module.exports = {
entry: "input.js",
output: {
filename: "out.js",
path: "PATH",
},
plugins: [new PerspectivePlugin()],
module: {
rules: [
{
test: require.resolve("@finos/perspective"),
loader: "expose-loader",
options: {
exposes: ["worker","perspective"],
},
},
],
},
};
where input.js:
const perspective = require("@finos/perspective");
-----for perspective_with_viewer-------
const perspective_viewer = require("@finos/perspective-viewer");
const perspective_viewer_datagrid = require("@finos/perspective-viewer-datagrid");
const perspective_viewer_d3fc = require("@finos/perspective-viewer-d3fc");
---------------------------------------
window.Worker = perspective.worker();
To update this, please use a bundler to expose the worker object with window.Worker = worker().
perspective.js only includes the perspective.worker() object, perspective_with_viewer also includes the viewer.
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>README.md</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/plain</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
regular-table {
scrollbar-color: #000000f7 transparent;
scrollbar-width: auto;
outline: none;
}
perspective-viewer {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
td.psp-align-left {
text-align: right;
}
perspective-viewer regular-table tbody td:hover {
text-decoration: underline;
cursor: pointer;
overflow-x: visible; /* Optional, changes the cursor to a pointer to indicate interactivity */
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>custom_perspective_style.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>perspective@2.3.0</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>2fa644521b73c4857f3d.wasm</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/wasm</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>3ad444d7560308669cb9.wasm</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/wasm</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/**
ColorBrewer colors for chroma.js
Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The
Pennsylvania State University.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
@preserve
*/
/**
* @license
*
* chroma.js - JavaScript library for color conversions
*
* Copyright (c) 2011-2017, Gregor Aisch
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name Gregor Aisch may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>LICENSE.txt</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/plain</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
(()=>{"use strict";var t={508:(t,e,n)=>{t.exports=n.p+"2fa644521b73c4857f3d.wasm"}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.m=t,n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;n.g.importScripts&&(t=n.g.location+"");var e=n.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var i=r.length-1;i>-1&&!t;)t=r[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=t})(),n.b=self.location+"",(()=>{var t,e={};n.r(e),n.d(e,{COLUMN_SEPARATOR_STRING:()=>g,CONFIG_ALIASES:()=>o,CONFIG_VALID_KEYS:()=>a,DATA_TYPES:()=>i,FILTER_OPERATORS:()=>d,SORT_ORDERS:()=>u,SORT_ORDER_IDS:()=>c,TYPE_AGGREGATES:()=>f,TYPE_FILTERS:()=>y});const r=(t="file:///home/benutzer/perspective/node_modules/@finos/perspective/dist/pkg/web/perspective.cpp.js",function(e={}){var r,i,o=void 0!==e?e:{};o.ready=new Promise((function(t,e){r=t,i=e}));var a,s=Object.assign({},o),l="./this.program",u="";"undefined"!=typeof document&&document.currentScript&&(u=document.currentScript.src),t&&(u=t),u=0!==u.indexOf("blob:")?u.substr(0,u.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var c,f,d=o.print||console.log.bind(console),h=o.printErr||console.warn.bind(console);Object.assign(o,s),s=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(c=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&R("no native wasm support detected");var p,_,m,g,y,v,w,b,T,C=!1,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(t,e,n){for(var r=(e>>>=0)+n,i=e;t[i]&&!(i>=r);)++i;if(i-e>16&&t.buffer&&P)return P.decode(t.subarray(e,i));for(var o="";e<i;){var a=t[e++];if(128&a){var s=63&t[e++];if(192!=(224&a)){var l=63&t[e++];if((a=224==(240&a)?(15&a)<<12|s<<6|l:(7&a)<<18|s<<12|l<<6|63&t[e++])<65536)o+=String.fromCharCode(a);else{var u=a-65536;o+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else o+=String.fromCharCode((31&a)<<6|s)}else o+=String.fromCharCode(a)}return o}function $(t,e){return(t>>>=0)?O(_,t,e):""}function k(t,e,n,r){if(!(r>0))return 0;for(var i=n>>>=0,o=n+r-1,a=0;a<t.length;++a){var s=t.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++a)),s<=127){if(n>=o)break;e[n++>>>0]=s}else if(s<=2047){if(n+1>=o)break;e[n++>>>0]=192|s>>6,e[n++>>>0]=128|63&s}else if(s<=65535){if(n+2>=o)break;e[n++>>>0]=224|s>>12,e[n++>>>0]=128|s>>6&63,e[n++>>>0]=128|63&s}else{if(n+3>=o)break;e[n++>>>0]=240|s>>18,e[n++>>>0]=128|s>>12&63,e[n++>>>0]=128|s>>6&63,e[n++>>>0]=128|63&s}}return e[n>>>0]=0,n-i}function A(t){for(var e=0,n=0;n<t.length;++n){var r=t.charCodeAt(n);r<=127?e++:r<=2047?e+=2:r>=55296&&r<=57343?(e+=4,++n):e+=3}return e}function E(){var t=f.buffer;o.HEAP8=p=new Int8Array(t),o.HEAP16=m=new Int16Array(t),o.HEAP32=y=new Int32Array(t),o.HEAPU8=_=new Uint8Array(t),o.HEAPU16=g=new Uint16Array(t),o.HEAPU32=v=new Uint32Array(t),o.HEAPF32=w=new Float32Array(t),o.HEAPF64=b=new Float64Array(t)}var j=[],S=[],x=[],D=0,F=null,V=null;function R(t){o.onAbort&&o.onAbort(t),h(t="Aborted("+t+")"),C=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw i(e),e}var N,M;function I(t){return t.startsWith("data:application/octet-stream;base64,")}function W(t){try{if(t==N&&c)return new Uint8Array(c);if(a)return a(t);throw"both async and sync fetching of the wasm failed"}catch(t){R(t)}}function z(t,e,n){return function(t){return c||"function"!=typeof fetch?Promise.resolve().then((function(){return W(t)})):fetch(t,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()})).catch((function(){return W(t)}))}(t).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(t){return t})).then(n,(function(t){h("failed to asynchronously prepare wasm: "+t),R(t)}))}o.locateFile?I(N="perspective.cpp.wasm")||(M=N,N=o.locateFile?o.locateFile(M,u):u+M):N=new URL(n(508),n.b).href;var H={833172:t=>{throw new Error($(t))}};function U(t){for(;t.length>0;)t.shift()(o)}function Y(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){v[this.ptr+4>>>2]=t},this.get_type=function(){return v[this.ptr+4>>>2]},this.set_destructor=function(t){v[this.ptr+8>>>2]=t},this.get_destructor=function(){return v[this.ptr+8>>>2]},this.set_refcount=function(t){y[this.ptr>>>2]=t},this.set_caught=function(t){t=t?1:0,p[this.ptr+12>>>0]=t},this.get_caught=function(){return 0!=p[this.ptr+12>>>0]},this.set_rethrown=function(t){t=t?1:0,p[this.ptr+13>>>0]=t},this.get_rethrown=function(){return 0!=p[this.ptr+13>>>0]},this.init=function(t,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=y[this.ptr>>>2];y[this.ptr>>>2]=t+1},this.release_ref=function(){var t=y[this.ptr>>>2];return y[this.ptr>>>2]=t-1,1===t},this.set_adjusted_ptr=function(t){v[this.ptr+16>>>2]=t},this.get_adjusted_ptr=function(){return v[this.ptr+16>>>2]},this.get_exception_ptr=function(){if(Fe(this.get_type()))return v[this.excPtr>>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}var q={varargs:void 0,get:function(){return q.varargs+=4,y[q.varargs-4>>>2]},getStr:function(t){return $(t)}},L={};function B(t){for(;t.length;){var e=t.pop();t.pop()(e)}}function G(t){return this.fromWireType(y[t>>>2])}var J={},X={},Z={},K=48,Q=57;function tt(t){if(void 0===t)return"_unknown";var e=(t=t.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return e>=K&&e<=Q?"_"+t:t}function et(t,e){return{[t=tt(t)]:function(){return e.apply(this,arguments)}}[t]}function nt(t,e){var n=et(e,(function(t){this.name=e,this.message=t;var n=new Error(t).stack;void 0!==n&&(this.stack=this.toString()+"\n"+n.replace(/^Error(:[^\n]*)?\n/,""))}));return n.prototype=Object.create(t.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},n}var rt=void 0;function it(t){throw new rt(t)}function ot(t,e,n){function r(e){var r=n(e);r.length!==t.length&&it("Mismatched type converter count");for(var i=0;i<t.length;++i)ft(t[i],r[i])}t.forEach((function(t){Z[t]=e}));var i=new Array(e.length),o=[],a=0;e.forEach(((t,e)=>{X.hasOwnProperty(t)?i[e]=X[t]:(o.push(t),J.hasOwnProperty(t)||(J[t]=[]),J[t].push((()=>{i[e]=X[t],++a===o.length&&r(i)})))})),0===o.length&&r(i)}function at(t){switch(t){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+t)}}var st=void 0;function lt(t){for(var e="",n=t;_[n>>>0];)e+=st[_[n++>>>0]];return e}var ut=void 0;function ct(t){throw new ut(t)}function ft(t,e,n={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");var r=e.name;if(t||ct('type "'+r+'" must have a positive integer typeid pointer'),X.hasOwnProperty(t)){if(n.ignoreDuplicateRegistrations)return;ct("Cannot register type '"+r+"' twice")}if(X[t]=e,delete Z[t],J.hasOwnProperty(t)){var i=J[t];delete J[t],i.forEach((t=>t()))}}function dt(t){ct(t.$$.ptrType.registeredClass.name+" instance already deleted")}var ht=!1;function pt(t){}function _t(t){t.count.value-=1,0===t.count.value&&function(t){t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)}(t)}function mt(t,e,n){if(e===n)return t;if(void 0===n.baseClass)return null;var r=mt(t,e,n.baseClass);return null===r?null:n.downcast(r)}var gt={};var yt=[];function vt(){for(;yt.length;){var t=yt.pop();t.$$.deleteScheduled=!1,t.delete()}}var wt=void 0;var bt={};function Tt(t,e){return e.ptrType&&e.ptr||it("makeClassHandle requires ptr and ptrType"),!!e.smartPtrType!=!!e.smartPtr&&it("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ct(Object.create(t,{$$:{value:e}}))}function Ct(t){return"undefined"==typeof FinalizationRegistry?(Ct=t=>t,t):(ht=new FinalizationRegistry((t=>{_t(t.$$)})),Ct=t=>{var e=t.$$;if(e.smartPtr){var n={$$:e};ht.register(t,n,t)}return t},pt=t=>ht.unregister(t),Ct(t))}function Pt(){}function Ot(t,e,n){if(void 0===t[e].overloadTable){var r=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||ct("Function '"+n+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+t[e].overloadTable+")!"),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[r.argCount]=r}}function $t(t,e,n){o.hasOwnProperty(t)?((void 0===n||void 0!==o[t].overloadTable&&void 0!==o[t].overloadTable[n])&&ct("Cannot register public name '"+t+"' twice"),Ot(o,t,t),o.hasOwnProperty(n)&&ct("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),o[t].overloadTable[n]=e):(o[t]=e,void 0!==n&&(o[t].numArguments=n))}function kt(t,e,n,r,i,o,a,s){this.name=t,this.constructor=e,this.instancePrototype=n,this.rawDestructor=r,this.baseClass=i,this.getActualType=o,this.upcast=a,this.downcast=s,this.pureVirtualFunctions=[]}function At(t,e,n){for(;e!==n;)e.upcast||ct("Expected null or instance of "+n.name+", got an instance of "+e.name),t=e.upcast(t),e=e.baseClass;return t}function Et(t,e){if(null===e)return this.isReference&&ct("null is not a valid "+this.name),0;e.$$||ct('Cannot pass "'+Jt(e)+'" as a '+this.name),e.$$.ptr||ct("Cannot pass deleted object as a pointer of type "+this.name);var n=e.$$.ptrType.registeredClass;return At(e.$$.ptr,n,this.registeredClass)}function jt(t,e){var n;if(null===e)return this.isReference&&ct("null is not a valid "+this.name),this.isSmartPointer?(n=this.rawConstructor(),null!==t&&t.push(this.rawDestructor,n),n):0;e.$$||ct('Cannot pass "'+Jt(e)+'" as a '+this.name),e.$$.ptr||ct("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&e.$$.ptrType.isConst&&ct("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);var r=e.$$.ptrType.registeredClass;if(n=At(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(void 0===e.$$.smartPtr&&ct("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?n=e.$$.smartPtr:ct("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:n=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)n=e.$$.smartPtr;else{var i=e.clone();n=this.rawShare(n,Lt.toHandle((function(){i.delete()}))),null!==t&&t.push(this.rawDestructor,n)}break;default:ct("Unsupporting sharing policy")}return n}function St(t,e){if(null===e)return this.isReference&&ct("null is not a valid "+this.name),0;e.$$||ct('Cannot pass "'+Jt(e)+'" as a '+this.name),e.$$.ptr||ct("Cannot pass deleted object as a pointer of type "+this.name),e.$$.ptrType.isConst&&ct("Cannot convert argument of type "+e.$$.ptrType.name+" to parameter type "+this.name);var n=e.$$.ptrType.registeredClass;return At(e.$$.ptr,n,this.registeredClass)}function xt(t,e,n,r,i,o,a,s,l,u,c){this.name=t,this.registeredClass=e,this.isReference=n,this.isConst=r,this.isSmartPointer=i,this.pointeeType=o,this.sharingPolicy=a,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=u,this.rawDestructor=c,i||void 0!==e.baseClass?this.toWireType=jt:r?(this.toWireType=Et,this.destructorFunction=null):(this.toWireType=St,this.destructorFunction=null)}function Dt(t,e,n){o.hasOwnProperty(t)||it("Replacing nonexistant public symbol"),void 0!==o[t].overloadTable&&void 0!==n?o[t].overloadTable[n]=e:(o[t]=e,o[t].argCount=n)}var Ft=[];function Vt(t){var e=Ft[t];return e||(t>=Ft.length&&(Ft.length=t+1),Ft[t]=e=T.get(t)),e}function Rt(t,e){var n,r,i,a=(t=lt(t)).includes("j")?(n=t,r=e,i=[],function(){return i.length=0,Object.assign(i,arguments),function(t,e,n){return t.includes("j")?function(t,e,n){var r=o["dynCall_"+t];return n&&n.length?r.apply(null,[e].concat(n)):r.call(null,e)}(t,e,n):Vt(e).apply(null,n)}(n,r,i)}):Vt(e);return"function"!=typeof a&&ct("unknown function pointer with signature "+t+": "+e),a}var Nt=void 0;function Mt(t){var e=De(t),n=lt(e);return xe(e),n}function It(t,e){var n=[],r={};throw e.forEach((function t(e){r[e]||X[e]||(Z[e]?Z[e].forEach(t):(n.push(e),r[e]=!0))})),new Nt(t+": "+n.map(Mt).join([", "]))}function Wt(t,e){for(var n=[],r=0;r<t;r++)n.push(v[e+4*r>>>2]);return n}function zt(t,e){if(!(t instanceof Function))throw new TypeError("new_ called with constructor type "+typeof t+" which is not a function");var n=et(t.name||"unknownFunctionName",(function(){}));n.prototype=t.prototype;var r=new n,i=t.apply(r,e);return i instanceof Object?i:r}function Ht(t,e,n,r,i){var o=e.length;o<2&&ct("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==e[1]&&null!==n,s=!1,l=1;l<e.length;++l)if(null!==e[l]&&void 0===e[l].destructorFunction){s=!0;break}var u="void"!==e[0].name,c="",f="";for(l=0;l<o-2;++l)c+=(0!==l?", ":"")+"arg"+l,f+=(0!==l?", ":"")+"arg"+l+"Wired";var d="return function "+tt(t)+"("+c+") {\nif (arguments.length !== "+(o-2)+") {\nthrowBindingError('function "+t+" called with ' + arguments.length + ' arguments, expected "+(o-2)+" args!');\n}\n";s&&(d+="var destructors = [];\n");var h=s?"destructors":"null",p=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],_=[ct,r,i,B,e[0],e[1]];for(a&&(d+="var thisWired = classParam.toWireType("+h+", this);\n"),l=0;l<o-2;++l)d+="var arg"+l+"Wired = argType"+l+".toWireType("+h+", arg"+l+"); // "+e[l+2].name+"\n",p.push("argType"+l),_.push(e[l+2]);if(a&&(f="thisWired"+(f.length>0?", ":"")+f),d+=(u?"var rv = ":"")+"invoker(fn"+(f.length>0?", ":"")+f+");\n",s)d+="runDestructors(destructors);\n";else for(l=a?1:2;l<e.length;++l){var m=1===l?"thisWired":"arg"+(l-2)+"Wired";null!==e[l].destructorFunction&&(d+=m+"_dtor("+m+"); // "+e[l].name+"\n",p.push(m+"_dtor"),_.push(e[l].destructorFunction))}return u&&(d+="var ret = retType.fromWireType(rv);\nreturn ret;\n"),d+="}\n",p.push(d),zt(Function,p).apply(null,_)}var Ut=[],Yt=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function qt(t){t>4&&0==--Yt[t].refcount&&(Yt[t]=void 0,Ut.push(t))}var Lt={toValue:t=>(t||ct("Cannot use deleted val. handle = "+t),Yt[t].value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var e=Ut.length?Ut.pop():Yt.length;return Yt[e]={refcount:1,value:t},e}}};function Bt(t,e,n){switch(e){case 0:return function(t){var e=n?p:_;return this.fromWireType(e[t>>>0])};case 1:return function(t){var e=n?m:g;return this.fromWireType(e[t>>>1])};case 2:return function(t){var e=n?y:v;return this.fromWireType(e[t>>>2])};default:throw new TypeError("Unknown integer type: "+t)}}function Gt(t,e){var n=X[t];return void 0===n&&ct(e+" has unknown type "+Mt(t)),n}function Jt(t){if(null===t)return"null";var e=typeof t;return"object"===e||"array"===e||"function"===e?t.toString():""+t}function Xt(t,e){switch(e){case 2:return function(t){return this.fromWireType(w[t>>>2])};case 3:return function(t){return this.fromWireType(b[t>>>3])};default:throw new TypeError("Unknown float type: "+t)}}function Zt(t,e,n){switch(e){case 0:return n?function(t){return p[t>>>0]}:function(t){return _[t>>>0]};case 1:return n?function(t){return m[t>>>1]}:function(t){return g[t>>>1]};case 2:return n?function(t){return y[t>>>2]}:function(t){return v[t>>>2]};default:throw new TypeError("Unknown integer type: "+t)}}var Kt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Qt(t,e){for(var n=t,r=n>>1,i=r+e/2;!(r>=i)&&g[r>>>0];)++r;if((n=r<<1)-t>32&&Kt)return Kt.decode(_.subarray(t>>>0,n>>>0));for(var o="",a=0;!(a>=e/2);++a){var s=m[t+2*a>>>1];if(0==s)break;o+=String.fromCharCode(s)}return o}function te(t,e,n){if(void 0===n&&(n=2147483647),n<2)return 0;for(var r=e,i=(n-=2)<2*t.length?n/2:t.length,o=0;o<i;++o){var a=t.charCodeAt(o);m[e>>>1]=a,e+=2}return m[e>>>1]=0,e-r}function ee(t){return 2*t.length}function ne(t,e){for(var n=0,r="";!(n>=e/4);){var i=y[t+4*n>>>2];if(0==i)break;if(++n,i>=65536){var o=i-65536;r+=String.fromCharCode(55296|o>>10,56320|1023&o)}else r+=String.fromCharCode(i)}return r}function re(t,e,n){if(void 0===n&&(n=2147483647),n<4)return 0;for(var r=e>>>=0,i=r+n-4,o=0;o<t.length;++o){var a=t.charCodeAt(o);if(a>=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&t.charCodeAt(++o)),y[e>>>2]=a,(e+=4)+4>i)break}return y[e>>>2]=0,e-r}function ie(t){for(var e=0,n=0;n<t.length;++n){var r=t.charCodeAt(n);r>=55296&&r<=57343&&++n,e+=4}return e}function oe(t,e){for(var n=new Array(t),r=0;r<t;++r)n[r]=Gt(v[e+4*r>>>2],"parameter "+r);return n}var ae={};function se(t){var e=ae[t];return void 0===e?lt(t):e}var le=[];function ue(){return"object"==typeof globalThis?globalThis:Function("return this")()}var ce=[],fe={};function de(t){return t%4==0&&(t%100!=0||t%400==0)}var he=[0,31,60,91,121,152,182,213,244,274,305,335],pe=[0,31,59,90,120,151,181,212,243,273,304,334];function _e(t){var e=A(t)+1,n=Se(e);return n&&k(t,p,n,e),n}var me,ge=[];function ye(t){var e=f.buffer;try{return f.grow(t-e.byteLength+65535>>>16),E(),1}catch(t){}}me=()=>performance.now();var ve={};function we(){if(!we.strings){var t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:l||"./this.program"};for(var e in ve)void 0===ve[e]?delete t[e]:t[e]=ve[e];var n=[];for(var e in t)n.push(e+"="+t[e]);we.strings=n}return we.strings}var be=[null,[],[]];function Te(t,e){for(var n=0,r=0;r<=e;n+=t[r++]);return n}var Ce=[31,29,31,30,31,30,31,31,30,31,30,31],Pe=[31,28,31,30,31,30,31,31,30,31,30,31];function Oe(t,e){for(var n=new Date(t.getTime());e>0;){var r=de(n.getFullYear()),i=n.getMonth(),o=(r?Ce:Pe)[i];if(!(e>o-n.getDate()))return n.setDate(n.getDate()+e),n;e-=o-n.getDate()+1,n.setDate(1),i<11?n.setMonth(i+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1))}return n}function $e(t,e,n){var r=n>0?n:A(t)+1,i=new Array(r),o=k(t,i,0,i.length);return e&&(i.length=o),i}function ke(t,e,n,r){var i=y[r+40>>>2],o={tm_sec:y[r>>>2],tm_min:y[r+4>>>2],tm_hour:y[r+8>>>2],tm_mday:y[r+12>>>2],tm_mon:y[r+16>>>2],tm_year:y[r+20>>>2],tm_wday:y[r+24>>>2],tm_yday:y[r+28>>>2],tm_isdst:y[r+32>>>2],tm_gmtoff:y[r+36>>>2],tm_zone:i?$(i):""},a=$(n),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in s)a=a.replace(new RegExp(l,"g"),s[l]);var u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(t,e,n){for(var r="number"==typeof t?t.toString():t||"";r.length<e;)r=n[0]+r;return r}function d(t,e){return f(t,e,"0")}function h(t,e){function n(t){return t<0?-1:t>0?1:0}var r;return 0===(r=n(t.getFullYear()-e.getFullYear()))&&0===(r=n(t.getMonth()-e.getMonth()))&&(r=n(t.getDate()-e.getDate())),r}function _(t){switch(t.getDay()){case 0:return new Date(t.getFullYear()-1,11,29);case 1:return t;case 2:return new Date(t.getFullYear(),0,3);case 3:return new Date(t.getFullYear(),0,2);case 4:return new Date(t.getFullYear(),0,1);case 5:return new Date(t.getFullYear()-1,11,31);case 6:return new Date(t.getFullYear()-1,11,30)}}function m(t){var e=Oe(new Date(t.tm_year+1900,0,1),t.tm_yday),n=new Date(e.getFullYear(),0,4),r=new Date(e.getFullYear()+1,0,4),i=_(n),o=_(r);return h(i,e)<=0?h(o,e)<=0?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var g={"%a":function(t){return u[t.tm_wday].substring(0,3)},"%A":function(t){return u[t.tm_wday]},"%b":function(t){return c[t.tm_mon].substring(0,3)},"%B":function(t){return c[t.tm_mon]},"%C":function(t){return d((t.tm_year+1900)/100|0,2)},"%d":function(t){return d(t.tm_mday,2)},"%e":function(t){return f(t.tm_mday,2," ")},"%g":function(t){return m(t).toString().substring(2)},"%G":function(t){return m(t)},"%H":function(t){return d(t.tm_hour,2)},"%I":function(t){var e=t.tm_hour;return 0==e?e=12:e>12&&(e-=12),d(e,2)},"%j":function(t){return d(t.tm_mday+Te(de(t.tm_year+1900)?Ce:Pe,t.tm_mon-1),3)},"%m":function(t){return d(t.tm_mon+1,2)},"%M":function(t){return d(t.tm_min,2)},"%n":function(){return"\n"},"%p":function(t){return t.tm_hour>=0&&t.tm_hour<12?"AM":"PM"},"%S":function(t){return d(t.tm_sec,2)},"%t":function(){return"\t"},"%u":function(t){return t.tm_wday||7},"%U":function(t){var e=t.tm_yday+7-t.tm_wday;return d(Math.floor(e/7),2)},"%V":function(t){var e=Math.floor((t.tm_yday+7-(t.tm_wday+6)%7)/7);if((t.tm_wday+371-t.tm_yday-2)%7<=2&&e++,e){if(53==e){var n=(t.tm_wday+371-t.tm_yday)%7;4==n||3==n&&de(t.tm_year)||(e=1)}}else{e=52;var r=(t.tm_wday+7-t.tm_yday-1)%7;(4==r||5==r&&de(t.tm_year%400-1))&&e++}return d(e,2)},"%w":function(t){return t.tm_wday},"%W":function(t){var e=t.tm_yday+7-(t.tm_wday+6)%7;return d(Math.floor(e/7),2)},"%y":function(t){return(t.tm_year+1900).toString().substring(2)},"%Y":function(t){return t.tm_year+1900},"%z":function(t){var e=t.tm_gmtoff,n=e>=0;return e=(e=Math.abs(e)/60)/60*100+e%60,(n?"+":"-")+String("0000"+e).slice(-4)},"%Z":function(t){return t.tm_zone},"%%":function(){return"%"}};for(var l in a=a.replace(/%%/g,"\0\0"),g)a.includes(l)&&(a=a.replace(new RegExp(l,"g"),g[l](o)));var v,w,b=$e(a=a.replace(/\0\0/g,"%"),!1);return b.length>e?0:(v=b,w=t,p.set(v,w>>>0),b.length-1)}function Ae(t){return parseInt(t)}rt=o.InternalError=nt(Error,"InternalError"),function(){for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);st=t}(),ut=o.BindingError=nt(Error,"BindingError"),Pt.prototype.isAliasOf=function(t){if(!(this instanceof Pt))return!1;if(!(t instanceof Pt))return!1;for(var e=this.$$.ptrType.registeredClass,n=this.$$.ptr,r=t.$$.ptrType.registeredClass,i=t.$$.ptr;e.baseClass;)n=e.upcast(n),e=e.baseClass;for(;r.baseClass;)i=r.upcast(i),r=r.baseClass;return e===r&&n===i},Pt.prototype.clone=function(){if(this.$$.ptr||dt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t,e=Ct(Object.create(Object.getPrototypeOf(this),{$$:{value:(t=this.$$,{count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType})}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},Pt.prototype.delete=function(){this.$$.ptr||dt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ct("Object already scheduled for deletion"),pt(this),_t(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},Pt.prototype.isDeleted=function(){return!this.$$.ptr},Pt.prototype.deleteLater=function(){return this.$$.ptr||dt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ct("Object already scheduled for deletion"),yt.push(this),1===yt.length&&wt&&wt(vt),this.$$.deleteScheduled=!0,this},o.getInheritedInstanceCount=function(){return Object.keys(bt).length},o.getLiveInheritedInstances=function(){var t=[];for(var e in bt)bt.hasOwnProperty(e)&&t.push(bt[e]);return t},o.flushPendingDeletes=vt,o.setDelayFunction=function(t){wt=t,yt.length&&wt&&wt(vt)},xt.prototype.getPointee=function(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},xt.prototype.destructor=function(t){this.rawDestructor&&this.rawDestructor(t)},xt.prototype.argPackAdvance=8,xt.prototype.readValueFromPointer=G,xt.prototype.deleteObject=function(t){null!==t&&t.delete()},xt.prototype.fromWireType=function(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var n=function(t,e){return e=function(t,e){for(void 0===e&&ct("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e}(t,e),bt[e]}(this.registeredClass,e);if(void 0!==n){if(0===n.$$.count.value)return n.$$.ptr=e,n.$$.smartPtr=t,n.clone();var r=n.clone();return this.destructor(t),r}function i(){return this.isSmartPointer?Tt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):Tt(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o,a=this.registeredClass.getActualType(e),s=gt[a];if(!s)return i.call(this);o=this.isConst?s.constPointerType:s.pointerType;var l=mt(e,this.registeredClass,o.registeredClass);return null===l?i.call(this):this.isSmartPointer?Tt(o.registeredClass.instancePrototype,{ptrType:o,ptr:l,smartPtrType:this,smartPtr:t}):Tt(o.registeredClass.instancePrototype,{ptrType:o,ptr:l})},Nt=o.UnboundTypeError=nt(Error,"UnboundTypeError"),o.count_emval_handles=function(){for(var t=0,e=5;e<Yt.length;++e)void 0!==Yt[e]&&++t;return t},o.get_first_emval=function(){for(var t=5;t<Yt.length;++t)if(void 0!==Yt[t])return Yt[t];return null};var Ee,je={g:function(t,e,n){throw new Y(t).init(e,n),t},H:function(t,e,n){return q.varargs=n,0},Q:function(t,e,n){},W:function(t,e,n){},S:function(t,e,n){return q.varargs=n,0},K:function(t,e,n,r){q.varargs=r},ea:function(t,e){},E:function(t){var e=L[t];delete L[t];var n=e.rawConstructor,r=e.rawDestructor,i=e.fields;ot([t],i.map((t=>t.getterReturnType)).concat(i.map((t=>t.setterArgumentType))),(t=>{var o={};return i.forEach(((e,n)=>{var r=e.fieldName,a=t[n],s=e.getter,l=e.getterContext,u=t[n+i.length],c=e.setter,f=e.setterContext;o[r]={read:t=>a.fromWireType(s(l,t)),write:(t,e)=>{var n=[];c(f,t,u.toWireType(n,e)),B(n)}}})),[{name:e.name,fromWireType:function(t){var e={};for(var n in o)e[n]=o[n].read(t);return r(t),e},toWireType:function(t,e){for(var i in o)if(!(i in e))throw new TypeError('Missing field: "'+i+'"');var a=n();for(i in o)o[i].write(a,e[i]);return null!==t&&t.push(r,a),a},argPackAdvance:8,readValueFromPointer:G,destructorFunction:r}]}))},R:function(t,e,n,r,i){},ha:function(t,e,n,r,i){var o=at(n);ft(t,{name:e=lt(e),fromWireType:function(t){return!!t},toWireType:function(t,e){return e?r:i},argPackAdvance:8,readValueFromPointer:function(t){var r;if(1===n)r=p;else if(2===n)r=m;else{if(4!==n)throw new TypeError("Unknown boolean type size: "+e);r=y}return this.fromWireType(r[t>>>o])},destructorFunction:null})},o:function(t,e,n,r,i,o,a,s,l,u,c,f,d){c=lt(c),o=Rt(i,o),s&&(s=Rt(a,s)),u&&(u=Rt(l,u)),d=Rt(f,d);var h=tt(c);$t(h,(function(){It("Cannot construct "+c+" due to unbound types",[r])})),ot([t,e,n],r?[r]:[],(function(e){var n,i;e=e[0],i=r?(n=e.registeredClass).instancePrototype:Pt.prototype;var a=et(h,(function(){if(Object.getPrototypeOf(this)!==l)throw new ut("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new ut(c+" has no accessible constructor");var t=f.constructor_body[arguments.length];if(void 0===t)throw new ut("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return t.apply(this,arguments)})),l=Object.create(i,{constructor:{value:a}});a.prototype=l;var f=new kt(c,a,l,d,n,o,s,u),p=new xt(c,f,!0,!1,!1),_=new xt(c+"*",f,!1,!1,!1),m=new xt(c+" const*",f,!1,!0,!1);return gt[t]={pointerType:_,constPointerType:m},Dt(h,a),[p,_,m]}))},t:function(t,e,n,r,i,o){e>0||R(undefined);var a=Wt(e,n);i=Rt(r,i),ot([],[t],(function(t){var n="constructor "+(t=t[0]).name;if(void 0===t.registeredClass.constructor_body&&(t.registeredClass.constructor_body=[]),void 0!==t.registeredClass.constructor_body[e-1])throw new ut("Cannot register multiple constructors with identical number of parameters ("+(e-1)+") for class '"+t.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return t.registeredClass.constructor_body[e-1]=()=>{It("Cannot construct "+t.name+" due to unbound types",a)},ot([],a,(function(r){return r.splice(1,0,null),t.registeredClass.constructor_body[e-1]=Ht(n,r,null,i,o),[]})),[]}))},c:function(t,e,n,r,i,o,a,s){var l=Wt(n,r);e=lt(e),o=Rt(i,o),ot([],[t],(function(t){var r=(t=t[0]).name+"."+e;function i(){It("Cannot call "+r+" due to unbound types",l)}e.startsWith("@@")&&(e=Symbol[e.substring(2)]),s&&t.registeredClass.pureVirtualFunctions.push(e);var u=t.registeredClass.instancePrototype,c=u[e];return void 0===c||void 0===c.overloadTable&&c.className!==t.name&&c.argCount===n-2?(i.argCount=n-2,i.className=t.name,u[e]=i):(Ot(u,e,r),u[e].overloadTable[n-2]=i),ot([],l,(function(i){var s=Ht(r,i,t,o,a);return void 0===u[e].overloadTable?(s.argCount=n-2,u[e]=s):u[e].overloadTable[n-2]=s,[]})),[]}))},ga:function(t,e){ft(t,{name:e=lt(e),fromWireType:function(t){var e=Lt.toValue(t);return qt(t),e},toWireType:function(t,e){return Lt.toHandle(e)},argPackAdvance:8,readValueFromPointer:G,destructorFunction:null})},N:function(t,e,n,r){var i=at(n);function o(){}e=lt(e),o.values={},ft(t,{name:e,constructor:o,fromWireType:function(t){return this.constructor.values[t]},toWireType:function(t,e){return e.value},argPackAdvance:8,readValueFromPointer:Bt(e,i,r),destructorFunction:null}),$t(e,o)},s:function(t,e,n){var r=Gt(t,"enum");e=lt(e);var i=r.constructor,o=Object.create(r.constructor.prototype,{value:{value:n},constructor:{value:et(r.name+"_"+e,(function(){}))}});i.values[n]=o,i[e]=o},L:function(t,e,n){var r=at(n);ft(t,{name:e=lt(e),fromWireType:function(t){return t},toWireType:function(t,e){return e},argPackAdvance:8,readValueFromPointer:Xt(e,r),destructorFunction:null})},n:function(t,e,n,r,i,o){var a=Wt(e,n);t=lt(t),i=Rt(r,i),$t(t,(function(){It("Cannot call "+t+" due to unbound types",a)}),e-1),ot([],a,(function(n){var r=[n[0],null].concat(n.slice(1));return Dt(t,Ht(t,r,null,i,o),e-1),[]}))},z:function(t,e,n,r,i){e=lt(e),-1===i&&(i=4294967295);var o=at(n),a=t=>t;if(0===r){var s=32-8*n;a=t=>t<<s>>>s}var l=e.includes("unsigned");ft(t,{name:e,fromWireType:a,toWireType:l?function(t,e){return this.name,e>>>0}:function(t,e){return this.name,e},argPackAdvance:8,readValueFromPointer:Zt(e,o,0!==r),destructorFunction:null})},v:function(t,e,n){var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][e];function i(t){var e=v,n=e[(t>>=2)>>>0],i=e[t+1>>>0];return new r(e.buffer,i,n)}ft(t,{name:n=lt(n),fromWireType:i,argPackAdvance:8,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},w:function(t,e,n,r,i,o,a,s,l,u,c,f){n=lt(n),o=Rt(i,o),s=Rt(a,s),u=Rt(l,u),f=Rt(c,f),ot([t],[e],(function(t){return t=t[0],[new xt(n,t.registeredClass,!1,!1,!0,t,r,o,s,u,f)]}))},M:function(t,e){var n="std::string"===(e=lt(e));ft(t,{name:e,fromWireType:function(t){var e,r=v[t>>>2],i=t+4;if(n)for(var o=i,a=0;a<=r;++a){var s=i+a;if(a==r||0==_[s>>>0]){var l=$(o,s-o);void 0===e?e=l:(e+=String.fromCharCode(0),e+=l),o=s+1}}else{var u=new Array(r);for(a=0;a<r;++a)u[a]=String.fromCharCode(_[i+a>>>0]);e=u.join("")}return xe(t),e},toWireType:function(t,e){var r;e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i="string"==typeof e;i||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||ct("Cannot pass non-string to std::string"),r=n&&i?A(e):e.length;var o=Se(4+r+1),a=o+4;if(a>>>=0,v[o>>>2]=r,n&&i)k(e,_,a,r+1);else if(i)for(var s=0;s<r;++s){var l=e.charCodeAt(s);l>255&&(xe(a),ct("String has UTF-16 code units that do not fit in 8 bits")),_[a+s>>>0]=l}else for(s=0;s<r;++s)_[a+s>>>0]=e[s];return null!==t&&t.push(xe,o),o},argPackAdvance:8,readValueFromPointer:G,destructorFunction:function(t){xe(t)}})},G:function(t,e,n){var r,i,o,a,s;n=lt(n),2===e?(r=Qt,i=te,a=ee,o=()=>g,s=1):4===e&&(r=ne,i=re,a=ie,o=()=>v,s=2),ft(t,{name:n,fromWireType:function(t){for(var n,i=v[t>>>2],a=o(),l=t+4,u=0;u<=i;++u){var c=t+4+u*e;if(u==i||0==a[c>>>s]){var f=r(l,c-l);void 0===n?n=f:(n+=String.fromCharCode(0),n+=f),l=c+e}}return xe(t),n},toWireType:function(t,r){"string"!=typeof r&&ct("Cannot pass non-string to C++ string type "+n);var o=a(r),l=Se(4+o+e);return v[(l>>>=0)>>>2]=o>>s,i(r,l+4,o+e),null!==t&&t.push(xe,l),l},argPackAdvance:8,readValueFromPointer:G,destructorFunction:function(t){xe(t)}})},F:function(t,e,n,r,i,o){L[t]={name:lt(e),rawConstructor:Rt(n,r),rawDestructor:Rt(i,o),fields:[]}},y:function(t,e,n,r,i,o,a,s,l,u){L[t].fields.push({fieldName:lt(e),getterReturnType:n,getter:Rt(r,i),getterContext:o,setterArgumentType:a,setter:Rt(s,l),setterContext:u})},ia:function(t,e){ft(t,{isVoid:!0,name:e=lt(e),argPackAdvance:0,fromWireType:function(){},toWireType:function(t,e){}})},Z:function(){return!0},j:function(t,e,n){t=Lt.toValue(t),e=Gt(e,"emval::as");var r=[],i=Lt.toHandle(r);return v[n>>>2]=i,e.toWireType(r,t)},la:function(t,e,n,r){t=Lt.toValue(t);for(var i=oe(e,n),o=new Array(e),a=0;a<e;++a){var s=i[a];o[a]=s.readValueFromPointer(r),r+=s.argPackAdvance}var l=t.apply(void 0,o);return Lt.toHandle(l)},m:function(t,e,n,r,i){return(t=le[t])(e=Lt.toValue(e),n=se(n),function(t){var e=[];return v[t>>>2]=Lt.toHandle(e),e}(r),i)},p:function(t,e,n,r){(t=le[t])(e=Lt.toValue(e),n=se(n),null,r)},a:qt,q:function(t){return 0===t?Lt.toHandle(ue()):(t=se(t),Lt.toHandle(ue()[t]))},h:function(t,e){var n=oe(t,e),r=n[0],i=r.name+"_$"+n.slice(1).map((function(t){return t.name})).join("_")+"$",o=ce[i];if(void 0!==o)return o;for(var a=["retType"],s=[r],l="",u=0;u<t-1;++u)l+=(0!==u?", ":"")+"arg"+u,a.push("argType"+u),s.push(n[1+u]);var c,f,d="return function "+tt("methodCaller_"+i)+"(handle, name, destructors, args) {\n",h=0;for(u=0;u<t-1;++u)d+=" var arg"+u+" = argType"+u+".readValueFromPointer(args"+(h?"+"+h:"")+");\n",h+=n[u+1].argPackAdvance;for(d+=" var rv = handle[name]("+l+");\n",u=0;u<t-1;++u)n[u+1].deleteObject&&(d+=" argType"+u+".deleteObject(arg"+u+");\n");return r.isVoid||(d+=" return retType.toWireType(destructors, rv);\n"),d+="};\n",a.push(d),c=zt(Function,a).apply(null,s),f=le.length,le.push(c),o=f,ce[i]=o,o},u:function(t){return t=se(t),Lt.toHandle(o[t])},k:function(t,e){return t=Lt.toValue(t),e=Lt.toValue(e),Lt.toHandle(t[e])},d:function(t){t>4&&(Yt[t].refcount+=1)},O:function(t,e){return(t=Lt.toValue(t))instanceof Lt.toValue(e)},r:function(t,e,n,r){t=Lt.toValue(t);var i=fe[e];return i||(i=function(t){for(var e="",n=0;n<t;++n)e+=(0!==n?", ":"")+"arg"+n;var r="return function emval_allocator_"+t+"(constructor, argTypes, args) {\n var HEAPU32 = getMemory();\n";for(n=0;n<t;++n)r+="var argType"+n+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+n+"');\nvar arg"+n+" = argType"+n+".readValueFromPointer(args);\nargs += argType"+n+"['argPackAdvance'];\nargTypes += 4;\n";return r+="var obj = new constructor("+e+");\nreturn valueToHandle(obj);\n}\n",new Function("requireRegisteredType","Module","valueToHandle","getMemory",r)(Gt,o,Lt.toHandle,(()=>v))}(e),fe[e]=i),i(t,n,r)},C:function(){return Lt.toHandle([])},l:function(t){return Lt.toHandle(se(t))},I:function(){return Lt.toHandle({})},f:function(t){B(Lt.toValue(t)),qt(t)},A:function(t,e,n){t=Lt.toValue(t),e=Lt.toValue(e),n=Lt.toValue(n),t[e]=n},i:function(t,e){var n=(t=Gt(t,"_emval_take_value")).readValueFromPointer(e);return Lt.toHandle(n)},B:function(t){return t=Lt.toValue(t),Lt.toHandle(typeof t)},$:function(t,e){var n,r=new Date(1e3*(v[(n=t)>>>2]+4294967296*y[n+4>>>2]));y[e>>>2]=r.getSeconds(),y[e+4>>>2]=r.getMinutes(),y[e+8>>>2]=r.getHours(),y[e+12>>>2]=r.getDate(),y[e+16>>>2]=r.getMonth(),y[e+20>>>2]=r.getFullYear()-1900,y[e+24>>>2]=r.getDay();var i=0|function(t){return(de(t.getFullYear())?he:pe)[t.getMonth()]+t.getDate()-1}(r);y[e+28>>>2]=i,y[e+36>>>2]=-60*r.getTimezoneOffset();var o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),s=o.getTimezoneOffset(),l=0|(a!=s&&r.getTimezoneOffset()==Math.min(s,a));y[e+32>>>2]=l},X:function(t,e,n,r,i,o,a){return-52},Y:function(t,e,n,r,i,o){},aa:function(t,e,n){var r=(new Date).getFullYear(),i=new Date(r,0,1),o=new Date(r,6,1),a=i.getTimezoneOffset(),s=o.getTimezoneOffset(),l=Math.max(a,s);function u(t){var e=t.toTimeString().match(/\(([A-Za-z ]+)\)$/);return e?e[1]:"GMT"}v[t>>>2]=60*l,y[e>>>2]=Number(a!=s);var c=u(i),f=u(o),d=_e(c),h=_e(f);s<a?(v[n>>>2]=d,v[n+4>>>2]=h):(v[n>>>2]=h,v[n+4>>>2]=d)},e:function(){R("")},b:function(t,e,n){return function(t,e,n){var r=function(t,e){var n;for(ge.length=0,e>>=2;n=_[t++>>>0];)e+=105!=n&e,ge.push(105==n?y[e>>>0]:b[e++>>>1]),++e;return ge}(e,n);return H[t].apply(null,r)}(t,e,n)},_:function(){return Date.now()},U:function(){return 4294901760},ba:me,fa:function(t,e,n){_.copyWithin(t>>>0,e>>>0,e+n>>>0)},T:function(t){var e,n=_.length,r=4294901760;if((t>>>=0)>r)return!1;for(var i=1;i<=4;i*=2){var o=n*(1+.2/i);if(o=Math.min(o,t+100663296),ye(Math.min(r,(e=Math.max(t,o))+(65536-e%65536)%65536)))return!0}return!1},ca:function(t,e){var n=0;return we().forEach((function(r,i){var o=e+n;v[t+4*i>>>2]=o,function(t,e,n){for(var r=0;r<t.length;++r)p[e++>>>0]=t.charCodeAt(r);p[e>>>0]=0}(r,o),n+=r.length+1})),0},da:function(t,e){var n=we();v[t>>>2]=n.length;var r=0;return n.forEach((function(t){r+=t.length+1})),v[e>>>2]=r,0},D:function(t){return 52},J:function(t,e,n,r){return 52},P:function(t,e,n,r,i){return 70},V:function(t,e,n,r){for(var i,o,a,s=0,l=0;l<n;l++){var u=v[e>>>2],c=v[e+4>>>2];e+=8;for(var f=0;f<c;f++)i=t,o=_[u+f>>>0],a=void 0,a=be[i],0===o||10===o?((1===i?d:h)(O(a,0)),a.length=0):a.push(o);s+=c}return v[r>>>2]=s,0},ka:ke,x:function(t,e,n,r,i){return ke(t,e,n,r)},ja:function(t,e,n){for(var r=$(e),i="\\!@#$^&*()+=-[]/{}|:<>?,.",o=0;o<25;++o)r=r.replace(new RegExp("\\"+i[o],"g"),"\\"+i[o]);var a={"%A":"%a","%B":"%b","%c":"%a %b %d %H:%M:%S %Y","%D":"%m\\/%d\\/%y","%e":"%d","%F":"%Y-%m-%d","%h":"%b","%R":"%H\\:%M","%r":"%I\\:%M\\:%S\\s%p","%T":"%H\\:%M\\:%S","%x":"%m\\/%d\\/(?:%y|%Y)","%X":"%H\\:%M\\:%S"};for(var s in a)r=r.replace(s,a[s]);var l={"%a":"(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)","%b":"(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)","%C":"\\d\\d","%d":"0[1-9]|[1-9](?!\\d)|1\\d|2\\d|30|31","%H":"\\d(?!\\d)|[0,1]\\d|20|21|22|23","%I":"\\d(?!\\d)|0\\d|10|11|12","%j":"00[1-9]|0?[1-9](?!\\d)|0?[1-9]\\d(?!\\d)|[1,2]\\d\\d|3[0-6]\\d","%m":"0[1-9]|[1-9](?!\\d)|10|11|12","%M":"0\\d|\\d(?!\\d)|[1-5]\\d","%n":"\\s","%p":"AM|am|PM|pm|A\\.M\\.|a\\.m\\.|P\\.M\\.|p\\.m\\.","%S":"0\\d|\\d(?!\\d)|[1-5]\\d|60","%U":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%W":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%w":"[0-6]","%y":"\\d\\d","%Y":"\\d\\d\\d\\d","%%":"%","%t":"\\s"};for(var u in l)r=r.replace(u,"("+u+l[u]+")");var c=[];for(o=r.indexOf("%");o>=0;o=r.indexOf("%"))c.push(r[o+1]),r=r.replace(new RegExp("\\%"+r[o+1],"g"),"");var f=new RegExp("^"+r,"i").exec($(t));if(f){var d,h=function(){function t(t,e,n){return"number"!=typeof t||isNaN(t)?e:t>=e?t<=n?t:n:e}return{year:t(y[n+20>>>2]+1900,1970,9999),month:t(y[n+16>>>2],0,11),day:t(y[n+12>>>2],1,31),hour:t(y[n+8>>>2],0,23),min:t(y[n+4>>>2],0,59),sec:t(y[n>>>2],0,59)}}(),p=t=>{var e=c.indexOf(t);if(e>=0)return f[e+1]};if((d=p("S"))&&(h.sec=Ae(d)),(d=p("M"))&&(h.min=Ae(d)),d=p("H"))h.hour=Ae(d);else if(d=p("I")){var _=Ae(d);(d=p("p"))&&(_+="P"===d.toUpperCase()[0]?12:0),h.hour=_}if(d=p("Y"))h.year=Ae(d);else if(d=p("y")){var m=Ae(d);(d=p("C"))?m+=100*Ae(d):m+=m<69?2e3:1900,h.year=m}if((d=p("m"))?h.month=Ae(d)-1:(d=p("b"))&&(h.month={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11}[d.substring(0,3).toUpperCase()]||0),d=p("d"))h.day=Ae(d);else if(d=p("j"))for(var g=Ae(d),v=de(h.year),w=0;w<12;++w){var b=Te(v?Ce:Pe,w-1);g<=b+(v?Ce:Pe)[w]&&(h.day=g-b)}else if(d=p("a")){var T=d.substring(0,3).toUpperCase();if(d=p("U")){var C={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6}[T],P=Ae(d);k=0===(O=new Date(h.year,0,1)).getDay()?Oe(O,C+7*(P-1)):Oe(O,7-O.getDay()+C+7*(P-1)),h.day=k.getDate(),h.month=k.getMonth()}else if(d=p("W")){var O,k;C={MON:0,TUE:1,WED:2,THU:3,FRI:4,SAT:5,SUN:6}[T],P=Ae(d),k=1===(O=new Date(h.year,0,1)).getDay()?Oe(O,C+7*(P-1)):Oe(O,7-O.getDay()+1+C+7*(P-1)),h.day=k.getDate(),h.month=k.getMonth()}}var A=new Date(h.year,h.month,h.day,h.hour,h.min,h.sec,0);return y[n>>>2]=A.getSeconds(),y[n+4>>>2]=A.getMinutes(),y[n+8>>>2]=A.getHours(),y[n+12>>>2]=A.getDate(),y[n+16>>>2]=A.getMonth(),y[n+20>>>2]=A.getFullYear()-1900,y[n+24>>>2]=A.getDay(),y[n+28>>>2]=Te(de(A.getFullYear())?Ce:Pe,A.getMonth()-1)+A.getDate()-1,y[n+32>>>2]=0,t+$e(f[0]).length-1}return 0}},Se=(function(){var t,e,n,r,a={a:je};function s(t,e){var n,r=t.exports;return o.asm=r,f=o.asm.ma,E(),T=o.asm.qa,n=o.asm.na,S.unshift(n),function(t){if(D--,o.monitorRunDependencies&&o.monitorRunDependencies(D),0==D&&(null!==F&&(clearInterval(F),F=null),V)){var e=V;V=null,e()}}(),r}if(D++,o.monitorRunDependencies&&o.monitorRunDependencies(D),o.instantiateWasm)try{return o.instantiateWasm(a,s)}catch(t){h("Module.instantiateWasm callback failed with error: "+t),i(t)}(t=c,e=N,n=a,r=function(t){s(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||I(e)||"function"!=typeof fetch?z(e,n,r):fetch(e,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,n).then(r,(function(t){return h("wasm streaming compile failed: "+t),h("falling back to ArrayBuffer instantiation"),z(e,n,r)}))}))).catch(i)}(),function(){return(Se=o.asm.oa).apply(null,arguments)}),xe=function(){return(xe=o.asm.pa).apply(null,arguments)},De=o.___getTypeName=function(){return(De=o.___getTypeName=o.asm.ra).apply(null,arguments)},Fe=(o.__embind_initialize_bindings=function(){return(o.__embind_initialize_bindings=o.asm.sa).apply(null,arguments)},function(){return(Fe=o.asm.ta).apply(null,arguments)});function Ve(){function t(){Ee||(Ee=!0,o.calledRun=!0,C||(U(S),r(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)t=o.postRun.shift(),x.unshift(t);var t;U(x)}()))}D>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)t=o.preRun.shift(),j.unshift(t);var t;U(j)}(),D>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t()))}if(o.dynCall_ji=function(){return(o.dynCall_ji=o.asm.ua).apply(null,arguments)},o.dynCall_viij=function(){return(o.dynCall_viij=o.asm.va).apply(null,arguments)},o.dynCall_viiij=function(){return(o.dynCall_viiij=o.asm.wa).apply(null,arguments)},o.dynCall_viiijj=function(){return(o.dynCall_viiijj=o.asm.xa).apply(null,arguments)},o.dynCall_viji=function(){return(o.dynCall_viji=o.asm.ya).apply(null,arguments)},o.dynCall_viiji=function(){return(o.dynCall_viiji=o.asm.za).apply(null,arguments)},o.dynCall_viijji=function(){return(o.dynCall_viijji=o.asm.Aa).apply(null,arguments)},o.dynCall_viijj=function(){return(o.dynCall_viijj=o.asm.Ba).apply(null,arguments)},o.dynCall_viijij=function(){return(o.dynCall_viijij=o.asm.Ca).apply(null,arguments)},o.dynCall_viiiijii=function(){return(o.dynCall_viiiijii=o.asm.Da).apply(null,arguments)},o.dynCall_vijjji=function(){return(o.dynCall_vijjji=o.asm.Ea).apply(null,arguments)},o.dynCall_jiji=function(){return(o.dynCall_jiji=o.asm.Fa).apply(null,arguments)},o.dynCall_viijii=function(){return(o.dynCall_viijii=o.asm.Ga).apply(null,arguments)},o.dynCall_iiiiij=function(){return(o.dynCall_iiiiij=o.asm.Ha).apply(null,arguments)},o.dynCall_iiiiijj=function(){return(o.dynCall_iiiiijj=o.asm.Ia).apply(null,arguments)},o.dynCall_iiiiiijj=function(){return(o.dynCall_iiiiiijj=o.asm.Ja).apply(null,arguments)},V=function t(){Ee||Ve(),Ee||(V=t)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Ve(),e.ready}),i={integer:"integer",float:"float",string:"string",boolean:"boolean",date:"date",datetime:"datetime",object:"object"},o={row_pivot:"group_by","row-pivot":"group_by","row-pivots":"group_by",col_pivot:"split_by",col_pivots:"split_by",column_pivot:"split_by","column-pivot":"split_by","column-pivots":"split_by",filters:"filter",sorts:"sort"},a=["viewport","group_by","split_by","aggregates","columns","filter","sort","computed_columns","expressions","group_by_depth","split_by_depth","filter_op"],s=["any","avg","abs sum","count","distinct count","dominant","first by index","last by index","last minus first","last","high","join","low","high minus low","max","mean","median","min","pct sum parent","pct sum grand total","stddev","sum","sum abs","sum not null","unique","var"],l=["any","count","distinct count","distinct leaf","dominant","first by index","join","last by index","last","unique"],u=["none","asc","desc","col asc","col desc","asc abs","desc abs","col asc abs","col desc abs"],c=[2,0,1,0,1,3,4,3,4],f={string:l,float:s,integer:s,boolean:["any","count","distinct count","distinct leaf","dominant","first by index","last by index","last","unique"],datetime:l,date:l},d={lessThan:"<",greaterThan:">",equals:"==",lessThanOrEquals:"<=",greaterThanOrEquals:">=",doesNotEqual:"!=",isNull:"is null",isNotNull:"is not null",isIn:"in",isNotIn:"not in",contains:"contains",bitwiseAnd:"&",bitwiseOr:"|",and:"and",or:"or",beginsWith:"begins with",endsWith:"ends with"},h=[d.bitwiseAnd,d.bitwiseOr,d.equals,d.doesNotEqual,d.or,d.and,d.isNull,d.isNotNull],p=[d.lessThan,d.greaterThan,d.equals,d.lessThanOrEquals,d.greaterThanOrEquals,d.doesNotEqual,d.isNull,d.isNotNull],_=[d.equals,d.contains,d.doesNotEqual,d.isIn,d.isNotIn,d.beginsWith,d.endsWith,d.isNull,d.isNotNull],m=[d.lessThan,d.greaterThan,d.equals,d.lessThanOrEquals,d.greaterThanOrEquals,d.doesNotEqual,d.isNull,d.isNotNull],g="|",y={string:_,float:p,integer:p,boolean:h,datetime:m,date:m},v={types:{float:{filter_operator:"==",aggregate:"sum",format:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},string:{filter_operator:"==",aggregate:"count"},integer:{filter_operator:"==",aggregate:"sum",format:{}},boolean:{filter_operator:"==",aggregate:"count"},datetime:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short",timeStyle:"medium"},null_value:-1},date:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short"},null_value:-1}}};function w(t){const e={};if(C().types[t]&&Object.assign(e,C().types[t]),e.type){const t=w(e.type);return Object.assign(t,e),t}return e}function b(t){return t&&"object"==typeof t&&!Array.isArray(t)}function T(t,...e){if(!e.length)return t;const n=e.shift();if(b(t)&&b(n))for(const e in n)b(n[e])?(t[e]||Object.assign(t,{[e]:{}}),T(t[e],n[e])):Object.assign(t,{[e]:n[e]});return T(t,...e)}function C(){return globalThis.__PERSPECTIVE_CONFIG__||(globalThis.__PERSPECTIVE_CONFIG__=T(v,globalThis.__TEMPLATE_CONFIG__||{})),globalThis.__PERSPECTIVE_CONFIG__}function P(t){return t>=1&&t<=8?"integer":19===t?"string":10===t||9===t?"float":11===t?"boolean":12===t?"datetime":13===t?"date":void console.warn(`Unknown type for value ${t} with JS type ${typeof t}`)}function O(t){let e=t;do{for(const n of Object.getOwnPropertyNames(e)){const e=t[n];"constructor"!==n&&"function"==typeof e&&(t[n]=e.bind(t))}}while(e=e!==Object&&Object.getPrototypeOf(e))}String.prototype.includes||(String.prototype.includes=function(t,e){return"number"!=typeof e&&(e=0),!(e+t.length>this.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),r=n.length>>>0;if(0===r)return!1;for(var i,o,a=0|e,s=Math.max(a>=0?a:r-Math.abs(a),0);s<r;){if((i=n[s])===(o=t)||"number"==typeof i&&"number"==typeof o&&isNaN(i)&&isNaN(o))return!0;s++}return!1}});class ${constructor(){this.data_formats={row:0,column:1,schema:2},this.format=void 0,this.data=void 0,this.names=void 0,this.types=void 0,this.row_count=void 0}is_format(t){if(Array.isArray(t))return this.data_formats.row;if(Array.isArray(t[Object.keys(t)[0]]))return this.data_formats.column;if("string"==typeof t[Object.keys(t)[0]]||"function"==typeof t[Object.keys(t)[0]])return this.data_formats.schema;throw`Could not determine data format for ${JSON.stringify(t)}, with JS typeof ${typeof t}`}count_rows(t){return this.format===this.data_formats.row?t.length:this.format===this.data_formats.column?t[Object.keys(t)[0]].length:0}get_format(){return this.format}get(t,e){let n;if(this.format===this.data_formats.row){let r=this.data[e];r.hasOwnProperty(t)&&(n=r[t])}else if(this.format===this.data_formats.column)this.data.hasOwnProperty(t)&&(n=this.data[t][e]);else{if(this.format!==this.data_formats.schema)throw`Could not get() from dataset - ${this.data} is poorly formatted.`;n=void 0}return n}marshal(t,e,n){const r=this.names[t];let i=null===(o=this.get(r,e))||"null"===o?null:void 0===o||"undefined"===o?void 0:o;var o;if(null===i)return null;if(void 0!==i){switch(P(n.value)){case"float":case"integer":i=Number(i);break;case"boolean":i="string"==typeof i?"true"===i.toLowerCase():!!i;break;case"datetime":case"date":break;default:i+=""}return i}}clean(){this.names=void 0,this.types=void 0}init(t){this.data=t,this.format=this.is_format(this.data),this.row_count=this.count_rows(this.data);const e={};if(this.format===this.data_formats.row)t.length>0?this.names=Object.keys(t[0]):this.clean.names=[];else if(this.format===this.data_formats.column)this.names=Object.keys(t);else{if(this.format!==this.data_formats.schema)throw`Could not initialize - failed to determine format for ${t}`;this.names=Object.keys(t);for(const n of this.names){const r=w(t[n]);r.type&&(console.debug(`Converting "${t[n]}" to "${r.type}"`),e[n]=t[n],t[n]=r.type)}}return e}}const k=function(t){let e=[];for(let n=0;n<t.size();n++){let r=t.get(n);e.push(r)}return t.delete(),e},A=function(t){let e={},n=t.keys();for(let r=0;r<n.size();r++){let i=n.get(r);e[i]=t.get(i)}return t.delete(),n.delete(),e},E=function(t,e){for(const n of e)t.push_back(n);return t};function j(t){const e={};return"string"!=typeof t?Object.getOwnPropertyNames(t).forEach((n=>{e[n]=t[n]}),t):e.message=t,e}class S{constructor(t){this.perspective=t,this._tables={},this._views={},this._callback_cache=new Map}init(t){var e;t.config&&(e=t.config,globalThis.__PERSPECTIVE_CONFIG__&&console.warn("Config already initialized!"),globalThis.__PERSPECTIVE_CONFIG__=T(v,e)),t.data=["wait_for_response"],this.post(t)}post(t){throw new Error(`Posting ${t} failed - post() not implemented!`)}process(t,e){switch(t.cmd){case"init_profile_thread":this.perspective.initialize_profile_thread();break;case"memory_usage":this.post({id:t.id,data:this.perspective.memory_usage()});break;case"init":this.init(t);break;case"table":if(void 0===t.args[0])this._tables[t.name]=[];else try{const e=this._tables[t.name],n=this.perspective.table(t.args[0],t.options);if(n&&n.then)n.then((n=>{if(this._tables[t.name]=n,e)for(const t of e)this.process(t);this.post({id:t.id,data:t.name})})).catch((e=>this.process_error(t,e)));else{if(this._tables[t.name]=n,e)for(const t of e)this.process(t);this.post({id:t.id,data:t.name})}}catch(e){return void this.process_error(t,e)}break;case"table_generate":(0,eval)(t.args)((function(e){this._tables[t.name]=e,this.post({id:t.id,data:"created!"})}));break;case"table_execute":(0,eval)(t.f)(this._tables[t.name]);break;case"table_method":case"view_method":this.process_method_call(t);break;case"view":const n=this._tables[t.table_name];if(n&&Array.isArray(n))n.push(t),this._views[t.view_name]=[];else try{const n=this._views[t.view_name],r=this._tables[t.table_name].view(t.config);if(r&&r.then)r.then((r=>{if(this._views[t.view_name]=r,this._views[t.view_name].client_id=e,n)for(const t of n)this.process(t);this.post({id:t.id,data:t.view_name})})).catch((e=>this.process_error(t,e)));else{if(this._views[t.view_name]=r,this._views[t.view_name].client_id=e,n)for(const t of n)this.process(t);this.post({id:t.id,data:t.view_name})}}catch(e){return void this.process_error(t,e)}}}process_subscribe(t,e){try{let n;"on"===t.method.slice(0,2)?(n=r=>{let i={id:t.id,data:r};try{if(t.args&&t.args[0]&&"on_update"===t.method&&"row"===t.args[0].mode)return void this.post(i,[r.delta]);this.post(i)}catch(r){console.error(`Removing failed callback to \`${t.method}()\` (presumably due to failed connection)`);const i=t.method.substring(3);e[`remove_${i}`](n)}},t.callback_id&&this._callback_cache.set(t.callback_id,n)):t.callback_id&&(n=this._callback_cache.get(t.callback_id),this._callback_cache.delete(t.callback_id)),n?e[t.method](n,...t.args):console.error(`Callback not found for remote call "${JSON.stringify(t)}"`)}catch(e){return void this.process_error(t,e)}}process_method_call(t){let e,n;const r=t.view_name||t.name;if(e="table_method"===t.cmd?this._tables[r]:this._views[r],e||"view_method"!==t.cmd)if(e&&e.push)e.push(t);else try{if(t.subscribe)return void this.process_subscribe(t,e);n=e[t.method].apply(e,t.args),n instanceof Promise?n.then((e=>this.process_method_call_response(t,e))).catch((e=>this.process_error(t,e))):this.process_method_call_response(t,n)}catch(e){return void this.process_error(t,e)}else this.process_error(t,{message:"View method cancelled"})}process_method_call_response(t,e){"delete"===t.method&&delete this._views[t.name],"to_arrow"===t.method?this.post({id:t.id,data:e},[e]):this.post({id:t.id,data:e})}process_error(t,e){try{this.post({id:t.id,error:j(e)})}catch(t){console.error("Error handler failed: {}",e)}}clear_views(t){for(let e of Object.keys(this._views))if(this._views[e].client_id===t){try{this._views[e].delete()}catch(t){console.error(t)}delete this._views[e]}console.debug(`GC ${Object.keys(this._views).length} views in memory`)}}const x={jsonFormatter:{initDataValue:()=>[],initRowValue:()=>({}),initColumnValue:(t,e)=>{},initColumnRowPath:(t,e,n)=>e[n]=[],setColumnValue:(t,e,n,r)=>e[n]=r,addColumnValue:(t,e,n,r)=>e[n].unshift(r),addRow:(t,e)=>t.push(e),formatData:t=>t,slice:(t,e)=>t.slice(e)},jsonTableFormatter:{initDataValue:()=>new Object,initRowValue:()=>{},initColumnValue:(t,e)=>{t[e]=[]},setColumnValue:(t,e,n,r)=>{t[n].push(r)},addColumnValue:(t,e,n,r)=>{t[n][t[n].length-1].unshift(r)},initColumnRowPath:(t,e,n)=>{t[n]=t[n]||[],t[n].push([])},addRow:()=>{},formatData:t=>t,slice:(t,e)=>{let n={};for(let r in t)n[r]=t[r].slice(e);return n}}};"undefined"!=typeof self&&void 0===self.performance&&(self.performance={now:Date.now});const D=new Set;globalThis.perspective=function(t){let n=t,r=new $;const i=["zero","one","two"];let s={};function l(t){const e=s[t];e&&(e._process(),u(t))}function u(t){s[t]?.delete(),delete s[t]}function c(t,e,r,i,o,a,u,c,f){r||(r=""),i||(i=4294967295);const d=(e=n.make_table(e,t,i,r,o,a,u,c,f)).get_pool(),h=e.get_id();return a||o==n.t_op.OP_DELETE?function(t,e){s[e]?t.delete():(s[e]=t,setTimeout((()=>l(e))))}(d,h):(d._process(),d.delete()),e}function f(t,e,r,i,o){this.name=o,this._View=void 0,this.table=t,this.config=r||{},this.view_config=i||new i,this.is_unit_context=""===this.table.index&&0===e&&0===this.view_config.group_by.length&&0===this.view_config.split_by.length&&0===this.view_config.filter.length&&0===this.view_config.sort.length&&0===this.view_config.expressions.length,this.is_unit_context?this._View=n.make_view_unit(t._Table,o,g,this.view_config,null):0===e?this._View=n.make_view_zero(t._Table,o,g,this.view_config,null):1===e?this._View=n.make_view_one(t._Table,o,g,this.view_config,null):2===e&&(this._View=n.make_view_two(t._Table,o,g,this.view_config,null)),this.ctx=this._View.get_context(),this.column_only=this._View.is_column_only(),this.update_callbacks=this.table.update_callbacks,this.overridden_types=this.table.overridden_types,this._delete_callbacks=[],O(this)}function d(t){let e=[];for(let r=0;r<t.size();r++){let i=t.get(r);e.push(n.scalar_to_val(i,!1,!0)),i.delete()}return t.delete(),e}f.prototype.get_config=function(){return JSON.parse(JSON.stringify(this.config))},f.prototype.delete=function(){u(this.table.get_id()),this._View.delete(),this.ctx.delete(),this.table.views.splice(this.table.views.indexOf(this),1),this.table=void 0;let t=0,e=0;for(;t<this.update_callbacks.length;){let n=this.update_callbacks[t];n.view!==this&&(this.update_callbacks[e++]=n),t++}this.update_callbacks.length=e,this._delete_callbacks.forEach((t=>t()))},f.prototype.sides=function(){return this._View.sides()},f.prototype._num_hidden=function(){let t=0;for(const e of this.config.sort)-1===this.config.columns.indexOf(e[0])&&t++;return t};const h=function(t){let e=[];for(let n=0;n<t.size();n++){let r=t.get(n);e.push(d(r))}return t.delete(),e};f.prototype.schema=function(t=!0){const e=A(this._View.schema());if(t)for(const t of Object.keys(e)){let n=t.split(g);n=n[n.length-1],this.overridden_types[n]&&w(this.overridden_types[n]).type===e[t]&&(e[t]=this.overridden_types[n])}return e},f.prototype.expression_schema=function(t=!0){const e=A(this._View.expression_schema());if(t)for(const t of Object.keys(e)){let n=t.split(g);n=n[n.length-1],this.overridden_types[n]&&w(this.overridden_types[n]).type===e[t]&&(e[t]=this.overridden_types[n])}return e},f.prototype._column_names=function(t=!1,e=0){return h(this._View.column_names(t,e)).map((t=>t.join(g)))},f.prototype.column_paths=function(){return h(this._View.column_paths()).map((t=>t.join(g)))},f.prototype.get_data_slice=function(t,e,r,o){if(this.is_unit_context)return n.get_data_slice_unit(this._View,t,e,r,o);{const a=this.sides();return n[`get_data_slice_${i[a]}`](this._View,t,e,r,o)}};const p=function(t){t=t||{};const e=this._View.num_columns()+(0===this.sides()?0:1),n=this._View.num_rows(),r=this._num_hidden(),i=this.sides()>0||this.column_only?1:0,o=this.config.viewport?this.config.viewport:{},a=t.start_row||(o.top?o.top:0),s=Math.min(n,void 0!==t.end_row?t.end_row:o.height?a+o.height:n),l=t.start_col||(o.left?o.left:0),u=Math.min(e,(void 0!==t.end_col?t.end_col+i:o.width?l+o.width:e)*(r+1));return t.start_row=Math.floor(a),t.end_row=Math.ceil(s),t.start_col=Math.floor(l),t.end_col=Math.ceil(u),t};f.prototype.get_min_max=function(t){if(this.is_unit_context)return n.get_min_max_unit(this._View,t);{const e=this.sides();return n[`get_min_max_${i[e]}`](this._View,t)}};const _=function(t,e){l(this.table.get_id());const r=(t=p.bind(this)(t)).start_row,o=t.end_row,a=t.start_col,s=t.end_col,u=this._num_hidden(),c=t.formatted,f=!!t.index,d=!!t.id,_=!!t.leaves_only,m=this.sides(),y=0!==m&&!this.column_only,v=i[m];let b;b=this.is_unit_context?n.get_from_data_slice_unit:n[`get_from_data_slice_${v}`];const T=this.get_data_slice(r,o,a,s),C=T.get_column_names(),P=h(C).map((t=>t.join(g))),O=this.schema();let $=e.initDataValue();for(let t=a;t<s;t++){const n=P[t];e.initColumnValue($,n)}for(let t=r;t<o;t++){let r=y?T.get_row_path(t):void 0;if(y&&_&&r.size()<this.config.group_by.length){r.delete();continue}let i=e.initRowValue();d&&e.initColumnRowPath($,i,"__ID__");for(let o=a;o<s;o++){const s=P[o],l=O[s],f=w(l);if(o===a&&0!==m){if(!this.column_only){e.initColumnRowPath($,i,"__ROW_PATH__");for(let t=0;t<r.size();t++){const o=r.get(t),a=n.scalar_to_val(o,!1,!1);o.delete(),e.addColumnValue($,i,"__ROW_PATH__",a),d&&e.addColumnValue($,i,"__ID__",a)}}}else{if((o-(m>0?1:0))%(this.config.columns.length+u)>=this.config.columns.length)continue;{let n=b(T,t,o);c&&null!=n&&("datetime"!==l&&"date"!==l||(n=new Date(n),n=n.toLocaleString([],f.format))),e.setColumnValue($,i,s,n)}}}if(f){const r=T.get_pkeys(t,0);e.initColumnRowPath($,i,"__INDEX__");for(let t=0;t<r.size();t++){const o=r.get(t),a=n.scalar_to_val(o,!1,!1);o.delete(),e.addColumnValue($,i,"__INDEX__",a)}r.delete()}if(d&&0===m){const r=T.get_pkeys(t,0);for(let t=0;t<r.size();t++){const o=r.get(t),a=n.scalar_to_val(o,!1,!1);o.delete(),e.addColumnValue($,i,"__ID__",a)}r.delete()}r&&r.delete(),e.addRow($,i)}return T.delete(),e.formatData($,t.config)},m=function(t,e,n){const r=this.num_rows(),i=e.start_row||0,o=e.end_row||r;let a,s,l=this._column_names().indexOf(t);if(-1===l)return;this.sides()>0&&l++,e.data_slice?a=e.data_slice.get_column_slice(l):(s=this.get_data_slice(i,o,l,l+1),a=s.get_slice());const u=n(a,this._View.get_column_dtype(l),l);return a.delete(),s&&s.delete(),u};function y(t,e){let n=0,r=0;for(;n<t.length;){const i=t[n];e(i,n,t)&&(t[r++]=i),n++}return t.length=r,t}function v(t){this.group_by=t.group_by||[],this.split_by=t.split_by||[],this.aggregates=t.aggregates||{},this.columns=t.columns,this.filter=t.filter||[],this.sort=t.sort||[],this.expressions=t.expressions||[],this.filter_op=t.filter_op||"and",this.group_by_depth=t.group_by_depth,this.split_by_depth=t.split_by_depth}function b(t,e,n,r){this._Table=t;const i=this._Table.get_gnode();this.gnode_id=i.get_id(),i.delete();const o=this._Table.get_pool();o.set_update_delegate(this),o.delete(),this.name=Math.random()+"",this.initialized=!1,this.index=e,this.limit=n,this.update_callbacks=[],this._delete_callbacks=[],this.views=[],this.overridden_types=r,O(this)}function T(t){let e=[];const n={};for(let r of t){if(r.includes('""')){console.error(`Skipping expression '${r}', as it cannot reference an empty column!`);continue}let t,i={},o={},a=0,s=r.match(/^\/\/(?<alias>.+?)\n/);s?.groups?.alias&&(t=s.groups.alias.trim()),t&&0!=t.length||(t=r);let l=r.replace(/([a-zA-Z_]+[a-zA-Z0-9_]*)/g,(t=>"true"==t?"True":"false"==t?"False":t));l=l.replace(/\"(.*?[^\\])\"/g,((t,e)=>{if(e=e.replace(/\\"/g,'"'),void 0===i[e]){let t=`COLUMN${a}`;i[e]=t,o[t]=e}return a++,i[e]})),l=l.replace(/'(.*?[^\\])'/g,(t=>`intern(${t})`));const u=(t,e,n,r)=>{const i=t.indexOf(n);return`${t.substring(0,i)}'${r}'${t.substring(i+n.length)}`};l=l.replace(/(bucket|match|match_all|search|indexof)\(.*?,\s*(intern\(\'(.+)\'\)).*\)/g,u),l=l.replace(/(replace_all|replace)\(.*?,\s*(intern\(\'(.*)\'\)),.*\)/g,u);const c=[t,r,l,o];void 0!==n[t]?e[n[t]]=c:(e.push(c),n[t]=e.length-1)}return e}let C;f.prototype.to_columns=function(t){return _.call(this,t,x.jsonTableFormatter)},f.prototype.to_json=function(t){return _.call(this,t,x.jsonFormatter)},f.prototype.to_csv=function(t){l(this.table.get_id());const e=(t=p.bind(this)(t)).start_row,r=t.end_row,i=t.start_col,o=t.end_col,a=this.sides();return this.is_unit_context?n.to_csv_unit(this._View,e,r,i,o):0===a?n.to_csv_zero(this._View,e,r,i,o):1===a?n.to_csv_one(this._View,e,r,i,o):2===a?n.to_csv_two(this._View,e,r,i,o):void 0},f.prototype.col_to_js_typed_array=function(t,e={}){l(this.table.get_id());const r=n.col_to_js_typed_array;return m.call(this,t,e,r)},f.prototype.to_arrow=function(t={}){l(this.table.get_id());const e=(t=p.bind(this)(t)).start_row,r=t.end_row,i=t.start_col,o=t.end_col,a=this.sides();return this.is_unit_context?n.to_arrow_unit(this._View,e,r,i,o):0===a?n.to_arrow_zero(this._View,e,r,i,o):1===a?n.to_arrow_one(this._View,e,r,i,o):2===a?n.to_arrow_two(this._View,e,r,i,o):void 0},f.prototype.num_rows=function(){return l(this.table.get_id()),this._View.num_rows()},f.prototype.num_columns=function(){const t=this._View.num_columns(),e=this._num_hidden();return t-t/(this.config.columns.length+e)*e},f.prototype.dimensions=function(){return{num_table_rows:this.table.num_rows(),num_table_columns:this.table.num_columns(),num_view_rows:this._View.num_rows(),num_view_columns:this.num_columns()}},f.prototype.get_row_expanded=function(t){return this._View.get_row_expanded(t)},f.prototype.expand=function(t){return this._View.expand(t,this.config.group_by.length)},f.prototype.collapse=function(t){return this._View.collapse(t)},f.prototype.set_depth=function(t){return this._View.set_depth(t,this.config.group_by.length)},f.prototype._get_step_delta=async function(){let t,e=this._View.get_step_delta(0,2147483647);if(0===e.cells.size())t=this.to_json();else{let n={};for(let t=0;t<e.cells.size();t++)n[e.cells.get(t).row]=!0;n=Object.keys(n);const r=n.map((t=>this.to_json({start_row:Number.parseInt(t),end_row:Number.parseInt(t)+1})));t=[].concat.apply([],r)}return e.cells.delete(),t},f.prototype._get_row_delta=async function(){if(this.is_unit_context)return n.get_row_delta_unit(this._View);{const t=this.sides();return n[`get_row_delta_${i[t]}`](this._View)}},f.prototype.on_update=function(t,{mode:e="none"}={}){if(l(this.table.get_id()),-1===["none","row"].indexOf(e))throw new Error(`Invalid update mode "${e}" - valid modes are "none" and "row".`);"row"===e&&(this._View._get_deltas_enabled()||this._View._set_deltas_enabled(!0)),this.update_callbacks.push({view:this,orig_callback:t,callback:async(n,r)=>{void 0===r[n]&&(r[n]={});let i={port_id:n};"row"===e&&(void 0===r[n].row_delta&&(r[n].row_delta=await this._get_row_delta()),i.delta=r[n].row_delta),t(i)}})},f.prototype.remove_update=function(t){l(this.table.get_id());const e=this.update_callbacks.length;y(this.update_callbacks,(e=>e.orig_callback!==t)),console.assert(e>this.update_callbacks.length,'"callback" does not match a registered updater')},f.prototype.on_delete=function(t){this._delete_callbacks.push(t)},f.prototype.remove_delete=function(t){const e=this._delete_callbacks.length;y(this._delete_callbacks,(e=>e!==t)),console.assert(e>this._delete_callbacks.length,'"callback" does not match a registered delete callbacks')},v.prototype.get_group_by=function(){let t=n.make_string_vector();return E(t,this.group_by)},v.prototype.get_split_by=function(){let t=n.make_string_vector();return E(t,this.split_by)},v.prototype.get_columns=function(){let t=n.make_string_vector();return E(t,this.columns)},v.prototype.get_filter=function(){let t=n.make_2d_val_vector();for(let e of this.filter){let r=n.make_val_vector(),i=E(r,e);t.push_back(i)}return t},v.prototype.get_sort=function(){let t=n.make_2d_string_vector();for(let e of this.sort){let r=n.make_string_vector(),i=E(r,e);t.push_back(i)}return t},v.prototype.get_expressions=function(){let t=n.make_2d_val_vector();for(let e of this.expressions){let r=n.make_val_vector();for(let t of e)r.push_back(t);t.push_back(r)}return t},b.prototype.get_id=function(){return this._Table.get_id()},b.prototype.get_pool=function(){return this._Table.get_pool()},b.prototype.make_port=function(){return this._Table.make_port()},b.prototype.remove_port=function(){this._Table.remove_port()},b.prototype._update_callback=function(t){let e={};for(let n in this.update_callbacks)this.update_callbacks[n].callback(t,e)},b.prototype.get_index=function(){return this.index},b.prototype.get_limit=function(){return this.limit},b.prototype.clear=function(){l(this.get_id()),this._Table.reset_gnode(this.gnode_id)},b.prototype.replace=function(t){u(this.get_id()),this._Table.reset_gnode(this.gnode_id),this.update(t),l(this.get_id())},b.prototype.delete=function(){if(this.views.length>0)throw`Cannot delete Table as it still has ${this.views.length} registered View(s).`;u(this.get_id()),this._Table.unregister_gnode(this.gnode_id),this._Table.delete();for(const t of this._delete_callbacks)t()},b.prototype.on_delete=function(t){this._delete_callbacks.push(t)},b.prototype.remove_delete=function(t){const e=this._delete_callbacks.length;y(this._delete_callbacks,(e=>e!==t)),console.assert(e>this._delete_callbacks.length,'"callback" does not match a registered delete callbacks')},b.prototype.size=function(){return l(this._Table.get_id()),this._Table.size()},b.prototype.num_rows=function(){return this.size()},b.prototype.num_columns=function(){let t=this._Table.get_schema(),e=t.columns();const n=e.size();return e.delete(),t.delete(),n-1},b.prototype.schema=function(t=!0){let e=this._Table.get_schema(),n=e.columns(),r=e.types(),i={};for(let e=0;e<n.size();e++){const o=n.get(e);"psp_okey"!==o&&(t&&this.overridden_types[o]?i[o]=this.overridden_types[o]:i[o]=P(r.get(e).value))}return e.delete(),n.delete(),r.delete(),i},b.prototype.validate_expressions=function(t,e=!0){const r={expression_schema:{},expression_alias:{},errors:{}};if(!t||0===t.length)return r;t=T(t);let i=n.make_2d_val_vector();for(let e of t){let t=n.make_val_vector();for(let n of e)t.push_back(n);i.push_back(t),r.expression_alias[e[0]]=e[1]}const o=n.validate_expressions(this._Table,i),a=o.get_expression_schema(),s=o.get_expression_errors(),l=a.keys();for(let t=0;t<l.size();t++){const n=l.get(t);let i=a.get(n);e&&this.overridden_types[n]&&(i=this.overridden_types[n]),r.expression_schema[n]=i}const u=s.keys();for(let t=0;t<u.size();t++){const e=u.get(t),n=s.get(e);r.errors[e]=n}return u.delete(),l.delete(),s.delete(),a.delete(),o.delete(),r},b.prototype.is_valid_filter=function(t){if(t[1]===j.FILTER_OPERATORS.isNull||t[1]===j.FILTER_OPERATORS.isNotNull)return!0;let e=t[2];if(null===e)return!1;const r=this.schema();return!r[t[0]]||"date"!==r[t[0]]&&"datetime"!==r[t[0]]?null!=e:n.is_valid_datetime(t[2])},b.prototype.view=function(t={}){l(this._Table.get_id());let e={};for(const n of Object.keys(t))if(o[n]){if(e[o[n]])throw new Error(`Duplicate configuration parameter "${n}"`);D.has(n)||(console.warn(`Deprecated: "${n}" config parameter, please use "${o[n]}" instead`),D.add(n)),e[o[n]]=t[n]}else if("aggregate"===n){D.has("aggregate")||(console.warn('Deprecated: "aggregate" config parameter has been replaced by "aggregates" and "columns"'),D.add("aggregate")),e.aggregates={},e.columns=[];for(const n of t.aggregate)e.aggregates[n.column]=n.op,e.columns.push(n.column)}else{if(!(a.indexOf(n)>-1))throw new Error(`Unrecognized config parameter "${n}"`);e[n]=t[n]}e.group_by=e.group_by||[],e.split_by=e.split_by||[],e.aggregates=e.aggregates||{},e.filter=e.filter||[],e.sort=e.sort||[],e.expressions=e.expressions||[];const n=this.schema();if(e.expressions.length>0&&(e.expressions=T(e.expressions)),void 0===e.columns&&(e.columns=this.columns(),e.expressions.length>0))for(const t of e.expressions)e.columns.push(t[0]);if(e.filter.length>0)for(let t of e.filter){const e=n[t[0]];t[1]===j.FILTER_OPERATORS.isNull||t[1]===j.FILTER_OPERATORS.isNotNull||"date"!==e&&"datetime"!==e||(t[2]=new Date(t[2]))}let r,i=Math.random()+"";r=e.group_by.length>0||e.split_by.length>0?e.split_by&&e.split_by.length>0?2:1:0;let s=new f(this,r,e,new v(e),i);return this.views.push(s),s},b.prototype.query_columns=function(t,e){const n=this.view(t),r=n.to_columns(e);return n.delete(),r},b.prototype.update=function(t,e){let i;(e=e||{}).port_id=e.port_id||0;let o=this.columns(),a=this._Table.get_schema(),s=a.types(),l=!1,u=!1;if(i=r,t instanceof ArrayBuffer?(i=new Uint8Array(t),l=!0):"string"==typeof t?(","===t[0]&&(t="_"+t),u=!0,l=!0,i=t):(r.init(t),r.names=o.concat(r.names.filter((t=>"__INDEX__"===t))),r.types=k(s).slice(0,o.length),C&&C(r.row_count)),!l){if(0===i.row_count)return void console.warn("table.update called with no data - ignoring");-1!=r.names.indexOf("__INDEX__")&&(this.index?r.types.push(r.types[r.names.indexOf(this.index)]):r.types.push(n.t_dtype.DTYPE_INT32))}try{const t=n.t_op.OP_INSERT;c(i,this._Table,this.index,this.limit,t,!0,l,u,e.port_id).delete(),this.initialized=!0}catch(t){console.error(`Update failed: ${t}`)}finally{a.delete()}},b.prototype.remove=function(t,e){if(!this.index)return void console.error("Cannot call `remove()` on a Table without a user-specified index.");let i;(e=e||{}).port_id=e.port_id||0;let o=this.columns(),a=this._Table.get_schema(),s=a.types(),l=!1;(t=t.map((t=>({[this.index]:t}))))instanceof ArrayBuffer?(i=new Uint8Array(t),l=!0):(r.init(t),r.names=[this.index],r.types=[k(s)[o.indexOf(this.index)]],i=r);try{const t=n.t_op.OP_DELETE;c(i,this._Table,this.index,this.limit,t,!1,l,!1,e.port_id).delete(),this.initialized=!0}catch(t){console.error("Remove failed",t)}finally{a.delete()}},b.prototype.columns=function(){let t=this._Table.get_schema(),e=t.columns(),n=[];for(let t=0;t<e.size();t++){let r=e.get(t);"psp_okey"!==r&&n.push(r)}return t.delete(),e.delete(),n},b.prototype.execute=function(t){t(this)};const j={__module__:n,Server:S,worker:function(){return this},initialize_profile_thread:function(){if(void 0===C){let t=0,e=performance.now();setTimeout((function n(){let r=performance.now();console.log(`${(1e3*t/(r-e)).toFixed(2)} msgs/sec`),t=0,e=r,setTimeout(n,5e3)}),5e3),C=function(e){t+=e},console.log("Profiling initialized")}},memory_usage:function(){const t=performance.memory?JSON.parse(JSON.stringify(performance.memory,["totalJSHeapSize","usedJSHeapSize","jsHeapSizeLimit"])):process.memoryUsage();return t.wasmHeap=n.HEAP8.length,t},table:function(t,e){let i;(e=e||{}).index=e.index||null,e.limit=e.limit||null;let o,a=!1,s={},l=!1;if(t instanceof ArrayBuffer||"undefined"!=typeof Buffer&&t instanceof Buffer?(i=new Uint8Array(t),a=!0):"string"==typeof t?(","===t[0]&&(t="_"+t),l=!0,a=!0,i=t):(r.clean(),s=r.init(t),i=r),e.index&&e.limit)throw`Cannot specify both index '${e.index}' and limit '${e.limit}'.`;try{const t=n.t_op.OP_INSERT;return o=c(i,void 0,e.index,e.limit,t,!1,a,l,0),new b(o,e.index,e.limit,s)}catch(t){throw o&&o.delete(),console.error(`Table initialization failed: ${t}`),t}}};for(let t of Object.keys(e))j[t]=e[t];return"undefined"!=typeof self&&self.addEventListener&&new class extends S{constructor(t){super(t),self.addEventListener("message",(t=>this.process(t.data)),!1)}post(t,e){self.postMessage(t,e)}init(t){if("undefined"==typeof WebAssembly)throw new Error("WebAssembly not supported");n({wasmBinary:t.buffer,wasmJSMethod:"native-wasm",locateFile:t=>t}).then((e=>{n=e,n.init(),super.init(t)}))}}(j),j}(r)})()})();
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective.worker.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/x-javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective_with_viewer.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/x-javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>perspective@2.7.1</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>17b7c3a70ea397da54d0.wasm</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/wasm</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>97b00c61a5be7eb2e2c8.wasm</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/wasm</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/**
ColorBrewer colors for chroma.js
Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The
Pennsylvania State University.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
@preserve
*/
/**
* @license
*
* chroma.js - JavaScript library for color conversions
*
* Copyright (c) 2011-2017, Gregor Aisch
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name Gregor Aisch may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>LICENSE.txt</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/x-unknown-content-type</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
(()=>{var e={748:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>Y,get_type_config:()=>B,override:()=>D,shared_worker:()=>J,websocket:()=>U,worker:()=>V});var o=r(488),i=r.n(o);const s=r.p+"97b00c61a5be7eb2e2c8.wasm";var n=Object.defineProperty,a={};((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(a,{COLUMN_SEPARATOR_STRING:()=>v,CONFIG_ALIASES:()=>_,CONFIG_VALID_KEYS:()=>h,DATA_TYPES:()=>l,FILTER_OPERATORS:()=>g,SORT_ORDERS:()=>u,SORT_ORDER_IDS:()=>c,TYPE_AGGREGATES:()=>m,TYPE_FILTERS:()=>k});var l={integer:"integer",float:"float",string:"string",boolean:"boolean",date:"date",datetime:"datetime",object:"object"},_={row_pivot:"group_by","row-pivot":"group_by","row-pivots":"group_by",col_pivot:"split_by",col_pivots:"split_by",column_pivot:"split_by","column-pivot":"split_by","column-pivots":"split_by",filters:"filter",sorts:"sort"},h=["version","viewport","group_by","split_by","aggregates","columns","filter","sort","computed_columns","expressions","group_by_depth","split_by_depth","filter_op"],d=["any","avg","abs sum","count","distinct count","dominant","first by index","last by index","last minus first","last","high","join","low","high minus low","max","mean","median","min","pct sum parent","pct sum grand total","stddev","sum","sum abs","sum not null","unique","var"],p=["any","count","distinct count","distinct leaf","dominant","first by index","join","last by index","last","unique"],u=["none","asc","desc","col asc","col desc","asc abs","desc abs","col asc abs","col desc abs"],c=[2,0,1,0,1,3,4,3,4],m={string:p,float:d,integer:d,boolean:["any","count","distinct count","distinct leaf","dominant","first by index","last by index","last","unique"],datetime:p,date:p},g={lessThan:"<",greaterThan:">",equals:"==",lessThanOrEquals:"<=",greaterThanOrEquals:">=",doesNotEqual:"!=",isNull:"is null",isNotNull:"is not null",isIn:"in",isNotIn:"not in",contains:"contains",bitwiseAnd:"&",bitwiseOr:"|",and:"and",or:"or",beginsWith:"begins with",endsWith:"ends with"},f=[g.bitwiseAnd,g.bitwiseOr,g.equals,g.doesNotEqual,g.or,g.and,g.isNull,g.isNotNull],y=[g.lessThan,g.greaterThan,g.equals,g.lessThanOrEquals,g.greaterThanOrEquals,g.doesNotEqual,g.isNull,g.isNotNull],b=[g.equals,g.contains,g.doesNotEqual,g.isIn,g.isNotIn,g.beginsWith,g.endsWith,g.isNull,g.isNotNull],w=[g.lessThan,g.greaterThan,g.equals,g.lessThanOrEquals,g.greaterThanOrEquals,g.doesNotEqual,g.isNull,g.isNotNull],v="|",k={string:b,float:y,integer:y,boolean:f,datetime:w,date:w},E={types:{float:{filter_operator:"==",aggregate:"sum",format:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},string:{filter_operator:"==",aggregate:"count"},integer:{filter_operator:"==",aggregate:"sum",format:{}},boolean:{filter_operator:"==",aggregate:"count"},datetime:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short",timeStyle:"medium"},null_value:-1},date:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short"},null_value:-1}}};function O(e){return e&&"object"==typeof e&&!Array.isArray(e)}function T(e,...t){if(!t.length)return e;let r=t.shift();if(O(e)&&O(r))for(let t in r)O(r[t])?(e[t]||Object.assign(e,{[t]:{}}),T(e[t],r[t])):Object.assign(e,{[t]:r[t]});return T(e,...t)}function N(){return globalThis.__PERSPECTIVE_CONFIG__||(globalThis.__PERSPECTIVE_CONFIG__=T(E,globalThis.__TEMPLATE_CONFIG__||{})),globalThis.__PERSPECTIVE_CONFIG__}var S=new WeakMap,P=0;function A(e,t){return function(){let r,o=Array.prototype.slice.call(arguments,0,arguments.length);for(let e=o.length-1;e>=0;e--)"function"==typeof o[e]&&(r=o.splice(e,1)[0]);let i=S.get(r);S.delete(r);let s={cmd:t||"view_method",name:this._name,method:e,args:o,subscribe:!0,callback_id:i};this._worker.post(s,r,(()=>{})),this._worker.unsubscribe(t,r)}}function j(e,t){return function(){let r,o=Array.prototype.slice.call(arguments,0,arguments.length);for(let e=o.length-1;e>=0;e--)"function"==typeof o[e]&&(r=o.splice(e,1)[0]);P++,S.set(r,P);let i={cmd:t||"view_method",name:this._name,method:e,args:o,subscribe:!0,callback_id:P};this._worker.post(i,r,(()=>{}),!0)}}function x(e,t){return function(){var r=Array.prototype.slice.call(arguments,0,arguments.length);return new Promise(function(o,i){var s={cmd:t||"view_method",name:this._name,method:e,args:r,subscribe:!1};this._worker.post(s,o,i)}.bind(this))}}function I(e,t,r){return new Promise(((o,i)=>{this._worker=e,this._name=Math.random()+"",this._worker.post({cmd:"view",view_name:this._name,table_name:t,config:r},(()=>{o(this)}),i),!0===this._worker._initialized&&!this._worker._features?.wait_for_response&&o(this)}))}function q(e){let t=e;do{for(let r of Object.getOwnPropertyNames(t)){let t=e[r];"constructor"!==r&&"function"==typeof t&&(e[r]=t.bind(e))}}while(t=t!==Object&&Object.getPrototypeOf(t))}function R(e,t,r){return new Promise(((o,i)=>{this._worker=e,this._name=r.name||Math.random()+"",q(this),t.to_arrow?(this._worker.post({cmd:"table",name:this._name,args:[],options:r||{}}),t.to_arrow().then((e=>{this._worker.post({cmd:"table",name:this._name,args:[e],options:r||{}},(()=>{t.on_update((e=>{this.update(e.delta)}),{mode:"row"}),o(this)}),i)}))):this._worker.post({cmd:"table",name:this._name,args:[t],options:r||{}},(()=>{o(this)}),i),!0===this._worker._initialized&&!this._worker._features?.wait_for_response&&o(this)}))}function C(e,t){this._worker=e,this._name=t}I.prototype,I.prototype.get_config=x("get_config"),I.prototype.get_min_max=x("get_min_max"),I.prototype.to_json=x("to_json"),I.prototype.to_arrow=x("to_arrow"),I.prototype.to_columns=x("to_columns"),I.prototype.to_columns_string=x("to_columns_string"),I.prototype.to_csv=x("to_csv"),I.prototype.schema=x("schema"),I.prototype.expression_schema=x("expression_schema"),I.prototype.column_paths=x("column_paths"),I.prototype.num_columns=x("num_columns"),I.prototype.num_rows=x("num_rows"),I.prototype.dimensions=x("dimensions"),I.prototype.set_depth=x("set_depth"),I.prototype.get_row_expanded=x("get_row_expanded"),I.prototype.expand=x("expand"),I.prototype.collapse=x("collapse"),I.prototype.delete=x("delete"),I.prototype.col_to_js_typed_array=x("col_to_js_typed_array"),I.prototype.on_update=j("on_update","view_method"),I.prototype.remove_update=A("remove_update","view_method"),I.prototype.on_delete=j("on_delete","view_method"),I.prototype.remove_delete=A("remove_delete","view_method"),String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var r=Object(this),o=r.length>>>0;if(0===o)return!1;for(var i,s,n=0|t,a=Math.max(n>=0?n:o-Math.abs(n),0);a<o;){if((i=r[a])===(s=e)||"number"==typeof i&&"number"==typeof s&&isNaN(i)&&isNaN(s))return!0;a++}return!1}}),R.prototype.type="table",C.prototype=R.prototype,R.prototype.view=function(e){return new I(this._worker,this._name,e)},R.prototype.query_columns=x("query_columns","table_method"),R.prototype.get_index=x("get_index","table_method"),R.prototype.get_limit=x("get_limit","table_method"),R.prototype.get_num_views=x("get_num_views","table_method"),R.prototype.make_port=x("make_port","table_method"),R.prototype.remove_port=x("remove_port","table_method"),R.prototype.schema=x("schema","table_method"),R.prototype.validate_expressions=x("validate_expressions","table_method"),R.prototype.is_valid_filter=x("is_valid_filter","table_method"),R.prototype.size=x("size","table_method"),R.prototype.num_rows=x("num_rows","table_method"),R.prototype.num_columns=x("num_columns","table_method"),R.prototype.columns=x("columns","table_method"),R.prototype.clear=x("clear","table_method"),R.prototype.replace=x("replace","table_method"),R.prototype.delete=x("delete","table_method"),R.prototype.on_delete=j("on_delete","table_method"),R.prototype.remove=x("remove","table_method"),R.prototype.remove_delete=A("remove_delete","table_method"),R.prototype.update=function(e,t){return new Promise(((r,o)=>{this._worker.post({name:this._name,cmd:"table_method",method:"update",args:[e,t||{}]},r,o,!1)}))},R.prototype.execute=function(e){this._worker.post({cmd:"table_execute",name:this._name,f:e.toString()})};var z=class{constructor(){this._initialized=!1,this._worker={initialized:{value:!1},transferable:!1,msg_id:0,handlers:{},messages:[]},q(this)}unsubscribe(e,t){for(let e of Object.keys(this._worker.handlers))this._worker.handlers[e].resolve===t&&delete this._worker.handlers[e]}post(e,t,r,o=!1){++this._worker.msg_id,(t||r)&&(this._worker.handlers[this._worker.msg_id]={resolve:t,reject:r,keep_alive:o}),e.id=this._worker.msg_id,this._worker.initialized.value?this.send(e):this._worker.messages.push((()=>{this.send(e),("table"===e.cmd||"view"===e.cmd)&&!this._features?.wait_for_response&&t&&t()}))}async memory_usage(){return await new Promise(((e,t)=>{this.post({cmd:"memory_usage"},e,t)}))}async get_hosted_table_names(){return await new Promise(((e,t)=>{this.post({cmd:"get_hosted_table_names"},e,t)}))}initialize_profile_thread(){this._worker.initialized.value?this.send({id:-1,cmd:"init_profile_thread"}):this._worker.messages.push((()=>this.send({id:-1,cmd:"init_profile_thread"})))}send(){throw new Error("send() not implemented")}async open_table(e){return new C(this,e)}_handle(e){if(!this._worker.initialized.value){this._initialized||(this._initialized=!0);let t=this._worker.messages;if(this._worker.initialized.value=!0,this._worker.messages=[],e.data?.data){this._features={};for(let t of e.data.data)this._features[t]=!0}if(t)for(let e in t)t.hasOwnProperty(e)&&t[e]()}if(e.data.id){let t=this._worker.handlers[e.data.id];t&&(e.data.error?t.reject(e.data.error):t.resolve(e.data.data),t.keep_alive||delete this._worker.handlers[e.data.id])}}table(e,t){return new R(this,e,t||{})}terminate(){this._worker.terminate(),this._worker=void 0}},L=class extends z{_ping(){this._ping_loop&&this._ws.send("ping"),this._ping_loop=setTimeout(this._ping.bind(this),3e4)}_close(){clearTimeout(this._ping_loop),this._ping_loop=void 0,this._on_close_callback?.()}_onmessage(e){if("pong"!==e.data)if(this._pending_binary){let t=e.data;if(this._full_binary.set(new Uint8Array(t),this._total_chunk_length),this._total_chunk_length+=t.byteLength,this._total_chunk_length!==this._pending_binary_length)return;t=this._full_binary.buffer;let r={data:{id:this._pending_binary,data:t}};if(void 0!==this._pending_port_id){let e={port_id:this._pending_port_id,delta:t};r.data.data=e}this._handle(r),delete this._pending_binary,delete this._pending_binary_length,delete this._pending_port_id,this._total_chunk_length=0,this._full_binary=null}else(e=JSON.parse(e.data)).binary_length?(this._pending_binary=e.id,this._pending_binary_length=e.binary_length,e.data&&void 0!==e.data.port_id&&(this._pending_port_id=e.data.port_id),this._full_binary=new Uint8Array(this._pending_binary_length)):this._handle({data:e})}constructor(e){super(),this._ws=e,this._ws.binaryType="arraybuffer",this._full_binary,this._total_chunk_length=0,this._pending_binary_length=0,this._ws.onopen=()=>{this.send({id:-1,cmd:"init"})},this._ping(),this._ws.onclose=this._close.bind(this),this._ws.onmessage=this._onmessage.bind(this)}send(e){if(this._ws.readyState!==i().CLOSED){if(e.args&&e.args.length>0&&e.args[0]instanceof ArrayBuffer&&void 0!==e.args[0].byteLength){let t=e;return e.binary_length=e.args[0].byteLength,this._ws.send(JSON.stringify(t)),void this._ws.send(e.args[0])}this._ws.send(JSON.stringify(e))}else console.warn("Websocket connection is already closed.")}terminate(){return new Promise((e=>{this._on_close_callback=e,this._ws.close()}))}},M=!1,F=function(){let e;return function(){return e||(e=new class{async worker(){return await new Worker(r.p+"perspective.worker.js")}async wasm(){let e=await s;if(e instanceof ArrayBuffer&&!e.buffer&&(e=new Uint8Array(e)),e.buffer&&e.buffer instanceof ArrayBuffer)M=!0,length=e.byteLength,this._wasm=e;else if(e instanceof ArrayBuffer)length=e.byteLength,this._wasm=new Uint8Array(e);else{let t=await fetch(e);this._wasm=await t.arrayBuffer()}return this._wasm}}),e}}(),G=class extends z{constructor(e){var t;e&&(t=e,globalThis.__PERSPECTIVE_CONFIG__&&console.warn("Config already initialized!"),globalThis.__PERSPECTIVE_CONFIG__=T(E,t)),super(),this.register()}async register(){let e,t={cmd:"init",config:N()};if(typeof WebAssembly>"u")throw new Error("WebAssembly not supported.");for(var r in[e,t.buffer]=await Promise.all([F().worker(),F().wasm()]),this._worker)e[r]=this._worker[r];this._worker=e,this._worker.addEventListener("message",this._handle.bind(this)),this._worker.postMessage(t),this._detect_transferable()}send(e){this._worker.transferable&&e.args&&e.args[0]instanceof ArrayBuffer?this._worker.postMessage(e,[e.args[0]]):this._worker.postMessage(e)}terminate(){this._worker.terminate(),this._worker=void 0}get transferable(){return this._worker?.transferable||!1}get inline(){return M}_detect_transferable(){var e=new ArrayBuffer(1);this._worker.postMessage(e,[e]),this._worker.transferable=0===e.byteLength}},W=function(){let e,t;return{getInstance:function(r){void 0===e&&(e=new G(r));let o=JSON.stringify(r);if(t&&o!==t)throw new Error("Configuration object for shared_worker() has changed - this is probably a bug in your application.");return t=o,e}}}(),B=function e(t){let r={};if(N().types[t]&&Object.assign(r,N().types[t]),r.type){let t=e(r.type);return Object.assign(t,r),t}return r};function D(e){return F().set(e)}function V(e){return new G(e)}function U(e=window.location.origin.replace("http","ws")){return new L(new WebSocket(e))}function J(e){return W.getInstance(e)}var Y={override:D,worker:V,websocket:U,shared_worker:J,...Object.keys(a)}},488:e=>{"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var o=t.getElementsByTagName("script");if(o.length)for(var i=o.length-1;i>-1&&!e;)e=o[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{const e=r(748);window.Worker=e.worker()})()})();
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
(()=>{"use strict";var e={508:(e,t,r)=>{e.exports=r.p+"97b00c61a5be7eb2e2c8.wasm"}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.m=e,r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&!e;)e=n[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),r.b=self.location+"",(()=>{var e,t={};r.r(t),r.d(t,{COLUMN_SEPARATOR_STRING:()=>g,CONFIG_ALIASES:()=>o,CONFIG_VALID_KEYS:()=>s,DATA_TYPES:()=>i,FILTER_OPERATORS:()=>h,SORT_ORDERS:()=>c,SORT_ORDER_IDS:()=>u,TYPE_AGGREGATES:()=>d,TYPE_FILTERS:()=>y});const n=(e="file:///home/benutzer/perspective/node_modules/@finos/perspective/dist/pkg/web/perspective.cpp.js",function(t={}){var n,i,o=t;o.ready=new Promise(((e,t)=>{n=e,i=t}));var s,a=Object.assign({},o),l=[],c="./this.program",u=(e,t)=>{throw t},d="";"undefined"!=typeof document&&document.currentScript&&(d=document.currentScript.src),e&&(d=e),d=0!==d.indexOf("blob:")?d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var h,p,f=o.print||console.log.bind(console),_=o.printErr||console.error.bind(console);Object.assign(o,a),a=null,o.arguments&&(l=o.arguments),o.thisProgram&&(c=o.thisProgram),o.quit&&(u=o.quit),o.wasmBinary&&(h=o.wasmBinary),"object"!=typeof WebAssembly&&F("no native wasm support detected");var m,g,y,v,b,w,T,$,P,k,C,O=!1;function A(){var e=p.buffer;o.HEAP8=g=new Int8Array(e),o.HEAP16=v=new Int16Array(e),o.HEAPU8=y=new Uint8Array(e),o.HEAPU16=b=new Uint16Array(e),o.HEAP32=w=new Int32Array(e),o.HEAPU32=T=new Uint32Array(e),o.HEAPF32=$=new Float32Array(e),o.HEAPF64=C=new Float64Array(e),o.HEAP64=P=new BigInt64Array(e),o.HEAPU64=k=new BigUint64Array(e)}var E=[],x=[],S=[],j=[],N=0,R=null,V=null;function F(e){o.onAbort&&o.onAbort(e),_(e="Aborted("+e+")"),O=!0,m=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var D,I,W=e=>e.startsWith("data:application/octet-stream;base64,");function M(e){if(e==D&&h)return new Uint8Array(h);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}function U(e,t,r){return function(e){return h||"function"!=typeof fetch?Promise.resolve().then((()=>M(e))):fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>M(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{_(`failed to asynchronously prepare wasm: ${e}`),F(e)}))}o.locateFile?W(D="perspective.cpp.wasm")||(I=D,D=o.locateFile?o.locateFile(I,d):d+I):D=new URL(r(508),r.b).href;var z={848052:e=>{throw new Error(G(e))}};function H(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var q=e=>{for(;e.length>0;)e.shift()(o)},B=o.noExitRuntime||!0,L="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,J=(e,t,r)=>{for(var n=(t>>>=0)+r,i=t;e[i]&&!(i>=n);)++i;if(i-t>16&&e.buffer&&L)return L.decode(e.subarray(t,i));for(var o="";t<i;){var s=e[t++];if(128&s){var a=63&e[t++];if(192!=(224&s)){var l=63&e[t++];if((s=224==(240&s)?(15&s)<<12|a<<6|l:(7&s)<<18|a<<12|l<<6|63&e[t++])<65536)o+=String.fromCharCode(s);else{var c=s-65536;o+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else o+=String.fromCharCode((31&s)<<6|a)}else o+=String.fromCharCode(s)}return o},G=(e,t)=>(e>>>=0)?J(y,e,t):"",Y=e=>e<-9007199254740992||e>9007199254740992?NaN:Number(e),X=(e,t,r,n)=>{if(!(n>0))return 0;for(var i=r>>>=0,o=r+n-1,s=0;s<e.length;++s){var a=e.charCodeAt(s);if(a>=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),a<=127){if(r>=o)break;t[r++>>>0]=a}else if(a<=2047){if(r+1>=o)break;t[r++>>>0]=192|a>>6,t[r++>>>0]=128|63&a}else if(a<=65535){if(r+2>=o)break;t[r++>>>0]=224|a>>12,t[r++>>>0]=128|a>>6&63,t[r++>>>0]=128|63&a}else{if(r+3>=o)break;t[r++>>>0]=240|a>>18,t[r++>>>0]=128|a>>12&63,t[r++>>>0]=128|a>>6&63,t[r++>>>0]=128|63&a}}return t[r>>>0]=0,r-i},Z={},K=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Q(e){return this.fromWireType(w[e>>>2>>>0])}var ee,te,re,ne={},ie={},oe={},se=e=>{throw new ee(e)},ae=(e,t,r)=>{function n(t){var n=r(t);n.length!==e.length&&se("Mismatched type converter count");for(var i=0;i<e.length;++i)de(e[i],n[i])}e.forEach((function(e){oe[e]=t}));var i=new Array(t.length),o=[],s=0;t.forEach(((e,t)=>{ie.hasOwnProperty(e)?i[t]=ie[e]:(o.push(e),ne.hasOwnProperty(e)||(ne[e]=[]),ne[e].push((()=>{i[t]=ie[e],++s===o.length&&n(i)})))})),0===o.length&&n(i)},le=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},ce=e=>{for(var t="",r=e;y[r>>>0];)t+=te[y[r++>>>0]];return t},ue=e=>{throw new re(e)};function de(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(e,t,r={}){var n=t.name;if(e||ue(`type "${n}" must have a positive integer typeid pointer`),ie.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ue(`Cannot register type '${n}' twice`)}if(ie[e]=t,delete oe[e],ne.hasOwnProperty(e)){var i=ne[e];delete ne[e],i.forEach((e=>e()))}}(e,t,r)}var he,pe=(e,t,r)=>{switch(t){case 1:return r?e=>g[e>>>0>>>0]:e=>y[e>>>0>>>0];case 2:return r?e=>v[e>>>1>>>0]:e=>b[e>>>1>>>0];case 4:return r?e=>w[e>>>2>>>0]:e=>T[e>>>2>>>0];case 8:return r?e=>P[e>>>3]:e=>k[e>>>3];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},fe=e=>{ue(e.$$.ptrType.registeredClass.name+" instance already deleted")},_e=!1,me=e=>{},ge=e=>{e.count.value-=1,0===e.count.value&&(e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)})(e)},ye=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var n=ye(e,t,r.baseClass);return null===n?null:r.downcast(n)},ve={},be=[],we=()=>{for(;be.length;){var e=be.pop();e.$$.deleteScheduled=!1,e.delete()}},Te={},$e=(e,t)=>(t.ptrType&&t.ptr||se("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&se("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Pe(Object.create(e,{$$:{value:t}})));var Pe=e=>"undefined"==typeof FinalizationRegistry?(Pe=e=>e,e):(_e=new FinalizationRegistry((e=>{ge(e.$$)})),Pe=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};_e.register(e,r,e)}return e},me=e=>_e.unregister(e),Pe(e));function ke(){}var Ce=(e,t)=>Object.defineProperty(t,"name",{value:e}),Oe=(e,t,r)=>{if(void 0===e[t].overloadTable){var n=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ue(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[n.argCount]=n}},Ae=(e,t,r)=>{o.hasOwnProperty(e)?((void 0===r||void 0!==o[e].overloadTable&&void 0!==o[e].overloadTable[r])&&ue(`Cannot register public name '${e}' twice`),Oe(o,e,e),o.hasOwnProperty(r)&&ue(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),o[e].overloadTable[r]=t):(o[e]=t,void 0!==r&&(o[e].numArguments=r))};function Ee(e,t,r,n,i,o,s,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=i,this.getActualType=o,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}var xe=(e,t,r)=>{for(;t!==r;)t.upcast||ue(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Se(e,t){if(null===t)return this.isReference&&ue(`null is not a valid ${this.name}`),0;t.$$||ue(`Cannot pass "${le(t)}" as a ${this.name}`),t.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xe(t.$$.ptr,r,this.registeredClass)}function je(e,t){var r;if(null===t)return this.isReference&&ue(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ue(`Cannot pass "${le(t)}" as a ${this.name}`),t.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass;if(r=xe(t.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ue("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ue(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var i=t.clone();r=this.rawShare(r,Ze.toHandle((()=>i.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:ue("Unsupporting sharing policy")}return r}function Ne(e,t){if(null===t)return this.isReference&&ue(`null is not a valid ${this.name}`),0;t.$$||ue(`Cannot pass "${le(t)}" as a ${this.name}`),t.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xe(t.$$.ptr,r,this.registeredClass)}function Re(e){return this.fromWireType(T[e>>>2>>>0])}function Ve(e,t,r,n,i,o,s,a,l,c,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=n,this.isSmartPointer=i,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=l,this.rawShare=c,this.rawDestructor=u,i||void 0!==t.baseClass?this.toWireType=je:n?(this.toWireType=Se,this.destructorFunction=null):(this.toWireType=Ne,this.destructorFunction=null)}var Fe,De,Ie=(e,t,r)=>{o.hasOwnProperty(e)||se("Replacing nonexistant public symbol"),void 0!==o[e].overloadTable&&void 0!==r?o[e].overloadTable[r]=t:(o[e]=t,o[e].argCount=r)},We=[],Me=(e,t)=>{e=ce(e);var r,n,i=((n=We[r=t])||(r>=We.length&&(We.length=r+1),We[r]=n=Fe.get(r)),n);return"function"!=typeof i&&ue(`unknown function pointer with signature ${e}: ${t}`),i},Ue=e=>{var t=Nt(e),r=ce(t);return St(t),r},ze=(e,t)=>{var r=[],n={};throw t.forEach((function e(t){n[t]||ie[t]||(oe[t]?oe[t].forEach(e):(r.push(t),n[t]=!0))})),new De(`${e}: `+r.map(Ue).join([", "]))},He=(e,t)=>{for(var r=[],n=0;n<e;n++)r.push(T[t+4*n>>>2>>>0]);return r};function qe(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=Ce(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var n=new r,i=e.apply(n,t);return i instanceof Object?i:n}function Be(e,t,r,n,i,o){var s=t.length;s<2&&ue("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,l=!1,c=1;c<t.length;++c)if(null!==t[c]&&void 0===t[c].destructorFunction){l=!0;break}var u="void"!==t[0].name,d="",h="";for(c=0;c<s-2;++c)d+=(0!==c?", ":"")+"arg"+c,h+=(0!==c?", ":"")+"arg"+c+"Wired";var p=`\n return function (${d}) {\n if (arguments.length !== ${s-2}) {\n throwBindingError('function ${e} called with ' + arguments.length + ' arguments, expected ${s-2}');\n }`;l&&(p+="var destructors = [];\n");var f=l?"destructors":"null",_=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],m=[ue,n,i,K,t[0],t[1]];for(a&&(p+="var thisWired = classParam.toWireType("+f+", this);\n"),c=0;c<s-2;++c)p+="var arg"+c+"Wired = argType"+c+".toWireType("+f+", arg"+c+"); // "+t[c+2].name+"\n",_.push("argType"+c),m.push(t[c+2]);if(a&&(h="thisWired"+(h.length>0?", ":"")+h),p+=(u||o?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",l)p+="runDestructors(destructors);\n";else for(c=a?1:2;c<t.length;++c){var g=1===c?"thisWired":"arg"+(c-2)+"Wired";null!==t[c].destructorFunction&&(p+=g+"_dtor("+g+"); // "+t[c].name+"\n",_.push(g+"_dtor"),m.push(t[c].destructorFunction))}u&&(p+="var ret = retType.fromWireType(rv);\nreturn ret;\n"),p+="}\n",_.push(p);var y=qe(Function,_).apply(null,m);return Ce(e,y)}var Le=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e};function Je(){this.allocated=[void 0],this.freelist=[]}var Ge=new Je;function Ye(e){(e>>>=0)>=Ge.reserved&&0==--Ge.get(e).refcount&&Ge.free(e)}var Xe,Ze={toValue:e=>(e||ue("Cannot use deleted val. handle = "+e),Ge.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ge.allocate({refcount:1,value:e})}}},Ke=(e,t,r)=>{switch(t){case 1:return r?function(e){return this.fromWireType(g[e>>>0>>>0])}:function(e){return this.fromWireType(y[e>>>0>>>0])};case 2:return r?function(e){return this.fromWireType(v[e>>>1>>>0])}:function(e){return this.fromWireType(b[e>>>1>>>0])};case 4:return r?function(e){return this.fromWireType(w[e>>>2>>>0])}:function(e){return this.fromWireType(T[e>>>2>>>0])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Qe=(e,t)=>{var r=ie[e];return void 0===r&&ue(t+" has unknown type "+Ue(e)),r},et=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType($[e>>>2>>>0])};case 8:return function(e){return this.fromWireType(C[e>>>3>>>0])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},tt=e=>{for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n<=127?t++:n<=2047?t+=2:n>=55296&&n<=57343?(t+=4,++r):t+=3}return t},rt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,nt=(e,t)=>{for(var r=e,n=r>>1,i=n+t/2;!(n>=i)&&b[n>>>0];)++n;if((r=n<<1)-e>32&&rt)return rt.decode(y.subarray(e>>>0,r>>>0));for(var o="",s=0;!(s>=t/2);++s){var a=v[e+2*s>>>1>>>0];if(0==a)break;o+=String.fromCharCode(a)}return o},it=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,i=(r-=2)<2*e.length?r/2:e.length,o=0;o<i;++o){var s=e.charCodeAt(o);v[t>>>1>>>0]=s,t+=2}return v[t>>>1>>>0]=0,t-n},ot=e=>2*e.length,st=(e,t)=>{for(var r=0,n="";!(r>=t/4);){var i=w[e+4*r>>>2>>>0];if(0==i)break;if(++r,i>=65536){var o=i-65536;n+=String.fromCharCode(55296|o>>10,56320|1023&o)}else n+=String.fromCharCode(i)}return n},at=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var n=t>>>=0,i=n+r-4,o=0;o<e.length;++o){var s=e.charCodeAt(o);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),w[t>>>2>>>0]=s,(t+=4)+4>i)break}return w[t>>>2>>>0]=0,t-n},lt=e=>{for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n>=55296&&n<=57343&&++r,t+=4}return t},ct=(e,t,r)=>{var n=[],i=e.toWireType(n,r);return n.length&&(T[t>>>2>>>0]=Ze.toHandle(n)),i},ut=[],dt={},ht=e=>{var t=dt[e];return void 0===t?ce(e):t},pt=()=>"object"==typeof globalThis?globalThis:Function("return this")();Reflect.construct,Xe=()=>performance.now();var ft,_t,mt=[],gt={},yt=()=>{if(!yt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in gt)void 0===gt[t]?delete e[t]:e[t]=gt[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);yt.strings=r}return yt.strings},vt=[null,[],[]],bt=e=>{m=e,B||(o.onExit&&o.onExit(e),O=!0),u(e,new H(e))},wt=e=>e%4==0&&(e%100!=0||e%400==0),Tt=(e,t)=>{for(var r=0,n=0;n<=t;r+=e[n++]);return r},$t=[31,29,31,30,31,30,31,31,30,31,30,31],Pt=[31,28,31,30,31,30,31,31,30,31,30,31],kt=(e,t)=>{for(var r=new Date(e.getTime());t>0;){var n=wt(r.getFullYear()),i=r.getMonth(),o=(n?$t:Pt)[i];if(!(t>o-r.getDate()))return r.setDate(r.getDate()+t),r;t-=o-r.getDate()+1,r.setDate(1),i<11?r.setMonth(i+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1))}return r},Ct=e=>parseInt(e);ee=o.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},(()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);te=e})(),re=o.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Object.assign(ke.prototype,{isAliasOf(e){if(!(this instanceof ke))return!1;if(!(e instanceof ke))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,i=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return t===n&&r===i},clone(){if(this.$$.ptr||fe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Pe(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||fe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),me(this),ge(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||fe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),be.push(this),1===be.length&&he&&he(we),this.$$.deleteScheduled=!0,this}}),o.getInheritedInstanceCount=()=>Object.keys(Te).length,o.getLiveInheritedInstances=()=>{var e=[];for(var t in Te)Te.hasOwnProperty(t)&&e.push(Te[t]);return e},o.flushPendingDeletes=we,o.setDelayFunction=e=>{he=e,be.length&&he&&he(we)},Object.assign(Ve.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:8,readValueFromPointer:Re,deleteObject(e){null!==e&&e.delete()},fromWireType:function(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=((e,t)=>(t=((e,t)=>{for(void 0===t&&ue("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t})(e,t),Te[t]))(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var n=r.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o,s=this.registeredClass.getActualType(t),a=ve[s];if(!a)return i.call(this);o=this.isConst?a.constPointerType:a.pointerType;var l=ye(t,this.registeredClass,o.registeredClass);return null===l?i.call(this):this.isSmartPointer?$e(o.registeredClass.instancePrototype,{ptrType:o,ptr:l,smartPtrType:this,smartPtr:e}):$e(o.registeredClass.instancePrototype,{ptrType:o,ptr:l})}}),De=o.UnboundTypeError=(ft=Error,(_t=Ce("UnboundTypeError",(function(e){this.name="UnboundTypeError",this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}))).prototype=Object.create(ft.prototype),_t.prototype.constructor=_t,_t.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},_t),Object.assign(Je.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}}),Ge.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Ge.reserved=Ge.allocated.length,o.count_emval_handles=()=>{for(var e=0,t=Ge.reserved;t<Ge.allocated.length;++t)void 0!==Ge.allocated[t]&&++e;return e};var Ot,At={__syscall_ftruncate64:function(e,t){t=Y(t)},__syscall_getdents64:function(e,t,r){},_embind_finalize_value_object:function(e){var t=Z[e>>>=0];delete Z[e];var r=t.rawConstructor,n=t.rawDestructor,i=t.fields,o=i.map((e=>e.getterReturnType)).concat(i.map((e=>e.setterArgumentType)));ae([e],o,(e=>{var o={};return i.forEach(((t,r)=>{var n=t.fieldName,s=e[r],a=t.getter,l=t.getterContext,c=e[r+i.length],u=t.setter,d=t.setterContext;o[n]={read:e=>s.fromWireType(a(l,e)),write:(e,t)=>{var r=[];u(d,e,c.toWireType(r,t)),K(r)}}})),[{name:t.name,fromWireType:e=>{var t={};for(var r in o)t[r]=o[r].read(e);return n(e),t},toWireType:(e,t)=>{for(var i in o)if(!(i in t))throw new TypeError(`Missing field: "${i}"`);var s=r();for(i in o)o[i].write(s,t[i]);return null!==e&&e.push(n,s),s},argPackAdvance:8,readValueFromPointer:Q,destructorFunction:n}]}))},_embind_register_bigint:function(e,t,r,n,i){e>>>=0,r>>>=0;var o=-1!=(t=ce(t>>>=0)).indexOf("u");o&&(i=(1n<<64n)-1n),de(e,{name:t,fromWireType:e=>e,toWireType:function(e,r){if("bigint"!=typeof r&&"number"!=typeof r)throw new TypeError(`Cannot convert "${le(r)}" to ${this.name}`);if(r<n||r>i)throw new TypeError(`Passing a number "${le(r)}" from JS side to C/C++ side to an argument of type "${t}", which is outside the valid range [${n}, ${i}]!`);return r},argPackAdvance:8,readValueFromPointer:pe(t,r,!o),destructorFunction:null})},_embind_register_bool:function(e,t,r,n){de(e>>>=0,{name:t=ce(t>>>=0),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:n},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(y[e>>>0])},destructorFunction:null})},_embind_register_class:function(e,t,r,n,i,o,s,a,l,c,u,d,h){e>>>=0,t>>>=0,r>>>=0,n>>>=0,i>>>=0,o>>>=0,s>>>=0,a>>>=0,l>>>=0,c>>>=0,d>>>=0,h>>>=0,u=ce(u>>>=0),o=Me(i,o),a&&(a=Me(s,a)),c&&(c=Me(l,c)),h=Me(d,h);var p=(e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?`_${e}`:e})(u);Ae(p,(function(){ze(`Cannot construct ${u} due to unbound types`,[n])})),ae([e,t,r],n?[n]:[],(function(t){var r,i;t=t[0],i=n?(r=t.registeredClass).instancePrototype:ke.prototype;var s=Ce(u,(function(){if(Object.getPrototypeOf(this)!==l)throw new re("Use 'new' to construct "+u);if(void 0===d.constructor_body)throw new re(u+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new re(`Tried to invoke ctor of ${u} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),l=Object.create(i,{constructor:{value:s}});s.prototype=l;var d=new Ee(u,s,l,h,r,o,a,c);d.baseClass&&(void 0===d.baseClass.__derivedClasses&&(d.baseClass.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d));var f=new Ve(u,d,!0,!1,!1),_=new Ve(u+"*",d,!1,!1,!1),m=new Ve(u+" const*",d,!1,!0,!1);return ve[e]={pointerType:_,constPointerType:m},Ie(p,s),[f,_,m]}))},_embind_register_class_constructor:function(e,t,r,n,i,o){e>>>=0,n>>>=0,i>>>=0,o>>>=0;var s=He(t,r>>>=0);i=Me(n,i),ae([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new re(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{ze(`Cannot construct ${e.name} due to unbound types`,s)},ae([],s,(n=>(n.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Be(r,n,null,i,o),[]))),[]}))},_embind_register_class_function:function(e,t,r,n,i,o,s,a,l){e>>>=0,t>>>=0,i>>>=0,o>>>=0,s>>>=0;var c=He(r,n>>>=0);t=ce(t),t=Le(t),o=Me(i,o),ae([],[e],(function(e){var n=`${(e=e[0]).name}.${t}`;function i(){ze(`Cannot call ${n} due to unbound types`,c)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var u=e.registeredClass.instancePrototype,d=u[t];return void 0===d||void 0===d.overloadTable&&d.className!==e.name&&d.argCount===r-2?(i.argCount=r-2,i.className=e.name,u[t]=i):(Oe(u,t,n),u[t].overloadTable[r-2]=i),ae([],c,(function(i){var a=Be(n,i,e,o,s,l);return void 0===u[t].overloadTable?(a.argCount=r-2,u[t]=a):u[t].overloadTable[r-2]=a,[]})),[]}))},_embind_register_emval:function(e,t){de(e>>>=0,{name:t=ce(t>>>=0),fromWireType:e=>{var t=Ze.toValue(e);return Ye(e),t},toWireType:(e,t)=>Ze.toHandle(t),argPackAdvance:8,readValueFromPointer:Q,destructorFunction:null})},_embind_register_enum:function(e,t,r,n){function i(){}e>>>=0,r>>>=0,t=ce(t>>>=0),i.values={},de(e,{name:t,constructor:i,fromWireType:function(e){return this.constructor.values[e]},toWireType:(e,t)=>t.value,argPackAdvance:8,readValueFromPointer:Ke(t,r,n),destructorFunction:null}),Ae(t,i)},_embind_register_enum_value:function(e,t,r){t>>>=0,r>>>=0;var n=Qe(e>>>=0,"enum");t=ce(t);var i=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ce(`${n.name}_${t}`,(function(){}))}});i.values[r]=o,i[t]=o},_embind_register_float:function(e,t,r){r>>>=0,de(e>>>=0,{name:t=ce(t>>>=0),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:et(t,r),destructorFunction:null})},_embind_register_function:function(e,t,r,n,i,o,s){e>>>=0,n>>>=0,i>>>=0,o>>>=0;var a=He(t,r>>>=0);e=ce(e),e=Le(e),i=Me(n,i),Ae(e,(function(){ze(`Cannot call ${e} due to unbound types`,a)}),t-1),ae([],a,(function(r){var n=[r[0],null].concat(r.slice(1));return Ie(e,Be(e,n,null,i,o,s),t-1),[]}))},_embind_register_integer:function(e,t,r,n,i){e>>>=0,r>>>=0,t=ce(t>>>=0),-1===i&&(i=4294967295);var o=e=>e;if(0===n){var s=32-8*r;o=e=>e<<s>>>s}var a=t.includes("unsigned");de(e,{name:t,fromWireType:o,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:pe(t,r,0!==n),destructorFunction:null})},_embind_register_memory_view:function(e,t,r){r>>>=0;var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][t];function i(e){var t=T[e>>>2>>>0],r=T[e+4>>>2>>>0];return new n(g.buffer,r,t)}de(e>>>=0,{name:r=ce(r),fromWireType:i,argPackAdvance:8,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},_embind_register_smart_ptr:function(e,t,r,n,i,o,s,a,l,c,u,d){e>>>=0,t>>>=0,i>>>=0,o>>>=0,s>>>=0,a>>>=0,l>>>=0,c>>>=0,u>>>=0,d>>>=0,r=ce(r>>>=0),o=Me(i,o),a=Me(s,a),c=Me(l,c),d=Me(u,d),ae([e],[t],(function(e){return e=e[0],[new Ve(r,e.registeredClass,!1,!1,!0,e,n,o,a,c,d)]}))},_embind_register_std_string:function(e,t){e>>>=0;var r="std::string"===(t=ce(t>>>=0));de(e,{name:t,fromWireType(e){var t,n=T[e>>>2>>>0],i=e+4;if(r)for(var o=i,s=0;s<=n;++s){var a=i+s;if(s==n||0==y[a>>>0]){var l=G(o,a-o);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),o=a+1}}else{var c=new Array(n);for(s=0;s<n;++s)c[s]=String.fromCharCode(y[i+s>>>0]);t=c.join("")}return St(e),t},toWireType(e,t){var n;t instanceof ArrayBuffer&&(t=new Uint8Array(t));var i="string"==typeof t;i||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||ue("Cannot pass non-string to std::string"),n=r&&i?tt(t):t.length;var o=xt(4+n+1),s=o+4;if(T[o>>>2>>>0]=n,r&&i)X(t,y,s,n+1);else if(i)for(var a=0;a<n;++a){var l=t.charCodeAt(a);l>255&&(St(s),ue("String has UTF-16 code units that do not fit in 8 bits")),y[s+a>>>0]=l}else for(a=0;a<n;++a)y[s+a>>>0]=t[a];return null!==e&&e.push(St,o),o},argPackAdvance:8,readValueFromPointer:Re,destructorFunction(e){St(e)}})},_embind_register_std_wstring:function(e,t,r){var n,i,o,s,a;e>>>=0,t>>>=0,r=ce(r>>>=0),2===t?(n=nt,i=it,s=ot,o=()=>b,a=1):4===t&&(n=st,i=at,s=lt,o=()=>T,a=2),de(e,{name:r,fromWireType:e=>{for(var r,i=T[e>>>2>>>0],s=o(),l=e+4,c=0;c<=i;++c){var u=e+4+c*t;if(c==i||0==s[u>>>a]){var d=n(l,u-l);void 0===r?r=d:(r+=String.fromCharCode(0),r+=d),l=u+t}}return St(e),r},toWireType:(e,n)=>{"string"!=typeof n&&ue(`Cannot pass non-string to C++ string type ${r}`);var o=s(n),l=xt(4+o+t);return T[l>>>2]=o>>a,i(n,l+4,o+t),null!==e&&e.push(St,l),l},argPackAdvance:8,readValueFromPointer:Q,destructorFunction(e){St(e)}})},_embind_register_value_object:function(e,t,r,n,i,o){t>>>=0,r>>>=0,n>>>=0,i>>>=0,o>>>=0,Z[e>>>=0]={name:ce(t),rawConstructor:Me(r,n),rawDestructor:Me(i,o),fields:[]}},_embind_register_value_object_field:function(e,t,r,n,i,o,s,a,l,c){t>>>=0,r>>>=0,n>>>=0,i>>>=0,o>>>=0,s>>>=0,a>>>=0,l>>>=0,c>>>=0,Z[e>>>=0].fields.push({fieldName:ce(t),getterReturnType:r,getter:Me(n,i),getterContext:o,setterArgumentType:s,setter:Me(a,l),setterContext:c})},_embind_register_void:function(e,t){de(e>>>=0,{isVoid:!0,name:t=ce(t>>>=0),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},_emval_as:function(e,t,r){return e>>>=0,t>>>=0,r>>>=0,e=Ze.toValue(e),t=Qe(t,"emval::as"),ct(t,r,e)},_emval_call:function(e,t,r,n){return t>>>=0,r>>>=0,n>>>=0,(e=ut[e>>>=0])(null,t=Ze.toValue(t),r,n)},_emval_call_method:function(e,t,r,n,i){return t>>>=0,r>>>=0,n>>>=0,i>>>=0,(e=ut[e>>>=0])(t=Ze.toValue(t),t[r=ht(r)],n,i)},_emval_decref:Ye,_emval_get_global:function(e){return 0==(e>>>=0)?Ze.toHandle(pt()):(e=ht(e),Ze.toHandle(pt()[e]))},_emval_get_method_caller:function(e,t,r){var n=((e,t)=>{for(var r=new Array(e),n=0;n<e;++n)r[n]=Qe(T[t+4*n>>>2>>>0],"parameter "+n);return r})(e,t>>>=0),i=n.shift();e--;var o="return function (obj, func, destructorsRef, args) {\n",s=0,a=[];0===r&&a.push("obj");for(var l=["retType"],c=[i],u=0;u<e;++u)a.push("arg"+u),l.push("argType"+u),c.push(n[u]),o+=` var arg${u} = argType${u}.readValueFromPointer(args${s?"+"+s:""});\n`,s+=n[u].argPackAdvance;for(o+=` var rv = ${1===r?"new func":"func.call"}(${a.join(", ")});\n`,u=0;u<e;++u)n[u].deleteObject&&(o+=` argType${u}.deleteObject(arg${u});\n`);i.isVoid||(l.push("emval_returnValue"),c.push(ct),o+=" return emval_returnValue(retType, destructorsRef, rv);\n"),o+="};\n",l.push(o);var d,h,p=qe(Function,l).apply(null,c),f=`methodCaller<(${n.map((e=>e.name)).join(", ")}) => ${i.name}>`;return d=Ce(f,p),h=ut.length,ut.push(d),h},_emval_get_module_property:function(e){return e=ht(e>>>=0),Ze.toHandle(o[e])},_emval_get_property:function(e,t){return e>>>=0,t>>>=0,e=Ze.toValue(e),t=Ze.toValue(t),Ze.toHandle(e[t])},_emval_incref:function(e){(e>>>=0)>4&&(Ge.get(e).refcount+=1)},_emval_instanceof:function(e,t){return e>>>=0,t>>>=0,(e=Ze.toValue(e))instanceof Ze.toValue(t)},_emval_new_array:function(){return Ze.toHandle([])},_emval_new_cstring:function(e){return e>>>=0,Ze.toHandle(ht(e))},_emval_new_object:function(){return Ze.toHandle({})},_emval_run_destructors:function(e){e>>>=0;var t=Ze.toValue(e);K(t),Ye(e)},_emval_set_property:function(e,t,r){e>>>=0,t>>>=0,r>>>=0,e=Ze.toValue(e),t=Ze.toValue(t),r=Ze.toValue(r),e[t]=r},_emval_take_value:function(e,t){t>>>=0;var r=(e=Qe(e>>>=0,"_emval_take_value")).readValueFromPointer(t);return Ze.toHandle(r)},_emval_typeof:function(e){return e>>>=0,e=Ze.toValue(e),Ze.toHandle(typeof e)},clock_time_get:function(e,t,r){if(t=Y(t),r>>>=0,0!=(n=e)&&1!=n&&2!=n&&3!=n)return 28;var n,i;i=0===e?Date.now():Xe();var o=Math.round(1e3*i*1e3);return w[r>>>2>>>0]=o>>>0,w[r+4>>>2>>>0]=o/Math.pow(2,32)>>>0,0},emscripten_asm_const_int:function(e,t,r){return((e,t,r)=>{var n=((e,t)=>{var r;for(mt.length=0;r=y[e++>>>0];){var n=105!=r;t+=(n&=112!=r)&&t%8?4:0,mt.push(112==r?T[t>>>2>>>0]:106==r?P[t>>>3]:105==r?w[t>>>2>>>0]:C[t>>>3>>>0]),t+=n?8:4}return mt})(t,r);return z[e].apply(null,n)})(e>>>=0,t>>>=0,r>>>=0)},emscripten_notify_memory_growth:function(e){A()},environ_get:function(e,t){e>>>=0,t>>>=0;var r=0;return yt().forEach(((n,i)=>{var o=t+r;T[e+4*i>>>2>>>0]=o,((e,t)=>{for(var r=0;r<e.length;++r)g[t++>>>0>>>0]=e.charCodeAt(r);g[t>>>0>>>0]=0})(n,o),r+=n.length+1})),0},environ_sizes_get:function(e,t){e>>>=0,t>>>=0;var r=yt();T[e>>>2>>>0]=r.length;var n=0;return r.forEach((e=>n+=e.length+1)),T[t>>>2>>>0]=n,0},fd_close:e=>52,fd_read:function(e,t,r,n){return 52},fd_seek:function(e,t,r,n){return t=Y(t),70},fd_write:function(e,t,r,n){t>>>=0,r>>>=0,n>>>=0;for(var i,o,s,a=0,l=0;l<r;l++){var c=T[t>>>2>>>0],u=T[t+4>>>2>>>0];t+=8;for(var d=0;d<u;d++)i=e,o=y[c+d>>>0],s=void 0,s=vt[i],0===o||10===o?((1===i?f:_)(J(s,0)),s.length=0):s.push(o);a+=u}return T[n>>>2>>>0]=a,0},proc_exit:bt,strptime:function(e,t,r){e>>>=0,r>>>=0;for(var n=G(t>>>=0),i="\\!@#$^&*()+=-[]/{}|:<>?,.",o=0;o<25;++o)n=n.replace(new RegExp("\\"+i[o],"g"),"\\"+i[o]);var s={"%A":"%a","%B":"%b","%c":"%a %b %d %H:%M:%S %Y","%D":"%m\\/%d\\/%y","%e":"%d","%F":"%Y-%m-%d","%h":"%b","%R":"%H\\:%M","%r":"%I\\:%M\\:%S\\s%p","%T":"%H\\:%M\\:%S","%x":"%m\\/%d\\/(?:%y|%Y)","%X":"%H\\:%M\\:%S"};for(var a in s)n=n.replace(a,s[a]);var l={"%a":"(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)","%b":"(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)","%C":"\\d\\d","%d":"0[1-9]|[1-9](?!\\d)|1\\d|2\\d|30|31","%H":"\\d(?!\\d)|[0,1]\\d|20|21|22|23","%I":"\\d(?!\\d)|0\\d|10|11|12","%j":"00[1-9]|0?[1-9](?!\\d)|0?[1-9]\\d(?!\\d)|[1,2]\\d\\d|3[0-6]\\d","%m":"0[1-9]|[1-9](?!\\d)|10|11|12","%M":"0\\d|\\d(?!\\d)|[1-5]\\d","%n":"\\s","%p":"AM|am|PM|pm|A\\.M\\.|a\\.m\\.|P\\.M\\.|p\\.m\\.","%S":"0\\d|\\d(?!\\d)|[1-5]\\d|60","%U":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%W":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%w":"[0-6]","%y":"\\d\\d","%Y":"\\d\\d\\d\\d","%%":"%","%t":"\\s"};for(var c in l)n=n.replace(c,"("+c+l[c]+")");var u=[];for(o=n.indexOf("%");o>=0;o=n.indexOf("%"))u.push(n[o+1]),n=n.replace(new RegExp("\\%"+n[o+1],"g"),"");var d,h,p,f=new RegExp("^"+n,"i").exec(G(e));if(f){var _,m=function(){function e(e,t,r){return"number"!=typeof e||isNaN(e)?t:e>=t?e<=r?e:r:t}return{year:e(w[r+20>>>2>>>0]+1900,1970,9999),month:e(w[r+16>>>2>>>0],0,11),day:e(w[r+12>>>2>>>0],1,31),hour:e(w[r+8>>>2>>>0],0,23),min:e(w[r+4>>>2>>>0],0,59),sec:e(w[r>>>2>>>0],0,59)}}(),g=e=>{var t=u.indexOf(e);if(t>=0)return f[t+1]};if((_=g("S"))&&(m.sec=Ct(_)),(_=g("M"))&&(m.min=Ct(_)),_=g("H"))m.hour=Ct(_);else if(_=g("I")){var y=Ct(_);(_=g("p"))&&(y+="P"===_.toUpperCase()[0]?12:0),m.hour=y}if(_=g("Y"))m.year=Ct(_);else if(_=g("y")){var v=Ct(_);(_=g("C"))?v+=100*Ct(_):v+=v<69?2e3:1900,m.year=v}if((_=g("m"))?m.month=Ct(_)-1:(_=g("b"))&&(m.month={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11}[_.substring(0,3).toUpperCase()]||0),_=g("d"))m.day=Ct(_);else if(_=g("j"))for(var b=Ct(_),T=wt(m.year),$=0;$<12;++$){var P=Tt(T?$t:Pt,$-1);b<=P+(T?$t:Pt)[$]&&(m.day=b-P)}else if(_=g("a")){var k=_.substring(0,3).toUpperCase();if(_=g("U")){var C={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6}[k],O=Ct(_);E=0===(A=new Date(m.year,0,1)).getDay()?kt(A,C+7*(O-1)):kt(A,7-A.getDay()+C+7*(O-1)),m.day=E.getDate(),m.month=E.getMonth()}else if(_=g("W")){var A,E;C={MON:0,TUE:1,WED:2,THU:3,FRI:4,SAT:5,SUN:6}[k],O=Ct(_),E=1===(A=new Date(m.year,0,1)).getDay()?kt(A,C+7*(O-1)):kt(A,7-A.getDay()+1+C+7*(O-1)),m.day=E.getDate(),m.month=E.getMonth()}}var x=new Date(m.year,m.month,m.day,m.hour,m.min,m.sec,0);return w[r>>>2>>>0]=x.getSeconds(),w[r+4>>>2>>>0]=x.getMinutes(),w[r+8>>>2>>>0]=x.getHours(),w[r+12>>>2>>>0]=x.getDate(),w[r+16>>>2>>>0]=x.getMonth(),w[r+20>>>2>>>0]=x.getFullYear()-1900,w[r+24>>>2>>>0]=x.getDay(),w[r+28>>>2>>>0]=Tt(wt(x.getFullYear())?$t:Pt,x.getMonth()-1)+x.getDate()-1,w[r+32>>>2>>>0]=0,e+(d=f[0],h=tt(d)+1,p=new Array(h),X(d,p,0,p.length),p).length-1}return 0}},Et=function(){var e,t,r,n,s={env:At,wasi_snapshot_preview1:At};function a(e,t){return Et=function(e){var t=e=>t=>e(t)>>>0,r=e=>()=>e()>>>0;return(e=Object.assign({},e)).malloc=t(e.malloc),e.__errno_location=r(e.__errno_location),e.__getTypeName=t(e.__getTypeName),e.stackSave=r(e.stackSave),e.stackAlloc=t(e.stackAlloc),e}(Et=e.exports),p=Et.memory,A(),Fe=Et.__indirect_function_table,function(e){if(N--,o.monitorRunDependencies&&o.monitorRunDependencies(N),0==N&&(null!==R&&(clearInterval(R),R=null),V)){var t=V;V=null,t()}}(),Et}if(N++,o.monitorRunDependencies&&o.monitorRunDependencies(N),o.instantiateWasm)try{return o.instantiateWasm(s,a)}catch(e){_(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return(e=h,t=D,r=s,n=function(e){a(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||W(t)||"function"!=typeof fetch?U(t,r,n):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(n,(function(e){return _(`wasm streaming compile failed: ${e}`),_("falling back to ArrayBuffer instantiation"),U(t,r,n)}))))).catch(i),{}}(),xt=e=>(xt=Et.malloc)(e),St=e=>(St=Et.free)(e),jt=o.__initialize=()=>(jt=o.__initialize=Et._initialize)(),Nt=e=>(Nt=Et.__getTypeName)(e);function Rt(e=l){function t(){Ot||(Ot=!0,o.calledRun=!0,O||(q(x),q(S),n(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),Vt&&function(e=[]){var t,r=jt;[c].concat(e);try{return r(),m=t=0,bt(t),0}catch(e){return(e=>{if(e instanceof H||"unwind"==e)return m;u(1,e)})(e)}}(e),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)e=o.postRun.shift(),j.unshift(e);var e;q(j)}()))}N>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),E.unshift(e);var e;q(E)}(),N>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t()))}if(V=function e(){Ot||Rt(),Ot||(V=e)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();var Vt=!0;return o.noInitialRun&&(Vt=!1),Rt(),t.ready}),i={integer:"integer",float:"float",string:"string",boolean:"boolean",date:"date",datetime:"datetime",object:"object"},o={row_pivot:"group_by","row-pivot":"group_by","row-pivots":"group_by",col_pivot:"split_by",col_pivots:"split_by",column_pivot:"split_by","column-pivot":"split_by","column-pivots":"split_by",filters:"filter",sorts:"sort"},s=["version","viewport","group_by","split_by","aggregates","columns","filter","sort","computed_columns","expressions","group_by_depth","split_by_depth","filter_op"],a=["any","avg","abs sum","count","distinct count","dominant","first by index","last by index","last minus first","last","high","join","low","high minus low","max","mean","median","min","pct sum parent","pct sum grand total","stddev","sum","sum abs","sum not null","unique","var"],l=["any","count","distinct count","distinct leaf","dominant","first by index","join","last by index","last","unique"],c=["none","asc","desc","col asc","col desc","asc abs","desc abs","col asc abs","col desc abs"],u=[2,0,1,0,1,3,4,3,4],d={string:l,float:a,integer:a,boolean:["any","count","distinct count","distinct leaf","dominant","first by index","last by index","last","unique"],datetime:l,date:l},h={lessThan:"<",greaterThan:">",equals:"==",lessThanOrEquals:"<=",greaterThanOrEquals:">=",doesNotEqual:"!=",isNull:"is null",isNotNull:"is not null",isIn:"in",isNotIn:"not in",contains:"contains",bitwiseAnd:"&",bitwiseOr:"|",and:"and",or:"or",beginsWith:"begins with",endsWith:"ends with"},p=[h.bitwiseAnd,h.bitwiseOr,h.equals,h.doesNotEqual,h.or,h.and,h.isNull,h.isNotNull],f=[h.lessThan,h.greaterThan,h.equals,h.lessThanOrEquals,h.greaterThanOrEquals,h.doesNotEqual,h.isNull,h.isNotNull],_=[h.equals,h.contains,h.doesNotEqual,h.isIn,h.isNotIn,h.beginsWith,h.endsWith,h.isNull,h.isNotNull],m=[h.lessThan,h.greaterThan,h.equals,h.lessThanOrEquals,h.greaterThanOrEquals,h.doesNotEqual,h.isNull,h.isNotNull],g="|",y={string:_,float:f,integer:f,boolean:p,datetime:m,date:m},v={types:{float:{filter_operator:"==",aggregate:"sum",format:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},string:{filter_operator:"==",aggregate:"count"},integer:{filter_operator:"==",aggregate:"sum",format:{}},boolean:{filter_operator:"==",aggregate:"count"},datetime:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short",timeStyle:"medium"},null_value:-1},date:{filter_operator:"==",aggregate:"count",format:{dateStyle:"short"},null_value:-1}}};function b(e){const t={};if($().types[e]&&Object.assign(t,$().types[e]),t.type){const e=b(t.type);return Object.assign(e,t),e}return t}function w(e){return e&&"object"==typeof e&&!Array.isArray(e)}function T(e,...t){if(!t.length)return e;const r=t.shift();if(w(e)&&w(r))for(const t in r)w(r[t])?(e[t]||Object.assign(e,{[t]:{}}),T(e[t],r[t])):Object.assign(e,{[t]:r[t]});return T(e,...t)}function $(){return globalThis.__PERSPECTIVE_CONFIG__||(globalThis.__PERSPECTIVE_CONFIG__=T(v,globalThis.__TEMPLATE_CONFIG__||{})),globalThis.__PERSPECTIVE_CONFIG__}function P(e){return e>=1&&e<=8?"integer":19===e?"string":10===e||9===e?"float":11===e?"boolean":12===e?"datetime":13===e?"date":void console.warn(`Unknown type for value ${e} with JS type ${typeof e}`)}function k(e){let t=e;do{for(const r of Object.getOwnPropertyNames(t)){const t=e[r];"constructor"!==r&&"function"==typeof t&&(e[r]=t.bind(e))}}while(t=t!==Object&&Object.getPrototypeOf(t))}String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var r=Object(this),n=r.length>>>0;if(0===n)return!1;for(var i,o,s=0|t,a=Math.max(s>=0?s:n-Math.abs(s),0);a<n;){if((i=r[a])===(o=e)||"number"==typeof i&&"number"==typeof o&&isNaN(i)&&isNaN(o))return!0;a++}return!1}});class C{constructor(){this.data_formats={row:0,column:1,schema:2},this.format=void 0,this.data=void 0,this.names=void 0,this.types=void 0,this.row_count=void 0}is_format(e){if(Array.isArray(e))return this.data_formats.row;if(Array.isArray(e[Object.keys(e)[0]]))return this.data_formats.column;if("string"==typeof e[Object.keys(e)[0]]||"function"==typeof e[Object.keys(e)[0]])return this.data_formats.schema;throw`Could not determine data format for ${JSON.stringify(e)}, with JS typeof ${typeof e}`}count_rows(e){return this.format===this.data_formats.row?e.length:this.format===this.data_formats.column?e[Object.keys(e)[0]].length:0}get_format(){return this.format}get(e,t){let r;if(this.format===this.data_formats.row){let n=this.data[t];n.hasOwnProperty(e)&&(r=n[e])}else if(this.format===this.data_formats.column)this.data.hasOwnProperty(e)&&(r=this.data[e][t]);else{if(this.format!==this.data_formats.schema)throw`Could not get() from dataset - ${this.data} is poorly formatted.`;r=void 0}return r}marshal(e,t,r){const n=this.names[e];let i=null===(o=this.get(n,t))||"null"===o?null:void 0===o||"undefined"===o?void 0:o;var o;if(null===i)return null;if(void 0!==i){switch(P(r.value)){case"float":case"integer":i=Number(i);break;case"boolean":i="string"==typeof i?"true"===i.toLowerCase():!!i;break;case"datetime":case"date":break;default:i+=""}return i}}clean(){this.names=void 0,this.types=void 0}init(e){this.data=e,this.format=this.is_format(this.data),this.row_count=this.count_rows(this.data);const t={};if(this.format===this.data_formats.row)e.length>0?this.names=Object.keys(e[0]):this.clean.names=[];else if(this.format===this.data_formats.column)this.names=Object.keys(e);else{if(this.format!==this.data_formats.schema)throw`Could not initialize - failed to determine format for ${e}`;this.names=Object.keys(e);for(const r of this.names){const n=b(e[r]);n.type&&(console.debug(`Converting "${e[r]}" to "${n.type}"`),t[r]=e[r],e[r]=n.type)}}return t}}const O=function(e){let t=[];for(let r=0;r<e.size();r++){let n=e.get(r);t.push(n)}return e.delete(),t},A=function(e){let t={},r=e.keys();for(let n=0;n<r.size();n++){let i=r.get(n);t[i]=e.get(i)}return e.delete(),r.delete(),t},E=function(e,t){for(const r of t)e.push_back(r);return e};function x(e){const t={};return"string"!=typeof e?Object.getOwnPropertyNames(e).forEach((r=>{t[r]=e[r]}),e):t.message=e,t}class S{constructor(e){this.perspective=e,this._tables={},this._views={},this._callback_cache=new Map}init(e){var t;e.config&&(t=e.config,globalThis.__PERSPECTIVE_CONFIG__&&console.warn("Config already initialized!"),globalThis.__PERSPECTIVE_CONFIG__=T(v,t)),e.data=["wait_for_response"],this.post(e)}post(e){throw new Error(`Posting ${e} failed - post() not implemented!`)}process(e,t){switch(e.cmd){case"init_profile_thread":this.perspective.initialize_profile_thread();break;case"get_hosted_table_names":this.post({id:e.id,data:Object.keys(this._tables)});break;case"memory_usage":this.post({id:e.id,data:this.perspective.memory_usage()});break;case"init":this.init(e);break;case"table":if(void 0===e.args[0])this._tables[e.name]=[];else try{const t=this._tables[e.name],r=this.perspective.table(e.args[0],e.options);if(r&&r.then)r.then((r=>{if(this._tables[e.name]=r,t)for(const e of t)this.process(e);this.post({id:e.id,data:e.name})})).catch((t=>this.process_error(e,t)));else{if(this._tables[e.name]=r,t)for(const e of t)this.process(e);this.post({id:e.id,data:e.name})}}catch(t){return void this.process_error(e,t)}break;case"table_generate":(0,eval)(e.args)((function(t){this._tables[e.name]=t,this.post({id:e.id,data:"created!"})}));break;case"table_execute":(0,eval)(e.f)(this._tables[e.name]);break;case"table_method":case"view_method":this.process_method_call(e);break;case"view":const r=this._tables[e.table_name];if(r&&Array.isArray(r))r.push(e),this._views[e.view_name]=[];else try{const r=this._views[e.view_name],n=this._tables[e.table_name].view(e.config);if(n&&n.then)n.then((n=>{if(this._views[e.view_name]=n,this._views[e.view_name].client_id=t,r)for(const e of r)this.process(e);this.post({id:e.id,data:e.view_name})})).catch((t=>this.process_error(e,t)));else{if(this._views[e.view_name]=n,this._views[e.view_name].client_id=t,r)for(const e of r)this.process(e);this.post({id:e.id,data:e.view_name})}}catch(t){return void this.process_error(e,t)}}}process_subscribe(e,t){try{let r;"on"===e.method.slice(0,2)?(r=n=>{let i={id:e.id,data:n};try{if(e.args&&e.args[0]&&"on_update"===e.method&&"row"===e.args[0].mode)return void this.post(i,[n.delta]);this.post(i)}catch(n){console.error(`Removing failed callback to \`${e.method}()\` (presumably due to failed connection)`);const i=e.method.substring(3);t[`remove_${i}`](r)}},e.callback_id&&this._callback_cache.set(e.callback_id,r)):e.callback_id&&(r=this._callback_cache.get(e.callback_id),this._callback_cache.delete(e.callback_id)),r?t[e.method](r,...e.args):console.error(`Callback not found for remote call "${JSON.stringify(e)}"`)}catch(t){return void this.process_error(e,t)}}process_method_call(e){let t,r;const n=e.view_name||e.name;if(t="table_method"===e.cmd?this._tables[n]:this._views[n],t||"view_method"!==e.cmd)if(t&&t.push)t.push(e);else try{if(e.subscribe)return void this.process_subscribe(e,t);r=t[e.method].apply(t,e.args),r instanceof Promise?r.then((t=>this.process_method_call_response(e,t))).catch((t=>this.process_error(e,t))):this.process_method_call_response(e,r)}catch(t){return void this.process_error(e,t)}else this.process_error(e,{message:"View method cancelled"})}process_method_call_response(e,t){"delete"===e.method&&delete this._views[e.name],"to_arrow"===e.method?this.post({id:e.id,data:t},[t]):this.post({id:e.id,data:t})}process_error(e,t){try{this.post({id:e.id,error:x(t)})}catch(e){console.error("Error handler failed: {}",t)}}clear_views(e){for(let t of Object.keys(this._views))if(this._views[t].client_id===e){try{this._views[t].delete()}catch(e){console.error(e)}delete this._views[t]}console.debug(`GC ${Object.keys(this._views).length} views in memory`)}}"undefined"!=typeof self&&void 0===self.performance&&(self.performance={now:Date.now});const j=new Set;globalThis.perspective=function(e){let r=e,n=new C;const i=["zero","one","two"];let a={};function l(e){const t=a[e];t&&(t._process(),c(e))}function c(e){a[e]?.delete(),delete a[e]}function u(e,t,n,i,o,s,c,u,d){n||(n=""),i||(i=4294967295);const h=(t=r.make_table(t,e,i,n,o,s,c,u,d)).get_pool(),p=t.get_id();return s||o==r.t_op.OP_DELETE?function(e,t){a[t]?e.delete():(a[t]=e,setTimeout((()=>l(t))))}(h,p):(h._process(),h.delete()),t}function d(e,t,n,i,o){this.name=o,this._View=void 0,this.table=e,this.config=n||{},this.view_config=i||new i,this.is_unit_context=""===this.table.index&&0===t&&0===this.view_config.group_by.length&&0===this.view_config.split_by.length&&0===this.view_config.filter.length&&0===this.view_config.sort.length&&0===this.view_config.expressions.length,this.is_unit_context?this._View=r.make_view_unit(e._Table,o,g,this.view_config,null):0===t?this._View=r.make_view_zero(e._Table,o,g,this.view_config,null):1===t?this._View=r.make_view_one(e._Table,o,g,this.view_config,null):2===t&&(this._View=r.make_view_two(e._Table,o,g,this.view_config,null)),this.ctx=this._View.get_context(),this.column_only=this._View.is_column_only(),this.update_callbacks=this.table.update_callbacks,this.overridden_types=this.table.overridden_types,this._delete_callbacks=[],k(this)}function h(e){let t=[];for(let n=0;n<e.size();n++){let i=e.get(n);t.push(r.scalar_to_val(i,!1,!0)),i.delete()}return e.delete(),t}d.prototype.get_config=function(){return JSON.parse(JSON.stringify(this.config))},d.prototype.delete=function(){c(this.table.get_id()),this._View.delete(),this.ctx.delete(),this.table.views.splice(this.table.views.indexOf(this),1),this.table=void 0;let e=0,t=0;for(;e<this.update_callbacks.length;){let r=this.update_callbacks[e];r.view!==this&&(this.update_callbacks[t++]=r),e++}this.update_callbacks.length=t,this._delete_callbacks.forEach((e=>e()))},d.prototype.sides=function(){return this._View.sides()},d.prototype._num_hidden=function(){let e=0;for(const t of this.config.sort)-1===this.config.columns.indexOf(t[0])&&e++;return e};const p=function(e){let t=[];for(let r=0;r<e.size();r++){let n=e.get(r);t.push(h(n))}return e.delete(),t};d.prototype.schema=function(e=!0){const t=A(this._View.schema());if(e)for(const e of Object.keys(t)){let r=e.split(g);r=r[r.length-1],this.overridden_types[r]&&b(this.overridden_types[r]).type===t[e]&&(t[e]=this.overridden_types[r])}return t},d.prototype.expression_schema=function(e=!0){const t=A(this._View.expression_schema());if(e)for(const e of Object.keys(t)){let r=e.split(g);r=r[r.length-1],this.overridden_types[r]&&b(this.overridden_types[r]).type===t[e]&&(t[e]=this.overridden_types[r])}return t},d.prototype._column_names=function(e=!1,t=0){return p(this._View.column_names(e,t)).map((e=>e.join(g)))},d.prototype.column_paths=function(){return p(this._View.column_paths()).map((e=>e.join(g)))},d.prototype.get_data_slice=function(e,t,n,o){if(this.is_unit_context)return r.get_data_slice_unit(this._View,e,t,n,o);{const s=this.sides();return r[`get_data_slice_${i[s]}`](this._View,e,t,n,o)}};const f=function(e){e=e||{};const t=this._View.num_columns()+(0===this.sides()?0:1),r=this._View.num_rows(),n=this._num_hidden(),i=this.sides()>0||this.column_only?1:0,o=this.config.viewport?this.config.viewport:{},s=e.start_row||(o.top?o.top:0),a=Math.min(r,void 0!==e.end_row?e.end_row:o.height?s+o.height:r),l=e.start_col||(o.left?o.left:0),c=Math.min(t,(void 0!==e.end_col?e.end_col+i:o.width?l+o.width:t)*(n+1));return e.start_row=Math.floor(s),e.end_row=Math.ceil(a),e.start_col=Math.floor(l),e.end_col=Math.ceil(c),e};d.prototype.get_min_max=function(e){if(this.is_unit_context)return r.get_min_max_unit(this._View,e);{const t=this.sides();return r[`get_min_max_${i[t]}`](this._View,e)}};const _=function(e,t,r){const n=this.num_rows(),i=t.start_row||0,o=t.end_row||n;let s,a,l=this._column_names().indexOf(e);if(-1===l)return;this.sides()>0&&l++,t.data_slice?s=t.data_slice.get_column_slice(l):(a=this.get_data_slice(i,o,l,l+1),s=a.get_slice());const c=r(s,this._View.get_column_dtype(l),l);return s.delete(),a&&a.delete(),c};function m(e,t){let r=0,n=0;for(;r<e.length;){const i=e[r];t(i,r,e)&&(e[n++]=i),r++}return e.length=n,e}function y(e){this.group_by=e.group_by||[],this.split_by=e.split_by||[],this.aggregates=e.aggregates||{},this.columns=e.columns,this.filter=e.filter||[],this.sort=e.sort||[],this.expressions=e.expressions||[],this.filter_op=e.filter_op||"and",this.group_by_depth=e.group_by_depth,this.split_by_depth=e.split_by_depth}function v(e,t,r,n){this._Table=e;const i=this._Table.get_gnode();this.gnode_id=i.get_id(),i.delete();const o=this._Table.get_pool();o.set_update_delegate(this),o.delete(),this.name=Math.random()+"",this.initialized=!1,this.index=t,this.limit=r,this.update_callbacks=[],this._delete_callbacks=[],this.views=[],this.overridden_types=n,k(this)}function w(e){let t=[];const r={},n=!Array.isArray(e);for(let i of n?Object.keys(e):e){const o=i;n&&(i=e[i]);let s,a={},l={},c=0;if(n)s=o;else{let e=i.match(/^\/\/(?<alias>.+?)\n/);e?.groups?.alias&&(s=e.groups.alias.trim()),s&&0!=s.length||(s=i)}let u=i.replace(/([a-zA-Z_]+[a-zA-Z0-9_]*)/g,(e=>"true"==e?"True":"false"==e?"False":e));u=u.replace(/\"(.*?[^\\])\"/g,((e,t)=>{if(t=t.replace(/\\"/g,'"'),void 0===a[t]){let e=`COLUMN${c}`;a[t]=e,l[e]=t}return c++,a[t]})),u=u.replace(/'(.*?[^\\])'/g,(e=>`intern(${e})`));const d=(e,t,r,n)=>{const i=e.indexOf(r);return`${e.substring(0,i)}'${n}'${e.substring(i+r.length)}`};u=u.replace(/(bucket|match|match_all|search|indexof)\(.*?,\s*(intern\(\'(.+)\'\)).*\)/g,d),u=u.replace(/(replace_all|replace)\(.*?,\s*(intern\(\'(.*)\'\)),.*\)/g,d);const h=[s,i,u,l];void 0!==r[s]?t[r[s]]=h:(t.push(h),r[s]=t.length-1)}return t}let T;d.prototype.to_columns=function(e){return JSON.parse(this.to_columns_string(e))},d.prototype.to_columns_string=function(e){l(this.table.get_id());const t=(e=f.bind(this)(e)).start_row,r=e.end_row,n=e.start_col,o=e.end_col,s=this._num_hidden(),a=e.formatted,c=!!e.index,u=!!e.id,d=!!e.leaves_only,h=this.sides(),p=0!==h&&!this.column_only,_=i[h],m=this.get_config(),g=m.columns.length,y=m.group_by.length;return this._View.to_columns(t,r,n,o,s,a,c,u,d,h,p,_,g,y)},d.prototype.to_json=function(e){const t=this.to_columns(e),r=Object.keys(t);return(t[r[0]]||[]).map(((e,n)=>{const i={};for(const e of r)i[e]=t[e][n];return i}))},d.prototype.to_csv=function(e){l(this.table.get_id());const t=(e=f.bind(this)(e)).start_row,n=e.end_row,i=e.start_col,o=e.end_col,s=this.sides();return this.is_unit_context?r.to_csv_unit(this._View,t,n,i,o):0===s?r.to_csv_zero(this._View,t,n,i,o):1===s?r.to_csv_one(this._View,t,n,i,o):2===s?r.to_csv_two(this._View,t,n,i,o):void 0},d.prototype.col_to_js_typed_array=function(e,t={}){l(this.table.get_id());const n=r.col_to_js_typed_array;return _.call(this,e,t,n)},d.prototype.to_arrow=function(e={}){l(this.table.get_id());const t=(e=f.bind(this)(e)).start_row,n=e.end_row,i=e.start_col,o=e.end_col,s=this.sides(),a=!("compression"in e)||"lz4"===e.compression;return this.is_unit_context?r.to_arrow_unit(this._View,t,n,i,o,a):0===s?r.to_arrow_zero(this._View,t,n,i,o,a):1===s?r.to_arrow_one(this._View,t,n,i,o,a):2===s?r.to_arrow_two(this._View,t,n,i,o,a):void 0},d.prototype.num_rows=function(){return l(this.table.get_id()),this._View.num_rows()},d.prototype.num_columns=function(){const e=this._View.num_columns(),t=this._num_hidden();return e-e/(this.config.columns.length+t)*t},d.prototype.dimensions=function(){return{num_table_rows:this.table.num_rows(),num_table_columns:this.table.num_columns(),num_view_rows:this._View.num_rows(),num_view_columns:this.num_columns()}},d.prototype.get_row_expanded=function(e){return this._View.get_row_expanded(e)},d.prototype.expand=function(e){return this._View.expand(e,this.config.group_by.length)},d.prototype.collapse=function(e){return this._View.collapse(e)},d.prototype.set_depth=function(e){return this._View.set_depth(e,this.config.group_by.length)},d.prototype._get_step_delta=async function(){let e,t=this._View.get_step_delta(0,2147483647);if(0===t.cells.size())e=this.to_json();else{let r={};for(let e=0;e<t.cells.size();e++)r[t.cells.get(e).row]=!0;r=Object.keys(r);const n=r.map((e=>this.to_json({start_row:Number.parseInt(e),end_row:Number.parseInt(e)+1})));e=[].concat.apply([],n)}return t.cells.delete(),e},d.prototype._get_row_delta=async function(){if(this.is_unit_context)return r.get_row_delta_unit(this._View);{const e=this.sides();return r[`get_row_delta_${i[e]}`](this._View)}},d.prototype.on_update=function(e,{mode:t="none"}={}){if(l(this.table.get_id()),-1===["none","row"].indexOf(t))throw new Error(`Invalid update mode "${t}" - valid modes are "none" and "row".`);"row"===t&&(this._View._get_deltas_enabled()||this._View._set_deltas_enabled(!0)),this.update_callbacks.push({view:this,orig_callback:e,callback:async(r,n)=>{void 0===n[r]&&(n[r]={});let i={port_id:r};"row"===t&&(void 0===n[r].row_delta&&(n[r].row_delta=await this._get_row_delta()),i.delta=n[r].row_delta),e(i)}})},d.prototype.remove_update=function(e){l(this.table.get_id());const t=this.update_callbacks.length;m(this.update_callbacks,(t=>t.orig_callback!==e)),console.assert(t>this.update_callbacks.length,'"callback" does not match a registered updater')},d.prototype.on_delete=function(e){this._delete_callbacks.push(e)},d.prototype.remove_delete=function(e){const t=this._delete_callbacks.length;m(this._delete_callbacks,(t=>t!==e)),console.assert(t>this._delete_callbacks.length,'"callback" does not match a registered delete callbacks')},y.prototype.get_group_by=function(){let e=r.make_string_vector();return E(e,this.group_by)},y.prototype.get_split_by=function(){let e=r.make_string_vector();return E(e,this.split_by)},y.prototype.get_columns=function(){let e=r.make_string_vector();return E(e,this.columns)},y.prototype.get_filter=function(){let e=r.make_2d_val_vector();for(let t of this.filter){let n=r.make_val_vector(),i=E(n,t);e.push_back(i)}return e},y.prototype.get_sort=function(){let e=r.make_2d_string_vector();for(let t of this.sort){let n=r.make_string_vector(),i=E(n,t);e.push_back(i)}return e},y.prototype.get_expressions=function(){let e=r.make_2d_val_vector();for(let t of this.expressions){let n=r.make_val_vector();for(let e of t)n.push_back(e);e.push_back(n)}return e},v.prototype.get_id=function(){return this._Table.get_id()},v.prototype.get_pool=function(){return this._Table.get_pool()},v.prototype.make_port=function(){return this._Table.make_port()},v.prototype.remove_port=function(){this._Table.remove_port()},v.prototype._update_callback=function(e){let t={};for(let r in this.update_callbacks)this.update_callbacks[r].callback(e,t)},v.prototype.get_index=function(){return this.index},v.prototype.get_limit=function(){return this.limit},v.prototype.clear=function(){l(this.get_id()),this._Table.reset_gnode(this.gnode_id)},v.prototype.get_num_views=function(){return this.views.length},v.prototype.replace=function(e){c(this.get_id()),this._Table.reset_gnode(this.gnode_id),this.update(e),l(this.get_id())},v.prototype.delete=function(){if(this.views.length>0)throw`Cannot delete Table as it still has ${this.views.length} registered View(s).`;c(this.get_id()),this._Table.unregister_gnode(this.gnode_id),this._Table.delete();for(const e of this._delete_callbacks)e()},v.prototype.on_delete=function(e){this._delete_callbacks.push(e)},v.prototype.remove_delete=function(e){const t=this._delete_callbacks.length;m(this._delete_callbacks,(t=>t!==e)),console.assert(t>this._delete_callbacks.length,'"callback" does not match a registered delete callbacks')},v.prototype.size=function(){return l(this._Table.get_id()),this._Table.size()},v.prototype.num_rows=function(){return this.size()},v.prototype.num_columns=function(){let e=this._Table.get_schema(),t=e.columns();const r=t.size();return t.delete(),e.delete(),r-1},v.prototype.schema=function(e=!0){let t=this._Table.get_schema(),r=t.columns(),n=t.types(),i={};for(let t=0;t<r.size();t++){const o=r.get(t);"psp_okey"!==o&&(e&&this.overridden_types[o]?i[o]=this.overridden_types[o]:i[o]=P(n.get(t).value))}return t.delete(),r.delete(),n.delete(),i},v.prototype.validate_expressions=function(e,t=!0){const n={expression_schema:{},expression_alias:{},errors:{}};if(!e||0===Object.keys(e).length)return n;e=w(e);let i=r.make_2d_val_vector();for(let t of e){let e=r.make_val_vector();for(let r of t)e.push_back(r);i.push_back(e),n.expression_alias[t[0]]=t[1]}const o=r.validate_expressions(this._Table,i),s=o.get_expression_schema(),a=o.get_expression_errors(),l=s.keys();for(let e=0;e<l.size();e++){const r=l.get(e);let i=s.get(r);t&&this.overridden_types[r]&&(i=this.overridden_types[r]),n.expression_schema[r]=i}const c=a.keys();for(let e=0;e<c.size();e++){const t=c.get(e),r=a.get(t);n.errors[t]=r}return c.delete(),l.delete(),a.delete(),s.delete(),o.delete(),n},v.prototype.is_valid_filter=function(e){if(e[1]===$.FILTER_OPERATORS.isNull||e[1]===$.FILTER_OPERATORS.isNotNull)return!0;let t=e[2];if(null===t)return!1;const n=this.schema();return!n[e[0]]||"date"!==n[e[0]]&&"datetime"!==n[e[0]]?null!=t:r.is_valid_datetime(e[2])},v.prototype.view=function(e={}){l(this._Table.get_id());let t={};for(const r of Object.keys(e))if(o[r]){if(t[o[r]])throw new Error(`Duplicate configuration parameter "${r}"`);j.has(r)||(console.warn(`Deprecated: "${r}" config parameter, please use "${o[r]}" instead`),j.add(r)),t[o[r]]=e[r]}else if("aggregate"===r){j.has("aggregate")||(console.warn('Deprecated: "aggregate" config parameter has been replaced by "aggregates" and "columns"'),j.add("aggregate")),t.aggregates={},t.columns=[];for(const r of e.aggregate)t.aggregates[r.column]=r.op,t.columns.push(r.column)}else{if(!(s.indexOf(r)>-1))throw new Error(`Unrecognized config parameter "${r}"`);t[r]=e[r]}t.group_by=t.group_by||[],t.split_by=t.split_by||[],t.aggregates=t.aggregates||{},t.filter=t.filter||[],t.sort=t.sort||[],t.expressions=t.expressions||{};const r=this.schema();if(void 0!==t.expressions&&(Array.isArray(t.expressions)&&console.warn("Legacy `expressions` format: "+JSON.stringify(t.expressions)),t.expressions=w(t.expressions)),void 0===t.columns&&(t.columns=this.columns(),null!=t.expressions))for(const e of t.expressions)t.columns.push(e[0]);if(t.filter.length>0)for(let e of t.filter){const t=r[e[0]];e[1]===$.FILTER_OPERATORS.isNull||e[1]===$.FILTER_OPERATORS.isNotNull||"date"!==t&&"datetime"!==t||(e[2]=new Date(e[2]))}let n,i=Math.random()+"";n=t.group_by.length>0||t.split_by.length>0?t.split_by&&t.split_by.length>0?2:1:0;let a=new d(this,n,t,new y(t),i);return this.views.push(a),a},v.prototype.query_columns=function(e,t){const r=this.view(e),n=r.to_columns(t);return r.delete(),n},v.prototype.update=function(e,t){let i;(t=t||{}).port_id=t.port_id||0;let o=this.columns(),s=this._Table.get_schema(),a=s.types(),l=!1,c=!1;if(i=n,e instanceof ArrayBuffer?(i=new Uint8Array(e),l=!0):"string"==typeof e?(","===e[0]&&(e="_"+e),c=!0,l=!0,i=e):(n.init(e),n.names=o.concat(n.names.filter((e=>"__INDEX__"===e))),n.types=O(a).slice(0,o.length),T&&T(n.row_count)),!l){if(0===i.row_count)return void console.warn("table.update called with no data - ignoring");-1!=n.names.indexOf("__INDEX__")&&(this.index?n.types.push(n.types[n.names.indexOf(this.index)]):n.types.push(r.t_dtype.DTYPE_INT32))}try{const e=r.t_op.OP_INSERT;u(i,this._Table,this.index,this.limit,e,!0,l,c,t.port_id).delete(),this.initialized=!0}catch(e){console.error(`Update failed: ${e}`)}finally{s.delete()}},v.prototype.remove=function(e,t){if(!this.index)return void console.error("Cannot call `remove()` on a Table without a user-specified index.");let i;(t=t||{}).port_id=t.port_id||0;let o=this.columns(),s=this._Table.get_schema(),a=s.types(),l=!1;(e=e.map((e=>({[this.index]:e}))))instanceof ArrayBuffer?(i=new Uint8Array(e),l=!0):(n.init(e),n.names=[this.index],n.types=[O(a)[o.indexOf(this.index)]],i=n);try{const e=r.t_op.OP_DELETE;u(i,this._Table,this.index,this.limit,e,!1,l,!1,t.port_id).delete(),this.initialized=!0}catch(e){console.error("Remove failed",e)}finally{s.delete()}},v.prototype.columns=function(){let e=this._Table.get_schema(),t=e.columns(),r=[];for(let e=0;e<t.size();e++){let n=t.get(e);"psp_okey"!==n&&r.push(n)}return e.delete(),t.delete(),r},v.prototype.execute=function(e){e(this)};const $={__module__:r,Server:S,worker:function(){return this},initialize_profile_thread:function(){if(void 0===T){let e=0,t=performance.now();setTimeout((function r(){let n=performance.now();console.log(`${(1e3*e/(n-t)).toFixed(2)} msgs/sec`),e=0,t=n,setTimeout(r,5e3)}),5e3),T=function(t){e+=t},console.log("Profiling initialized")}},memory_usage:function(){const e=performance.memory?JSON.parse(JSON.stringify(performance.memory,["totalJSHeapSize","usedJSHeapSize","jsHeapSizeLimit"])):process.memoryUsage();return e.wasmHeap=r.HEAP8.length,e},table:function(e,t){let i;(t=t||{}).index=t.index||null,t.limit=t.limit||null;let o,s=!1,a={},l=!1;if(e instanceof ArrayBuffer||"undefined"!=typeof Buffer&&e instanceof Buffer?(i=new Uint8Array(e),s=!0):"string"==typeof e?(","===e[0]&&(e="_"+e),l=!0,s=!0,i=e):(n.clean(),a=n.init(e),i=n),t.index&&t.limit)throw`Cannot specify both index '${t.index}' and limit '${t.limit}'.`;try{const e=r.t_op.OP_INSERT;return o=u(i,void 0,t.index,t.limit,e,!1,s,l,0),new v(o,t.index,t.limit,a)}catch(e){throw o&&o.delete(),console.error(`Table initialization failed: ${e}`),e}}};for(let e of Object.keys(t))$[e]=t[e];return"undefined"!=typeof self&&self.addEventListener&&new class extends S{constructor(e){super(e),self.addEventListener("message",(e=>this.process(e.data)),!1)}post(e,t){self.postMessage(e,t)}async init(e){let t=e.buffer;const n=(await WebAssembly.instantiate(t)).instance.exports,i=n.size(),o=n.offset();t=new Uint8Array(n.memory.buffer).slice(o,o+i),r=await r({wasmBinary:t,wasmJSMethod:"native-wasm",locateFile:e=>e}),r.init(),super.init(e)}}($),$}(n)})()})();
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective.worker.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective_with_viewer.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/x-javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
@include perspective-viewer-vaporwave--fonts;@include perspective-viewer-gruvbox-light--animation;@include perspective-viewer-gruvbox-light--fonts;@include perspective-viewer-gruvbox-dark--animation;@include perspective-viewer-gruvbox-dark--fonts;@include perspective-viewer-dracula--animation;@include perspective-viewer-dracula--fonts;perspective-viewer,perspective-copy-menu,perspective-export-menu,perspective-dropdown,perspective-date-column-style,perspective-datetime-column-style,perspective-number-column-style,perspective-string-column-style{--column-type-integer--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMyAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxwYXRoIGQ9Ik0gNy4xMzYgNy42NyBMIDUuNDE4IDcuNjcgTCA1LjkwMiA1LjU5NCBMIDcuNjIgNS41OTQgTCA3LjEzNiA3LjY3IFogTSA2LjUxMyAxMC4yNjQgTCA3LjMyIDEwLjI2NCBMIDcuNzgyIDguMzM4IEwgOS4xODggOC4zMzggTCA5LjMwNCA3LjY3IEwgNy45NDMgNy42NyBMIDguNDI3IDUuNTk0IEwgOS42NzMgNS41OTQgTCA5Ljc5OSA0LjkxNCBMIDguNTg5IDQuOTE0IEwgOS4wNSAzIEwgOC4yNDMgMyBMIDcuNzgyIDQuOTE0IEwgNi4wNjMgNC45MTQgTCA2LjUyNSAzIEwgNS43MTggMyBMIDUuMjU2IDQuOTE0IEwgMy44NjEgNC45MTQgTCAzLjczNCA1LjU5NCBMIDUuMDk1IDUuNTk0IEwgNC42MTEgNy42NyBMIDMuMzY1IDcuNjcgTCAzLjI1IDguMzM4IEwgNC40NDkgOC4zMzggTCAzLjk4OCAxMC4yNjQgTCA0Ljc5NSAxMC4yNjQgTCA1LjI1NiA4LjMzOCBMIDYuOTc0IDguMzM4IEwgNi41MTMgMTAuMjY0IFoiIGZpbGw9ImJsYWNrIj48L3BhdGg+Cjwvc3ZnPg==");--column-type-float--mask-image:var(--column-type-integer--mask-image);--column-type-string--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMyAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxwYXRoIGQ9Ik0gNi4yODMgNS4yNzUgTCA2LjMwOSA1LjI3NSBMIDYuNzkyIDYuODU1IEwgNS44MDYgNi44NTUgTCA2LjI4MyA1LjI3NSBaIE0gNy4yOTUgOC41MDEgTCA4LjE0NCA4LjUwMSBMIDYuODI1IDQuMzg3IEwgNS44MTkgNC4zODcgTCA0LjUgOC41MDEgTCA1LjMwMyA4LjUwMSBMIDUuNjEgNy40ODkgTCA2Ljk4OCA3LjQ4OSBMIDcuMjk1IDguNTAxIFoiIGZpbGw9IiMwNDIxMjEiPjwvcGF0aD4KICAgIDxtYXNrIGlkPSJwYXRoLTItaW5zaWRlLTFfNzIwXzc4NjciIGZpbGw9IndoaXRlIj4KICAgICAgICA8cmVjdCB3aWR0aD0iMTAiIGhlaWdodD0iOSIgcng9IjAuODMzIiB4PSIxLjUiIHk9IjIiPjwvcmVjdD4KICAgIDwvbWFzaz4KICAgIDxyZWN0IHdpZHRoPSIxMCIgaGVpZ2h0PSI5IiByeD0iMC44MzMiIHN0cm9rZT0iIzA0MjEyMSIgc3Ryb2tlLXdpZHRoPSIyIiBtYXNrPSJ1cmwoI3BhdGgtMi1pbnNpZGUtMV83MjBfNzg2NykiIHg9IjEuNSIgeT0iMiI+PC9yZWN0Pgo8L3N2Zz4=");--column-type-date--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMyAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfNzIwXzc3OTUpIiB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMy41LCAtMy41KSI+CiAgICAgICAgPG1hc2sgaWQ9InBhdGgtMS1pbnNpZGUtMV83MjBfNzc5NSIgZmlsbD0id2hpdGUiPgogICAgICAgICAgICA8cmVjdCB4PSI1IiB5PSI2IiB3aWR0aD0iOS45OTg5MiIgaGVpZ2h0PSI4LjMzMjQzIiByeD0iMC44MzMyNDQiPjwvcmVjdD4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHJlY3QgeD0iNSIgeT0iNiIgd2lkdGg9IjkuOTk4OTIiIGhlaWdodD0iOC4zMzI0MyIgcng9IjAuODMzMjQ0IiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMiIgbWFzaz0idXJsKCNwYXRoLTEtaW5zaWRlLTFfNzIwXzc3OTUpIj48L3JlY3Q+CiAgICAgICAgPHBhdGggZD0iTTcuMjk2NjMgNlY3LjE0ODMxIiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPgogICAgICAgIDxwYXRoIGQ9Ik0xMi45MTQ4IDZWNy4xNDgzMSIgc3Ryb2tlPSIjMDQyMTIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjwvcGF0aD4KICAgICAgICA8bGluZSB4MT0iNS44MzQyMyIgeTE9IjguODMyNzYiIHgyPSIxNC45OTk5IiB5Mj0iOC44MzI3NiIgc3Ryb2tlPSIjMDQyMTIxIj48L2xpbmU+CiAgICA8L2c+CiAgICA8ZGVmcz4KICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXIwX2RfNzIwXzc3OTUiIHg9IjAiIHk9IjAuNSIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIwLjgzMjUiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiPjwvZmVGbG9vZD4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMSIgZHk9IjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMC4xNjc3MDkgMCAwIDAgMCAwLjMyOTQ3IDAgMCAwIDAgMC4zMjI0MzcgMCAwIDAgMC4xIDAiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3dfNzIwXzc3OTUiPjwvZmVCbGVuZD4KICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3dfNzIwXzc3OTUiIHJlc3VsdD0ic2hhcGUiPjwvZmVCbGVuZD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KPC9zdmc+");--column-type-boolean--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuNSA1LjhWOEMwLjUgOC44Mjg0MyAxLjE3MTU3IDkuNSAyIDkuNUg0LjhDNS42Mjg0MyA5LjUgNi4zIDguODI4NDMgNi4zIDhWNy4yQzYuMyA2LjkyMzg2IDYuNTIzODYgNi43IDYuOCA2LjdIOEM4LjgyODQzIDYuNyA5LjUgNi4wMjg0MyA5LjUgNS4yVjNDOS41IDIuMTcxNTcgOC44Mjg0MyAxLjUgOCAxLjVINS4yQzQuMzcxNTcgMS41IDMuNyAyLjE3MTU3IDMuNyAzVjMuOEMzLjcgNC4wNzYxNCAzLjQ3NjE0IDQuMyAzLjIgNC4zSDJDMS4xNzE1NyA0LjMgMC41IDQuOTcxNTcgMC41IDUuOFoiIHN0cm9rZT0iIzA0MjEyMSIvPgo8L3N2Zz4K");--column-type-datetime--mask-image:var(--column-type-date--mask-image);--column-drag-handle--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNSIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDUgMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjMuNDk5OTYiIGN5PSIxMS4wMDAxIiByPSIwLjgzMzMzMyIgZmlsbD0iIzZFNkU2RSIvPgo8Y2lyY2xlIGN4PSIwLjgzMzMzMyIgY3k9IjExLjAwMDEiIHI9IjAuODMzMzMzIiBmaWxsPSIjNkU2RTZFIi8+CjxjaXJjbGUgY3g9IjMuNDk5OTYiIGN5PSI3LjY2NjgzIiByPSIwLjgzMzMzMyIgZmlsbD0iIzZFNkU2RSIvPgo8Y2lyY2xlIGN4PSIwLjgzMzMzMyIgY3k9IjcuNjY2ODMiIHI9IjAuODMzMzMzIiBmaWxsPSIjNkU2RTZFIi8+CjxjaXJjbGUgY3g9IjMuNDk5OTYiIGN5PSI0LjMzMzMzIiByPSIwLjgzMzMzMyIgZmlsbD0iIzZFNkU2RSIvPgo8Y2lyY2xlIGN4PSIwLjgzMzMzMyIgY3k9IjQuMzMzMzMiIHI9IjAuODMzMzMzIiBmaWxsPSIjNkU2RTZFIi8+CjxjaXJjbGUgY3g9IjMuNDk5OTYiIGN5PSIxLjAwMDA4IiByPSIwLjgzMzMzMyIgZmlsbD0iIzZFNkU2RSIvPgo8Y2lyY2xlIGN4PSIwLjgzMzMzMyIgY3k9IjEuMDAwMDgiIHI9IjAuODMzMzMzIiBmaWxsPSIjNkU2RTZFIi8+Cjwvc3ZnPgo=");--column-radio-on--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIHZpZXdCb3g9IjAgMCAxMSAxMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxjaXJjbGUgY3g9IjUuNSIgY3k9IjUuNSIgcj0iMy41IiBmaWxsPSIjM0Y0MzQzIi8+CiAgICA8cmVjdCB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiByeD0iNSIgc3Ryb2tlPSIjM0Y0MzQzIi8+Cjwvc3ZnPgo=");--column-radio-hover--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIHZpZXdCb3g9IjAgMCAxMSAxMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxjaXJjbGUgY3g9IjUuNSIgY3k9IjUuNSIgcj0iMi41IiBmaWxsPSIjM0Y0MzQzIi8+CiAgICA8cmVjdCB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiByeD0iNSIgc3Ryb2tlPSIjM0Y0MzQzIi8+Cjwvc3ZnPgo=");--column-radio-off--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIHZpZXdCb3g9IjAgMCAxMSAxMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxjaXJjbGUgY3g9IjUuNSIgY3k9IjUuNSIgcj0iMyIgc3Ryb2tlPSIjM0Y0MzQzIiAvPgo8L3N2Zz4=");--column-checkbox-on--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjEuNSIgc3Ryb2tlPSIjM0Y0MzQzIi8+CjxyZWN0IHg9IjIiIHk9IjIiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgcng9IjIiIGZpbGw9IiMzRjQzNDMiLz4KPC9zdmc+Cg==");--column-checkbox-hover--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjEuNSIgc3Ryb2tlPSIjM0Y0MzQzIi8+CjxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIyIiBmaWxsPSIjM0Y0MzQzIi8+Cjwvc3ZnPgo=");--column-checkbox-off--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjEuNSIgc3Ryb2tlPSIjM0Y0MzQzIi8+CjxyZWN0IHg9IjUiIHk9IjUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHJ4PSIyIiBmaWxsPSIjM0Y0MzQzIi8+Cjwvc3ZnPgo=");--column-settings-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNSAzTDQuNSAxMSIgc3Ryb2tlPSIjMDQyMTIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTkuNSAzTDkuNSAxMSIgc3Ryb2tlPSIjMDQyMTIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTYgOC41QzYgOS4zMjg0MyA1LjMyODQzIDEwIDQuNSAxMEMzLjY3MTU3IDEwIDMgOS4zMjg0MyAzIDguNUMzIDcuNjcxNTcgMy42NzE1NyA3IDQuNSA3QzUuMzI4NDMgNyA2IDcuNjcxNTcgNiA4LjVaIiBmaWxsPSIjRkRGRkZEIiBzdHJva2U9IiMwNDIxMjEiLz4KPHBhdGggZD0iTTExIDUuNUMxMSA2LjMyODQzIDEwLjMyODQgNyA5LjUgN0M4LjY3MTU3IDcgOCA2LjMyODQzIDggNS41QzggNC42NzE1NyA4LjY3MTU3IDQgOS41IDRDMTAuMzI4NCA0IDExIDQuNjcxNTcgMTEgNS41WiIgZmlsbD0iI0ZERkZGRCIgc3Ryb2tlPSIjMDQyMTIxIi8+Cjwvc3ZnPgo=");--sort-asc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguODU0MTQgOS4wOTM5OUM4Ljg1NDE0IDkuMzk4NTMgOC42MDcyNyA5LjY0NTQgOC4zMDI3MyA5LjY0NTRDNy45OTgyIDkuNjQ1NCA3Ljc1MTMzIDkuMzk4NTMgNy43NTEzMyA5LjA5Mzk5TDguODU0MTQgOS4wOTM5OVpNNy45MTI4MyAyLjkxODZDOC4xMjgxNyAyLjcwMzI2IDguNDc3MyAyLjcwMzI2IDguNjkyNjQgMi45MTg2TDEyLjIwMTggNi40Mjc3M0MxMi40MTcxIDYuNjQzMDcgMTIuNDE3MSA2Ljk5MjIgMTIuMjAxOCA3LjIwNzUzQzExLjk4NjQgNy40MjI4NyAxMS42MzczIDcuNDIyODcgMTEuNDIyIDcuMjA3NTNMOC4zMDI3MyA0LjA4ODMxTDUuMTgzNTEgNy4yMDc1M0M0Ljk2ODE3IDcuNDIyODcgNC42MTkwNCA3LjQyMjg3IDQuNDAzNyA3LjIwNzUzQzQuMTg4MzcgNi45OTIyIDQuMTg4MzcgNi42NDMwNyA0LjQwMzcgNi40Mjc3M0w3LjkxMjgzIDIuOTE4NlpNNy43NTEzMyA5LjA5Mzk5TDcuNzUxMzMgMy4zMDg1TDguODU0MTQgMy4zMDg1TDguODU0MTQgOS4wOTM5OUw3Ljc1MTMzIDkuMDkzOTlaIiBmaWxsPSIjMDQyMTIxIi8+CjxsaW5lIHgxPSIzLjg5MTM2IiB5MT0iMTEuNTc5NSIgeDI9IjEyLjcxMzkiIHkyPSIxMS41Nzk1IiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMS4xMDI4MSIvPgo8L3N2Zz4K");--sort-desc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMTY4MzIgNi4zNDU0NkM3LjE2ODMyIDYuMDQwOTMgNy40MTUxOSA1Ljc5NDA1IDcuNzE5NzMgNS43OTQwNUM4LjAyNDI2IDUuNzk0MDUgOC4yNzExMyA2LjA0MDkzIDguMjcxMTMgNi4zNDU0Nkw3LjE2ODMyIDYuMzQ1NDZaTTguMTA5NjMgMTIuNTIwOUM3Ljg5NDI5IDEyLjczNjIgNy41NDUxNiAxMi43MzYyIDcuMzI5ODIgMTIuNTIwOUwzLjgyMDcgOS4wMTE3MkMzLjYwNTM2IDguNzk2MzkgMy42MDUzNiA4LjQ0NzI2IDMuODIwNyA4LjIzMTkyQzQuMDM2MDMgOC4wMTY1OCA0LjM4NTE2IDguMDE2NTggNC42MDA1IDguMjMxOTJMNy43MTk3MyAxMS4zNTExTDEwLjgzOSA4LjIzMTkyQzExLjA1NDMgOC4wMTY1OCAxMS40MDM0IDguMDE2NTggMTEuNjE4OCA4LjIzMTkyQzExLjgzNDEgOC40NDcyNiAxMS44MzQxIDguNzk2MzkgMTEuNjE4OCA5LjAxMTcyTDguMTA5NjMgMTIuNTIwOVpNOC4yNzExMyA2LjM0NTQ2TDguMjcxMTMgMTIuMTMwOUw3LjE2ODMyIDEyLjEzMDlMNy4xNjgzMiA2LjM0NTQ2TDguMjcxMTMgNi4zNDU0NloiIGZpbGw9IiMwNDIxMjEiLz4KPGxpbmUgeDE9IjEyLjEzMDkiIHkxPSIzLjg1OTc2IiB4Mj0iMy4zMDgzNiIgeTI9IjMuODU5NzYiIHN0cm9rZT0iIzA0MjEyMSIgc3Ryb2tlLXdpZHRoPSIxLjEwMjgxIi8+Cjwvc3ZnPgo=");--sort-col-asc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMTU3OTYgOC4zNzM5MkM2Ljg1MzQzIDguMzczOTIgNi42MDY1NSA4LjEyNzA0IDYuNjA2NTUgNy44MjI1MUM2LjYwNjU1IDcuNTE3OTggNi44NTM0MyA3LjI3MTEgNy4xNTc5NiA3LjI3MTFMNy4xNTc5NiA4LjM3MzkyWk0xMy4zMzM0IDcuNDMyNjFDMTMuNTQ4NyA3LjY0Nzk0IDEzLjU0ODcgNy45OTcwNyAxMy4zMzM0IDguMjEyNDFMOS44MjQyMyAxMS43MjE1QzkuNjA4ODkgMTEuOTM2OSA5LjI1OTc2IDExLjkzNjkgOS4wNDQ0MiAxMS43MjE1QzguODI5MDggMTEuNTA2MiA4LjgyOTA4IDExLjE1NzEgOS4wNDQ0MiAxMC45NDE3TDEyLjE2MzYgNy44MjI1MUw5LjA0NDQyIDQuNzAzMjlDOC44MjkwOCA0LjQ4Nzk1IDguODI5MDggNC4xMzg4MiA5LjA0NDQyIDMuOTIzNDhDOS4yNTk3NiAzLjcwODE0IDkuNjA4ODkgMy43MDgxNCA5LjgyNDIyIDMuOTIzNDhMMTMuMzMzNCA3LjQzMjYxWk03LjE1Nzk2IDcuMjcxMUwxMi45NDM0IDcuMjcxMUwxMi45NDM0IDguMzczOTJMNy4xNTc5NiA4LjM3MzkyTDcuMTU3OTYgNy4yNzExWiIgZmlsbD0iIzA0MjEyMSIvPgo8bGluZSB4MT0iNC42NzIyNiIgeTE9IjMuNDExMTMiIHgyPSI0LjY3MjI2IiB5Mj0iMTIuMjMzNiIgc3Ryb2tlPSIjMDQyMTIxIiBzdHJva2Utd2lkdGg9IjEuMTAyODEiLz4KPC9zdmc+Cg==");--sort-col-desc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuOTk5MjcgNy4yNzExQzEwLjMwMzggNy4yNzExIDEwLjU1MDcgNy41MTc5OCAxMC41NTA3IDcuODIyNTFDMTAuNTUwNyA4LjEyNzA0IDEwLjMwMzggOC4zNzM5MiA5Ljk5OTI3IDguMzczOTJMOS45OTkyNyA3LjI3MTFaTTMuODIzODcgOC4yMTI0MUMzLjYwODU0IDcuOTk3MDggMy42MDg1NCA3LjY0Nzk1IDMuODIzODcgNy40MzI2MUw3LjMzMyAzLjkyMzQ4QzcuNTQ4MzQgMy43MDgxNCA3Ljg5NzQ3IDMuNzA4MTQgOC4xMTI4MSAzLjkyMzQ4QzguMzI4MTQgNC4xMzg4MiA4LjMyODE0IDQuNDg3OTUgOC4xMTI4MSA0LjcwMzI5TDQuOTkzNTggNy44MjI1MUw4LjExMjgxIDEwLjk0MTdDOC4zMjgxNSAxMS4xNTcxIDguMzI4MTUgMTEuNTA2MiA4LjExMjgxIDExLjcyMTVDNy44OTc0NyAxMS45MzY5IDcuNTQ4MzQgMTEuOTM2OSA3LjMzMyAxMS43MjE1TDMuODIzODcgOC4yMTI0MVpNOS45OTkyNyA4LjM3MzkyTDQuMjEzNzggOC4zNzM5Mkw0LjIxMzc4IDcuMjcxMUw5Ljk5OTI3IDcuMjcxMUw5Ljk5OTI3IDguMzczOTJaIiBmaWxsPSIjMDQyMTIxIi8+CjxsaW5lIHgxPSIxMi40ODQ3IiB5MT0iMTIuMjMzNiIgeDI9IjEyLjQ4NDciIHkyPSIzLjQxMTE0IiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMS4xMDI4MSIvPgo8L3N2Zz4K");--sort-abs-asc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuNjc5OTYgMTIuMjMzNkg3LjE5ODYzVjguMzczNzlINS4xMzA4Nkw4LjQzOTMgMy40MTExM0wxMS43NDc3IDguMzczNzlIOS42Nzk5NlYxMi4yMzM2WiIgc3Ryb2tlPSIjMDQyMTIxIiBzdHJva2Utd2lkdGg9IjEuMTAyODEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K");--sort-abs-desc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMTA1OTMgMy40MTExNEw5LjU4NzI2IDMuNDExMTRMOS41ODcyNiA3LjI3MDk5TDExLjY1NSA3LjI3MDk5TDguMzQ2NTkgMTIuMjMzNkw1LjAzODE1IDcuMjcwOTlMNy4xMDU5MyA3LjI3MDk5TDcuMTA1OTMgMy40MTExNFoiIHN0cm9rZT0iIzA0MjEyMSIgc3Ryb2tlLXdpZHRoPSIxLjEwMjgxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg==");--sort-abs-col-asc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuNzQ3ODEgOS4wNjMwMkwzLjc0NzgxIDYuNTgxNjlMNy42MDc2NiA2LjU4MTY5TDcuNjA3NjYgNC41MTM5MkwxMi41NzAzIDcuODIyMzVMNy42MDc2NiAxMS4xMzA4TDcuNjA3NjYgOS4wNjMwMkwzLjc0NzgxIDkuMDYzMDJaIiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMS4xMDI4MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=");--sort-abs-col-desc-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2MzEgNi41ODE3NkwxMi42NjMxIDkuMDYzMDlMOC44MDMyMyA5LjA2MzA5TDguODAzMjMgMTEuMTMwOUwzLjg0MDU4IDcuODIyNDJMOC44MDMyMyA0LjUxMzk5TDguODAzMjMgNi41ODE3NkwxMi42NjMxIDYuNTgxNzZaIiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMS4xMDI4MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=");--sort-none-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGxpbmUgeDE9IjMuOTg0MTMiIHkxPSI4LjI3MTEiIHgyPSIxMi44MDY2IiB5Mj0iOC4yNzExIiBzdHJva2U9IiMwNDIxMjEiIHN0cm9rZS13aWR0aD0iMS4xMDI4MSIvPgo8L3N2Zz4K");--add-expression-icon--mask-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxwYXRoIGQ9Ik0gMTUuOTE1IDguNTU1IEwgMTAuMjEzIDE0LjI1NyIgc3Ryb2tlLXdpZHRoPSIxLjAwNDkxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0eWxlPSJzdHJva2U6ICMwNDIxMjEiPgogICAgPC9wYXRoPgogICAgPHBhdGgKICAgICAgICBkPSJNIDEuNjE2IDE0LjMzIEwgMy4yNTEgMTQuMzMgQyA0LjI4IDE0LjMzIDUuMTU4IDEzLjU4NiA1LjMyNyAxMi41NzEgTCA2LjU4NCA0Ljk5MiBDIDYuNzUyIDMuOTc2IDcuNjMgMy4yMzIgOC42NiAzLjIzMiBMIDExLjM0NyAzLjIzMiIKICAgICAgICBzdHJva2Utd2lkdGg9IjEuMDA0OTEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3R5bGU9InN0cm9rZTojMDQyMTIxIj48L3BhdGg+CiAgICA8cGF0aCBkPSJNIDEwLjIxMiA4LjU1NSBMIDE1LjkxNCAxNC4yNTciIHN0cm9rZS13aWR0aD0iMS4wMDQ5MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHlsZT0ic3Ryb2tlOiAjMDQyMTIxIj4KICAgIDwvcGF0aD4KPC9zdmc+");color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ABABAB;--inactive--border-color:#DADADA;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#FDFFFD;--overflow-hint-icon--color:#FDFFFD;--group_by--content:"Group By";--split_by--content:"Split By";--inactive-column-selector--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHJ4PSIxLjUiIHN0cm9rZT0iI0ZGRkZGRiIgLz4KPC9zdmc+");--active-column-selector--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxwYXRoCiAgICAgICAgZD0iTSAyIDAgTCAxMiAwIEMgMTMuMTA1IDAgMTQgMC44OTUgMTQgMiBMIDE0IDEyIEMgMTQgMTMuMTA1IDEzLjEwNSAxNCAxMiAxNCBMIDIgMTQgQyAwLjg5NSAxNCAwIDEzLjEwNSAwIDEyIEwgMCAyIEMgMCAwLjg5NSAwLjg5NSAwIDIgMCBaIE0gMy42NDYgNy4zNTQgTCA1LjY0NiA5LjM1NCBMIDYgOS43MDcgTCA2LjM1NCA5LjM1NCBMIDEwLjg1NCA0Ljg1NCBMIDEwLjE0NiA0LjE0NiBMIDYgOC4yOTMgTCA0LjM1NCA2LjY0NiBaIgogICAgICAgIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgIDxwYXRoIGQ9Ik00IDdMNiA5TDEwLjUgNC41IiBzdHlsZT0idmlzaWJpbGl0eTogaGlkZGVuOyI+PC9wYXRoPgo8L3N2Zz4=");--overflow-hint-icon--content:"!";--reset-button-icon--content:"refresh";--save-button-icon--content:"save";--transpose-button--content:"Swap";--config-button-icon--content:"configure";--column-style-open-button--content:"style";--column-style-close-button--content:">\00a0 style";--tree-label-collapse--content:"-";--tree-label-expand--content:"+";--toolbar-scroll-lock--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iNi41IiB5PSI4LjUiIHdpZHRoPSI4IiBoZWlnaHQ9IjciIHN0cm9rZT0iIzA0MjEyMSIvPgo8cGF0aCBkPSJNOCA4VjcuODA3NzZDOCA2LjI1NzA4IDkuMjU3MDggNSAxMC44MDc4IDVIMTAuOTM4NEMxMi4xNSA1IDEzLjIwNjEgNS44MjQ1OSAxMy41IDdWNyIgc3Ryb2tlPSIjMDQyMTIxIi8+CjxwYXRoIGQ9Ik0xMS41IDEyQzExLjUgMTIuNTUyMyAxMS4wNTIzIDEzIDEwLjUgMTNDOS45NDc3MiAxMyA5LjUgMTIuNTUyMyA5LjUgMTJDOS41IDExLjQ0NzcgOS45NDc3MiAxMSAxMC41IDExQzExLjA1MjMgMTEgMTEuNSAxMS40NDc3IDExLjUgMTJaIiBmaWxsPSIjMDQyMTIxIi8+Cjwvc3ZnPgo=");--toolbar-scroll-lock-active--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iNi41IiB5PSI5LjUiIHdpZHRoPSI4IiBoZWlnaHQ9IjciIHN0cm9rZT0iIzA0MjEyMSIvPgo8cGF0aCBkPSJNMTMgOVY4LjVDMTMgNy4xMTkyOSAxMS44ODA3IDYgMTAuNSA2VjZDOS4xMTkyOSA2IDggNy4xMTkyOSA4IDguNVY5IiBzdHJva2U9IiMwNDIxMjEiLz4KPHBhdGggZD0iTTExLjQ5MTEgMTNDMTEuNDkxMSAxMy41NTIzIDExLjA0MzQgMTQgMTAuNDkxMSAxNEM5LjkzODc4IDE0IDkuNDkxMDcgMTMuNTUyMyA5LjQ5MTA3IDEzQzkuNDkxMDcgMTIuNDQ3NyA5LjkzODc4IDEyIDEwLjQ5MTEgMTJDMTEuMDQzNCAxMiAxMS40OTExIDEyLjQ0NzcgMTEuNDkxMSAxM1oiIGZpbGw9IiMwNDIxMjEiLz4KPGxpbmUgeDE9IjQuNSIgeTE9IjUiIHgyPSI0LjUiIHkyPSIxNyIgc3Ryb2tlPSIjMDQyMTIxIi8+CjxsaW5lIHgxPSIxNi41IiB5MT0iNSIgeDI9IjE2LjUiIHkyPSIxNyIgc3Ryb2tlPSIjMDQyMTIxIi8+Cjwvc3ZnPgo=");--toolbar-edit-mode--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUgNkwxNC41IDE1LjUiIHN0cm9rZT0iIzA0MjEyMSIvPgo8cGF0aCBkPSJNOSAxMEw1IDE0VjE2SDdMMTEgMTIiIHN0cm9rZT0iIzA0MjEyMSIvPgo8cGF0aCBkPSJNMTMgMTAuNUwxMC41IDhMMTIgNi41TDE0LjUgOUwxMyAxMC41WiIgZmlsbD0iIzA0MjEyMSIvPgo8cGF0aCBkPSJNMTUgOC41TDEyLjUgNkwxMy43OTI5IDQuNzA3MTFDMTQuMTgzNCA0LjMxNjU4IDE0LjgxNjYgNC4zMTY1OCAxNS4yMDcxIDQuNzA3MTFMMTYuMjkyOSA1Ljc5Mjg5QzE2LjY4MzQgNi4xODM0MiAxNi42ODM0IDYuODE2NTggMTYuMjkyOSA3LjIwNzExTDE1IDguNVoiIGZpbGw9IiMwNDIxMjEiLz4KPC9zdmc+Cg==");--toolbar-edit-mode-active--content:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUgMTRMMTMuNzkyOSA1LjIwNzExQzE0LjE4MzQgNC44MTY1OCAxNC44MTY2IDQuODE2NTggMTUuMjA3MSA1LjIwNzExTDE1Ljc5MjkgNS43OTI4OUMxNi4xODM0IDYuMTgzNDIgMTYuMTgzNCA2LjgxNjU4IDE1Ljc5MjkgNy4yMDcxMUw3IDE2SDVWMTRaIiBzdHJva2U9IiMwNDIxMjEiLz4KPHBhdGggZD0iTTEzIDEwLjVMMTAuNSA4TDEyIDYuNUwxNC41IDlMMTMgMTAuNVoiIGZpbGw9IiMwNDIxMjEiLz4KPHBhdGggZD0iTTE1IDguNUwxMi41IDZMMTMuNzkyOSA0LjcwNzExQzE0LjE4MzQgNC4zMTY1OCAxNC44MTY2IDQuMzE2NTggMTUuMjA3MSA0LjcwNzExTDE2LjI5MjkgNS43OTI4OUMxNi42ODM0IDYuMTgzNDIgMTYuNjgzNCA2LjgxNjU4IDE2LjI5MjkgNy4yMDcxMUwxNSA4LjVaIiBmaWxsPSIjMDQyMTIxIi8+Cjwvc3ZnPgo=");}perspective-viewer,perspective-viewer[theme="Pro Light"]{--theme-name:"Pro Light";}perspective-viewer[theme="Pro Light"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);}perspective-copy-menu[theme="Pro Light"],perspective-export-menu[theme="Pro Light"],perspective-dropdown[theme="Pro Light"],perspective-date-column-style[theme="Pro Light"],perspective-datetime-column-style[theme="Pro Light"],perspective-number-column-style[theme="Pro Light"],perspective-string-column-style[theme="Pro Light"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:white;}perspective-viewer,perspective-viewer[theme="Pro Dark"]{--theme-name:"Pro Dark";}perspective-viewer[theme="Pro Dark"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--rt-pos-cell--color:#7dc3f0;--rt-neg-cell--color:#ff9485;--d3fc-legend--text:#c5c9d0;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-tooltip--color:white;--d3fc-axis-ticks--color:#c5c9d0;--d3fc-axis--lines:#61656e;--d3fc-gridline--color:#3b3f46;--d3fc-tooltip--background:rgba(42,44,47,1);--d3fc-tooltip--border-color:#242526;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgb(71,120,194);--d3fc-series-1:rgb(71,120,194);--d3fc-series-2:rgb(204,120,48);--d3fc-series-3:rgb(158,84,192);--d3fc-series-4:rgb(51,150,153);--d3fc-series-5:rgb(102,114,143);--d3fc-series-6:rgb(211,103,189);--d3fc-series-7:rgb(109,124,77);--d3fc-series-8:rgb(221,99,103);--d3fc-series-9:rgb(120,104,206);--d3fc-series-10:rgb(23,166,123);--d3fc-full--gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--d3fc-positive--gradient:linear-gradient(#242526 0%,#3289c8 100%);--d3fc-negative--gradient:linear-gradient(#dd6367 0%,#242526 100%);--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";--map-attribution--filter:invert(1)hue-rotate(180deg);--map-element-background:#212c2f;--map-category-1:rgb(71,120,194);--map-category-2:rgb(204,120,48);--map-category-3:rgb(158,84,192);--map-category-4:rgb(51,150,153);--map-category-5:rgb(102,114,143);--map-category-6:rgb(211,103,189);--map-category-7:rgb(109,124,77);--map-category-8:rgb(221,99,103);--map-category-9:rgb(120,104,206);--map-category-10:rgb(23,166,123);--map-gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);}perspective-copy-menu[theme="Pro Dark"],perspective-export-menu[theme="Pro Dark"],perspective-dropdown[theme="Pro Dark"],perspective-date-column-style[theme="Pro Dark"],perspective-datetime-column-style[theme="Pro Dark"],perspective-number-column-style[theme="Pro Dark"],perspective-string-column-style[theme="Pro Dark"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);background-color:#242526;border:1px solid#4c505b;}perspective-viewer,perspective-viewer[theme="Monokai"]{--theme-name:"Monokai";}perspective-viewer[theme="Monokai"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--rt-pos-cell--color:#7dc3f0;--rt-neg-cell--color:#ff9485;--d3fc-legend--text:#c5c9d0;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-tooltip--color:white;--d3fc-axis-ticks--color:#c5c9d0;--d3fc-axis--lines:#61656e;--d3fc-gridline--color:#3b3f46;--d3fc-tooltip--background:rgba(42,44,47,1);--d3fc-tooltip--border-color:#242526;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgb(71,120,194);--d3fc-series-1:rgb(71,120,194);--d3fc-series-2:rgb(204,120,48);--d3fc-series-3:rgb(158,84,192);--d3fc-series-4:rgb(51,150,153);--d3fc-series-5:rgb(102,114,143);--d3fc-series-6:rgb(211,103,189);--d3fc-series-7:rgb(109,124,77);--d3fc-series-8:rgb(221,99,103);--d3fc-series-9:rgb(120,104,206);--d3fc-series-10:rgb(23,166,123);--d3fc-full--gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--d3fc-positive--gradient:linear-gradient(#242526 0%,#3289c8 100%);--d3fc-negative--gradient:linear-gradient(#dd6367 0%,#242526 100%);--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";--map-attribution--filter:invert(1)hue-rotate(180deg);--map-element-background:#212c2f;--map-category-1:rgb(71,120,194);--map-category-2:rgb(204,120,48);--map-category-3:rgb(158,84,192);--map-category-4:rgb(51,150,153);--map-category-5:rgb(102,114,143);--map-category-6:rgb(211,103,189);--map-category-7:rgb(109,124,77);--map-category-8:rgb(221,99,103);--map-category-9:rgb(120,104,206);--map-category-10:rgb(23,166,123);--map-gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);color:#d6d6d6;background-color:#2d2a2e;--active--color:#78dce8;--error--color:#ff6188;--inactive--color:#797979;--inactive--border-color:#666666;--plugin--background:#2d2a2e;--float--column-type--color:#78dce8;--string--column-type--color:#ff6188;--date--column-type--color:#a9dc76;--boolean--column-type--color:#ffd866;--warning--background:#ffd866;--rt-pos-cell--color:#78dce8!important;--rt-neg-cell--color:#ff6188!important;--rt--border-color:#444444;}perspective-viewer[theme="Monokai"] regular-table table tbody th:empty{background:linear-gradient(to right,transparent 9px,#444444 10px,transparent 11px);}perspective-viewer[theme="Monokai"]{--d3fc-treedata--labels:#d6d6d6;--d3fc-treedata--hover-highlight:#2d2a2e;--d3fc-axis-ticks--color:#d6d6d6;--d3fc-gridline--color:#444444;--d3fc-series:#78dce8;--d3fc-series-1:#78dce8;--d3fc-series-2:#ff6188;--d3fc-series-3:#fc9867;--d3fc-series-4:#ffd866;--d3fc-series-5:#a9dc76;--d3fc-series-6:#ab9df2;--d3fc-series-7:#66d9ef;--d3fc-series-8:#f92672;--d3fc-series-9:#fd971f;--d3fc-series-10:#e6db74;--d3fc-series-11:#a6e22e;--d3fc-series-12:#ae81ff;--d3fc-negative--gradient:linear-gradient(#272822 0%,#ff6188 100%);--d3fc-positive--gradient:linear-gradient(#272822 0%,#78dce8 100%);--d3fc-full--gradient:linear-gradient(#ff6188 0%,#272822 50%,#78dce8 100%);}perspective-copy-menu[theme="Monokai"],perspective-export-menu[theme="Monokai"],perspective-dropdown[theme="Monokai"],perspective-date-column-style[theme="Monokai"],perspective-datetime-column-style[theme="Monokai"],perspective-number-column-style[theme="Monokai"],perspective-string-column-style[theme="Monokai"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);background-color:#242526;border:1px solid#4c505b;color:#d6d6d6;background-color:#2d2a2e;--active--color:#78dce8;--error--color:#ff6188;--inactive--color:#797979;--inactive--border-color:#666666;--plugin--background:#2d2a2e;--float--column-type--color:#78dce8;--string--column-type--color:#ff6188;--date--column-type--color:#a9dc76;--boolean--column-type--color:#ffd866;--warning--background:#ffd866;background-color:#2d2a2e;border:1px solid#797979;}perspective-viewer,perspective-viewer[theme="Solarized"]{--theme-name:"Solarized";}perspective-viewer[theme="Solarized"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);color:#586e75;background-color:#eee8d5;--icon--color:#586e75;--active--color:#268bd2;--error--color:#cb4b16;--inactive--color:#93a1a1;--inactive--border-color:var(--inactive--color);--plugin--background:#fdf6e3;--float--column-type--color:#268bd2;--string--column-type--color:#cb4b16;--date--column-type--color:#2aa198;--boolean--column-type--color:#b58900;--rt-pos-cell--color:#268bd2!important;--rt-neg-cell--color:#cb4b16!important;--rt-hover--border-color:#ccc;--rt--border-color:#93a1a1;--d3fc-treedata--labels:black;--d3fc-treedata--hover-highlight:black;--d3fc-axis-ticks--color:#586e75;--d3fc-gridline--color:#eee8d5;--d3fc-series:#268bd2;--d3fc-series-1:#268bd2;--d3fc-series-2:#cb4b16;--d3fc-series-3:#b58900;--d3fc-series-4:#859900;--d3fc-series-5:#2aa198;--d3fc-series-6:#6c71c4;--d3fc-series-7:#d33682;--d3fc-positive--gradient:linear-gradient(#268bd2 0%,#2aa198,#859900,#b58900,#cb4b16,#dc322f,#d33682 100%);}perspective-copy-menu[theme="Solarized"],perspective-export-menu[theme="Solarized"],perspective-dropdown[theme="Solarized"],perspective-date-column-style[theme="Solarized"],perspective-datetime-column-style[theme="Solarized"],perspective-number-column-style[theme="Solarized"],perspective-string-column-style[theme="Solarized"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;color:#586e75;background-color:#eee8d5;--icon--color:#586e75;--active--color:#268bd2;--error--color:#cb4b16;--inactive--color:#93a1a1;--inactive--border-color:var(--inactive--color);--plugin--background:#fdf6e3;--float--column-type--color:#268bd2;--string--column-type--color:#cb4b16;--date--column-type--color:#2aa198;--boolean--column-type--color:#b58900;background-color:#fdf6e3;}x{color:#cb4b16;}perspective-viewer,perspective-viewer[theme="Solarized Dark"]{--theme-name:"Solarized Dark";}perspective-viewer[theme="Solarized Dark"]{background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);color:#586e75;background-color:#eee8d5;--icon--color:#586e75;--active--color:#268bd2;--error--color:#cb4b16;--inactive--color:#93a1a1;--inactive--border-color:var(--inactive--color);--plugin--background:#fdf6e3;--float--column-type--color:#268bd2;--string--column-type--color:#cb4b16;--date--column-type--color:#2aa198;--boolean--column-type--color:#b58900;--rt-pos-cell--color:#268bd2!important;--rt-neg-cell--color:#cb4b16!important;--rt-hover--border-color:#ccc;--rt--border-color:#93a1a1;--d3fc-treedata--labels:black;--d3fc-treedata--hover-highlight:black;--d3fc-axis-ticks--color:#586e75;--d3fc-gridline--color:#eee8d5;--d3fc-series:#268bd2;--d3fc-series-1:#268bd2;--d3fc-series-2:#cb4b16;--d3fc-series-3:#b58900;--d3fc-series-4:#859900;--d3fc-series-5:#2aa198;--d3fc-series-6:#6c71c4;--d3fc-series-7:#d33682;--d3fc-positive--gradient:linear-gradient(#268bd2 0%,#2aa198,#859900,#b58900,#cb4b16,#dc322f,#d33682 100%);color:#93a1a1;background-color:#002b36;--inactive--color:#586e75;--inactive--border-color:var(--inactive--color);--plugin--background:#073642;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-axis-ticks--color:#93a1a1;--d3fc-axis--lines:#93a1a1;--d3fc-gridline--color:#002b36;--d3fc-legend--text:#93a1a1;--d3fc-full--gradient:linear-gradient(#cb4b16 0%,#073642 50%,#268bd2 100%);--d3fc-negative--gradient:linear-gradient(#cb4b16 0%,#073642 100%);}perspective-copy-menu[theme="Solarized Dark"],perspective-export-menu[theme="Solarized Dark"],perspective-dropdown[theme="Solarized Dark"],perspective-date-column-style[theme="Solarized Dark"],perspective-datetime-column-style[theme="Solarized Dark"],perspective-number-column-style[theme="Solarized Dark"],perspective-string-column-style[theme="Solarized Dark"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;color:#586e75;background-color:#eee8d5;--icon--color:#586e75;--active--color:#268bd2;--error--color:#cb4b16;--inactive--color:#93a1a1;--inactive--border-color:var(--inactive--color);--plugin--background:#fdf6e3;--float--column-type--color:#268bd2;--string--column-type--color:#cb4b16;--date--column-type--color:#2aa198;--boolean--column-type--color:#b58900;background-color:#fdf6e3;color:#93a1a1;background-color:#002b36;--inactive--color:#586e75;--inactive--border-color:var(--inactive--color);--plugin--background:#073642;background-color:#073642;}perspective-viewer,perspective-viewer[theme="Vaporwave"]{--theme-name:"Vaporwave";}perspective-viewer[theme="Vaporwave"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--rt-pos-cell--color:#7dc3f0;--rt-neg-cell--color:#ff9485;--d3fc-legend--text:#c5c9d0;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-tooltip--color:white;--d3fc-axis-ticks--color:#c5c9d0;--d3fc-axis--lines:#61656e;--d3fc-gridline--color:#3b3f46;--d3fc-tooltip--background:rgba(42,44,47,1);--d3fc-tooltip--border-color:#242526;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgb(71,120,194);--d3fc-series-1:rgb(71,120,194);--d3fc-series-2:rgb(204,120,48);--d3fc-series-3:rgb(158,84,192);--d3fc-series-4:rgb(51,150,153);--d3fc-series-5:rgb(102,114,143);--d3fc-series-6:rgb(211,103,189);--d3fc-series-7:rgb(109,124,77);--d3fc-series-8:rgb(221,99,103);--d3fc-series-9:rgb(120,104,206);--d3fc-series-10:rgb(23,166,123);--d3fc-full--gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--d3fc-positive--gradient:linear-gradient(#242526 0%,#3289c8 100%);--d3fc-negative--gradient:linear-gradient(#dd6367 0%,#242526 100%);--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";--map-attribution--filter:invert(1)hue-rotate(180deg);--map-element-background:#212c2f;--map-category-1:rgb(71,120,194);--map-category-2:rgb(204,120,48);--map-category-3:rgb(158,84,192);--map-category-4:rgb(51,150,153);--map-category-5:rgb(102,114,143);--map-category-6:rgb(211,103,189);--map-category-7:rgb(109,124,77);--map-category-8:rgb(221,99,103);--map-category-9:rgb(120,104,206);--map-category-10:rgb(23,166,123);--map-gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);color:#49acff;background-color:rgb(7,8,29)!important;--icon--color:#49acff;--inactive--color:rgb(19,33,50)!important;--inactive--border-color:var(--inactive--color);--plugin--background:rgb(7,8,29)!important;--status-icon-updating-keyframes-start--filter:opacity(1);--status-icon-updating-keyframes-end--filter:opacity(0);--status-icon-updating-keyframes-start--transform:scale(1);--status-icon-updating-keyframes-end--transform:scale(0.5);--status-icon-keyframes-start--transform:scale(1.25);--status-icon-keyframes-end--transform:scale(1);--pp-color-1:rgb(9,33,50);--pp-color-2:rgb(66,182,230);--rt-pos-cell--color:rgb(66,182,230)!important;--rt-hover--border-color:var(--pp-color-1)!important;}perspective-viewer[theme="Vaporwave"] regular-table table tbody th:empty{background:linear-gradient(to right,transparent 9px,rgb(19,33,50)10px,transparent 11px);background-repeat:no-repeat;background-position:0px -10px;}perspective-viewer[theme="Vaporwave"]{--d3fc-axis-ticks--color:#49acff;--d3fc-gridline--color:rgb(19,33,50);--d3fc-series:#01cdfe;--d3fc-series-1:#01cdfe;--d3fc-series-2:#ff71ce;--d3fc-series-3:#05ffa1;--d3fc-series-4:#b967ff;--d3fc-series-5:#fffb96;--d3fc-series-6:hsl(192,99%,25%);--d3fc-series-7:hsl(321,100%,36%);--d3fc-series-8:hsl(192,99%,25%);--d3fc-series-9:hsl(157,100%,25%);--d3fc-series-10:hsl(272,100%,35%);--d3fc-negative--gradient:linear-gradient(#f3d431,#efb92d,#ed9c25,#eb7e20,#e75d1e,#d14632,#b03e38,#8c3a36,#643633,#07081d)!important;--d3fc-positive--gradient:linear-gradient(#07081d,#2e4463,#1e588a,#086da7,#0082b9,#039ac7,#12b1d4,#2bc8e2,#3ddff0,#61f4fb)!important;--d3fc-full--gradient:linear-gradient(#f3d431,#efb92d,#ed9c25,#eb7e20,#e75d1e,#d14632,#b03e38,#8c3a36,#643633,#07081d,#2e4463,#1e588a,#086da7,#0082b9,#039ac7,#12b1d4,#2bc8e2,#3ddff0,#61f4fb)!important;}perspective-copy-menu[theme="Vaporwave"],perspective-export-menu[theme="Vaporwave"],perspective-dropdown[theme="Vaporwave"],perspective-date-column-style[theme="Vaporwave"],perspective-datetime-column-style[theme="Vaporwave"],perspective-number-column-style[theme="Vaporwave"],perspective-string-column-style[theme="Vaporwave"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);background-color:#242526;border:1px solid#4c505b;color:#49acff;background-color:rgb(7,8,29)!important;--icon--color:#49acff;--inactive--color:rgb(19,33,50)!important;--inactive--border-color:var(--inactive--color);--plugin--background:rgb(7,8,29)!important;background-color:#07081d;}perspective-viewer,perspective-viewer[theme="Gruvbox Light"]{--theme-name:"Gruvbox Light";}perspective-viewer[theme="Gruvbox Light"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--theme-fg0:#282828;--theme-fg1:#3c3836;--theme-fg2:#7c6f64;--theme-gray:#928374;--theme-bg0:#fbf1c7;--theme-bg1:#ebdbb2;--theme-bg2:#a89984;--theme-red:#cc241d;--theme-green:#98871a;--theme-yellow:#d79921;--theme-blue:#458588;--theme-purple:#b16286;--theme-aqua:#689d5a;--theme-orange:#d65d0e;--theme-alt-red:#9d0006;--theme-alt-green:#79740e;--theme-alt-yellow:#b57614;--theme-alt-blue:#076678;--theme-alt-purple:#8f3f71;--theme-alt-aqua:#427b58;--theme-alt-orange:#af3a03;color:var(--theme-fg1);background-color:var(--theme-bg1);--icon--color:var(--theme-fg0);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg0);--status-icon-connected--color:var(--theme-aqua);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);--rt-pos-cell--color:var(--theme-blue);--rt-neg-cell--color:var(--theme-red);--d3fc-axis-ticks--color:var(--theme-fg1);--d3fc-gridline--color:var(--theme-bg2);--d3fc-series:var(--theme-blue);--d3fc-series-1:var(--theme-blue);--d3fc-series-2:var(--theme-red);--d3fc-series-3:var(--theme-green);--d3fc-series-4:var(--theme-purple);--d3fc-series-5:var(--theme-aqua);--d3fc-series-6:var(--theme-alt-blue);--d3fc-series-7:var(--theme-alt-red);--d3fc-series-8:var(--theme-alt-green);--d3fc-series-9:var(--theme-alt-purple);--d3fc-series-10:var(--theme-alt-aqua);--d3fc-negative--gradient:linear-gradient(var(--theme-bg1),var(--theme-red),var(--theme-alt-red))!important;--d3fc-positive--gradient:linear-gradient(var(--theme-bg1),var(--theme-blue),var(--theme-alt-blue))!important;--d3fc-full--gradient:linear-gradient(var(--theme-alt-red),var(--theme-red),var(--theme-bg1),var(--theme-blue),var(--theme-alt-blue))!important;}perspective-copy-menu[theme="Gruvbox Light"],perspective-export-menu[theme="Gruvbox Light"],perspective-dropdown[theme="Gruvbox Light"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;--theme-fg0:#282828;--theme-fg1:#3c3836;--theme-fg2:#7c6f64;--theme-gray:#928374;--theme-bg0:#fbf1c7;--theme-bg1:#ebdbb2;--theme-bg2:#a89984;--theme-red:#cc241d;--theme-green:#98871a;--theme-yellow:#d79921;--theme-blue:#458588;--theme-purple:#b16286;--theme-aqua:#689d5a;--theme-orange:#d65d0e;--theme-alt-red:#9d0006;--theme-alt-green:#79740e;--theme-alt-yellow:#b57614;--theme-alt-blue:#076678;--theme-alt-purple:#8f3f71;--theme-alt-aqua:#427b58;--theme-alt-orange:#af3a03;color:var(--theme-fg1);background-color:var(--theme-bg1);--icon--color:var(--theme-fg0);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg0);--status-icon-connected--color:var(--theme-aqua);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);background-color:var(--theme-bg0);}perspective-viewer,perspective-viewer[theme="Gruvbox Dark"]{--theme-name:"Gruvbox Dark";}perspective-viewer[theme="Gruvbox Dark"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--rt-pos-cell--color:#7dc3f0;--rt-neg-cell--color:#ff9485;--d3fc-legend--text:#c5c9d0;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-tooltip--color:white;--d3fc-axis-ticks--color:#c5c9d0;--d3fc-axis--lines:#61656e;--d3fc-gridline--color:#3b3f46;--d3fc-tooltip--background:rgba(42,44,47,1);--d3fc-tooltip--border-color:#242526;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgb(71,120,194);--d3fc-series-1:rgb(71,120,194);--d3fc-series-2:rgb(204,120,48);--d3fc-series-3:rgb(158,84,192);--d3fc-series-4:rgb(51,150,153);--d3fc-series-5:rgb(102,114,143);--d3fc-series-6:rgb(211,103,189);--d3fc-series-7:rgb(109,124,77);--d3fc-series-8:rgb(221,99,103);--d3fc-series-9:rgb(120,104,206);--d3fc-series-10:rgb(23,166,123);--d3fc-full--gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--d3fc-positive--gradient:linear-gradient(#242526 0%,#3289c8 100%);--d3fc-negative--gradient:linear-gradient(#dd6367 0%,#242526 100%);--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";--map-attribution--filter:invert(1)hue-rotate(180deg);--map-element-background:#212c2f;--map-category-1:rgb(71,120,194);--map-category-2:rgb(204,120,48);--map-category-3:rgb(158,84,192);--map-category-4:rgb(51,150,153);--map-category-5:rgb(102,114,143);--map-category-6:rgb(211,103,189);--map-category-7:rgb(109,124,77);--map-category-8:rgb(221,99,103);--map-category-9:rgb(120,104,206);--map-category-10:rgb(23,166,123);--map-gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--theme-bg0:#282828;--theme-bg1:#3c3836;--theme-bg2:#7c6f64;--theme-gray:#928374;--theme-fg0:#fbf1c7;--theme-fg1:#ebdbb2;--theme-fg2:#a89984;--theme-red:#cc241d;--theme-green:#98871a;--theme-yellow:#d79921;--theme-blue:#458588;--theme-purple:#b16286;--theme-aqua:#689d5a;--theme-orange:#d65d0e;--theme-alt-red:#fb4934;--theme-alt-green:#b8bb26;--theme-alt-yellow:#fabd2f;--theme-alt-blue:#83a598;--theme-alt-purple:#d3869b;--theme-alt-aqua:#8ec07c;--theme-alt-orange:#fe8019;color:var(--theme-fg0);background-color:var(--theme-bg0);--icon--color:var(--theme-fg1);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg1);--status-icon-connected--color:var(--theme-aqua);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);--rt-pos-cell--color:var(--theme-alt-blue);--rt-neg-cell--color:var(--theme-alt-red);--d3fc-axis-ticks--color:var(--theme-fg1);--d3fc-gridline--color:var(--theme-bg2);--d3fc-series:var(--theme-blue);--d3fc-series-1:var(--theme-blue);--d3fc-series-2:var(--theme-red);--d3fc-series-3:var(--theme-green);--d3fc-series-4:var(--theme-purple);--d3fc-series-5:var(--theme-aqua);--d3fc-series-6:var(--theme-alt-blue);--d3fc-series-7:var(--theme-alt-red);--d3fc-series-8:var(--theme-alt-green);--d3fc-series-9:var(--theme-alt-purple);--d3fc-series-10:var(--theme-alt-aqua);--d3fc-negative--gradient:linear-gradient(var(--theme-bg0),var(--theme-red),var(--theme-alt-red))!important;--d3fc-positive--gradient:linear-gradient(var(--theme-bg0),var(--theme-blue),var(--theme-alt-blue))!important;--d3fc-full--gradient:linear-gradient(var(--theme-alt-red),var(--theme-red),var(--theme-bg0),var(--theme-blue),var(--theme-alt-blue))!important;}perspective-copy-menu[theme="Gruvbox Dark"],perspective-export-menu[theme="Gruvbox Dark"],perspective-dropdown[theme="Gruvbox Dark"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);background-color:#242526;border:1px solid#4c505b;--theme-bg0:#282828;--theme-bg1:#3c3836;--theme-bg2:#7c6f64;--theme-gray:#928374;--theme-fg0:#fbf1c7;--theme-fg1:#ebdbb2;--theme-fg2:#a89984;--theme-red:#cc241d;--theme-green:#98871a;--theme-yellow:#d79921;--theme-blue:#458588;--theme-purple:#b16286;--theme-aqua:#689d5a;--theme-orange:#d65d0e;--theme-alt-red:#fb4934;--theme-alt-green:#b8bb26;--theme-alt-yellow:#fabd2f;--theme-alt-blue:#83a598;--theme-alt-purple:#d3869b;--theme-alt-aqua:#8ec07c;--theme-alt-orange:#fe8019;color:var(--theme-fg0);background-color:var(--theme-bg0);--icon--color:var(--theme-fg1);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg1);--status-icon-connected--color:var(--theme-aqua);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);background-color:var(--theme-bg0);}perspective-viewer,perspective-viewer[theme="Dracula"]{--theme-name:"Dracula";}perspective-viewer[theme="Dracula"]{--button--font-size:16px;--config-button--padding:15px 8px 6px 8px;--column-drop-label--font-size:8px;--column-drop-container--padding:0px;--column-drop-label--display:inline-block;--column-selector--width:20px;--column-selector--font-size:16px;--column_type--width:25px;--select--padding:0px;--side-panel--padding:0px 0px 6px 4px;--top-panel--padding:0px 0px 12px 0px;--top-panel-row--display:inline-flex;--button--min-width:110px;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--d3fc-y1-label--content:"arrow_upward";--d3fc-y2-label--content:"arrow_downward";--d3fc-treedata-axis--lines:none;--d3fc-tooltip--background--color:rgba(155,155,155,0.8);--d3fc-tooltip--color:#161616;--d3fc-tooltip--border-color:#fff;--d3fc-tooltip--box-shadow:0 2px 4px 0 rgb(0 0 0/10%);--d3fc-gridline--color:#eaedef;--d3fc-axis-ticks--color:#161616;--d3fc-axis--lines:#c5c9d0;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgba(31,119,180,0.8);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);--d3fc-positive--gradient:linear-gradient(#f0f0f0 0%,#dcedc8 10%,#42b3d5 50%,#1a237e 100%);--d3fc-negative--gradient:linear-gradient(#4d342f 0%,#e4521b 50%,#feeb65 90%,#f0f0f0 100%);--rt-pos-cell--color:#338dcd;--rt-neg-cell--color:#ff471e;--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";--map-element-background:#fff;--map-category-1:#0366d6;--map-category-2:#ff7f0e;--map-category-3:#2ca02c;--map-category-4:#d62728;--map-category-5:#9467bd;--map-category-6:#8c564b;--map-category-7:#e377c2;--map-category-8:#7f7f7f;--map-category-9:#bcbd22;--map-category-10:#17becf;--map-gradient:linear-gradient(#4d342f 0%,#e4521b 22.5%,#feeb65 42.5%,#f0f0f0 50%,#dcedc8 57.5%,#42b3d5 67.5%,#1a237e 100%);background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);--rt-pos-cell--color:#7dc3f0;--rt-neg-cell--color:#ff9485;--d3fc-legend--text:#c5c9d0;--d3fc-treedata--labels:white;--d3fc-treedata--hover-highlight:white;--d3fc-tooltip--color:white;--d3fc-axis-ticks--color:#c5c9d0;--d3fc-axis--lines:#61656e;--d3fc-gridline--color:#3b3f46;--d3fc-tooltip--background:rgba(42,44,47,1);--d3fc-tooltip--border-color:#242526;--d3fc-legend--background:var(--plugin--background);--d3fc-series:rgb(71,120,194);--d3fc-series-1:rgb(71,120,194);--d3fc-series-2:rgb(204,120,48);--d3fc-series-3:rgb(158,84,192);--d3fc-series-4:rgb(51,150,153);--d3fc-series-5:rgb(102,114,143);--d3fc-series-6:rgb(211,103,189);--d3fc-series-7:rgb(109,124,77);--d3fc-series-8:rgb(221,99,103);--d3fc-series-9:rgb(120,104,206);--d3fc-series-10:rgb(23,166,123);--d3fc-full--gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--d3fc-positive--gradient:linear-gradient(#242526 0%,#3289c8 100%);--d3fc-negative--gradient:linear-gradient(#dd6367 0%,#242526 100%);--map-tile-url:"http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";--map-attribution--filter:invert(1)hue-rotate(180deg);--map-element-background:#212c2f;--map-category-1:rgb(71,120,194);--map-category-2:rgb(204,120,48);--map-category-3:rgb(158,84,192);--map-category-4:rgb(51,150,153);--map-category-5:rgb(102,114,143);--map-category-6:rgb(211,103,189);--map-category-7:rgb(109,124,77);--map-category-8:rgb(221,99,103);--map-category-9:rgb(120,104,206);--map-category-10:rgb(23,166,123);--map-gradient:linear-gradient(#dd6367 0%,#242526 50%,#3289c8 100%);--theme-bg0:#191a22;--theme-bg1:#282a36;--theme-bg2:#44475a;--theme-gray:#928374;--theme-fg0:#f8f8f2;--theme-fg1:#6272a4;--theme-fg2:#44475a;--theme-red:#ff5555;--theme-green:#50fa7b;--theme-yellow:#f1fa8c;--theme-blue:#8be9fd;--theme-purple:#bd93f9;--theme-orange:#ffb86c;--theme-pink:#ff79c6;color:var(--theme-fg0);background-color:var(--theme-bg0);--icon--color:var(--theme-fg1);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg1);--status-icon-connected--color:var(--theme-green);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);--rt-pos-cell--color:var(--theme-blue);--rt-neg-cell--color:var(--theme-red);--d3fc-axis-ticks--color:var(--theme-fg1);--d3fc-gridline--color:var(--theme-bg2);--d3fc-series:var(--theme-blue);--d3fc-series-1:var(--theme-blue);--d3fc-series-2:var(--theme-red);--d3fc-series-3:var(--theme-green);--d3fc-series-4:var(--theme-yellow);--d3fc-series-5:var(--theme-purple);--d3fc-series-6:var(--theme-pink);--d3fc-series-7:var(--theme-orange);--d3fc-negative--gradient:linear-gradient(var(--theme-bg0),var(--theme-red))!important;--d3fc-positive--gradient:linear-gradient(var(--theme-bg0),var(--theme-blue))!important;--d3fc-full--gradient:linear-gradient(var(--theme-red),var(--theme-bg0),var(--theme-blue))!important;}perspective-copy-menu[theme="Dracula"],perspective-export-menu[theme="Dracula"],perspective-dropdown[theme="Dracula"]{font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;background-color:white;border:1px solid var(--inactive--color);border-radius:0 0 2px 2px;--column-style-pos-color--content:"+";--column-style-neg-color--content:"-";--save-button-icon--content:"save";--reset-button-icon--content:"refresh";font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;--interface-monospace--font-family:"ui-monospace","SFMono-Regular","SF Mono","Menlo","Consolas","Liberation Mono",monospace;color:#161616;background-color:transparent;--icon--color:#161616;--inactive--color:#ababab;--inactive--border-color:#dadada;--root--background:#ffffff;--active--color:#2670a9;--error--color:#ff471e;--plugin--background:#ffffff;--overflow-hint-icon--color:rgba(0,0,0,0.2);--select--background-color:none;--column-drop-container--background:none;--warning--background:#042121;--warning--color:#fdfffd;--overflow-hint-icon--color:#fdfffd;background-color:#242526;color:white;--icon--color:white;--active--color:#2770a9;--error--color:#ff9485;--inactive--color:#61656e;--inactive--border-color:#4c505b;--plugin--background:#242526;--modal-target--background:rgba(255,255,255,0.05);--active--background:rgba(39,113,170,0.5);--expression--operator-color:#c5c9d0;--expression--function-color:#22a0ce;--expression--error-color:rgb(255,136,136);--calendar--filter:invert(1);--warning--color:#242526;--warning--background:var(--icon--color);--float--column-type--color:#7dc3f0;--string--column-type--color:#ff9485;--date--column-type--color:@green50;--boolean--column-type--color:@orange50;--code-editor-symbol--color:white;--code-editor-literal--color:#7dc3f0;--code-editor-operator--color:rgb(23,166,123);--code-editor-comment--color:rgb(204,120,48);background-color:#242526;border:1px solid#4c505b;--theme-bg0:#191a22;--theme-bg1:#282a36;--theme-bg2:#44475a;--theme-gray:#928374;--theme-fg0:#f8f8f2;--theme-fg1:#6272a4;--theme-fg2:#44475a;--theme-red:#ff5555;--theme-green:#50fa7b;--theme-yellow:#f1fa8c;--theme-blue:#8be9fd;--theme-purple:#bd93f9;--theme-orange:#ffb86c;--theme-pink:#ff79c6;color:var(--theme-fg0);background-color:var(--theme-bg0);--icon--color:var(--theme-fg1);--inactive--color:var(--theme-fg2);--inactive--border-color:var(--theme-bg2);--plugin--background:var(--theme-bg1);--status-icon-connected--color:var(--theme-green);--status-icon-initializing--color:var(--theme-yellow);--status-icon-error--color:var(--theme-red);background-color:var(--theme-bg0);}
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective-viewer.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<title>Perspective Gadget</title>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="perspective@2.3.0/perspective_with_viewer.js" type="text/javascript"></script>
<script src="perspective_base_gadget.js" type="text/javascript"></script>
<link rel="stylesheet" href="perspective-viewer.css">
<link rel="stylesheet" href="custom_perspective_style.css">
</head>
<body>
<perspective-viewer></perspective-viewer>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective_base_gadget.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*global window, rJS, document */
/*jslint nomen: true, indent:2*/
(function (window, rJS) {
"use strict";
rJS(window)
.declareMethod("render", function (options) {
var gadget = this,
child_html = options.child_html,
el = document.getElementsByTagName("perspective-viewer")[0];
return gadget.getChildData(options.child_html)
.push(function (data) {
return gadget.getTable(data);
})
.push(function (table) {
return el.load(table);
})
.push(function () {
return gadget.getDeclaredGadget(child_html);
})
.push(function (child) {
return child.postprocessing(el);
});
})
.declareMethod("getTable", function (data) {
return window.Worker.table(data);
})
.declareMethod("getChildData", function (data) {
return this.declareGadget(data, {
scope: data
})
.push(function (child) {
return child.getData();
});
});
}(window, rJS));
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>perspective_base_gadget.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Index,User Id,First Name,Last Name,Sex,Email,Phone,Date of birth,Job Title
1,88F7B33d2bcf9f5,Shelby,Terrell,Male,elijah57@example.net,001-084-906-7849x73518,1945-10-26,Games developer
2,f90cD3E76f1A9b9,Phillip,Summers,Female,bethany14@example.com,214.112.6044x4913,1910-03-24,Phytotherapist
3,DbeAb8CcdfeFC2c,Kristine,Travis,Male,bthompson@example.com,277.609.7938,1992-07-02,Homeopath
4,A31Bee3c201ef58,Yesenia,Martinez,Male,kaitlinkaiser@example.com,584.094.6111,2017-08-03,Market researcher
5,1bA7A3dc874da3c,Lori,Todd,Male,buchananmanuel@example.net,689-207-3558x7233,1938-12-01,Veterinary surgeon
6,bfDD7CDEF5D865B,Erin,Day,Male,tconner@example.org,001-171-649-9856x5553,2015-10-28,Waste management officer
7,bE9EEf34cB72AF7,Katherine,Buck,Female,conniecowan@example.com,+1-773-151-6685x49162,1989-01-22,Intelligence analyst
8,2EFC6A4e77FaEaC,Ricardo,Hinton,Male,wyattbishop@example.com,001-447-699-7998x88612,1924-03-26,Hydrogeologist
9,baDcC4DeefD8dEB,Dave,Farrell,Male,nmccann@example.net,603-428-2429x27392,2018-10-06,Lawyer
10,8e4FB470FE19bF0,Isaiah,Downs,Male,virginiaterrell@example.org,+1-511-372-1544x8206,1964-09-20,"Engineer, site"
11,BF0BbA03C29Bb3b,Sheila,Ross,Female,huangcathy@example.com,895.881.4746,2008-03-20,Advertising account executive
12,F738c69fB34E62E,Stacy,Newton,Male,rayleroy@example.org,710.673.3213x80335,1980-10-20,Warden/ranger
13,C03fDADdAadAdCe,Mandy,Blake,Male,jefferynoble@example.org,(992)466-1305x4947,2007-12-08,"Scientist, clinical (histocompatibility and immunogenetics)"
14,b759b74BD1dE80d,Bridget,Nash,Female,mercedes44@example.com,(216)627-8359,2004-06-28,Social worker
15,1F0B7D65A00DAF9,Crystal,Farmer,Male,pmiranda@example.org,+1-024-377-5391,1992-03-09,Agricultural consultant
16,50Bb061cB30B461,Thomas,Knight,Female,braunpriscilla@example.net,+1-360-880-0766,2006-02-18,Sport and exercise psychologist
17,D6dbA5308fEC4BC,Maurice,Rangel,Male,sheenabanks@example.com,(246)187-4969,2004-08-20,Secretary/administrator
18,311D775990f066d,Frank,Meadows,Male,gbrewer@example.org,429.965.3902x4447,2008-09-16,Audiological scientist
19,7F7E1BAcb0C9AFf,Alvin,Paul,Male,gilbertdonaldson@example.com,219.436.0887x07551,1949-05-12,"Teacher, adult education"
20,88473e15D5c3cD0,Jared,Mitchell,Female,jcortez@example.com,+1-958-849-6781,1921-01-18,Paediatric nurse
21,b31D271F8c200AB,Jacqueline,Norton,Female,carias@example.net,819.309.7679x59173,1952-10-09,"Scientist, marine"
22,42F4BdA841aBadC,Colleen,Hatfield,Female,fknox@example.org,638.584.1090,1949-10-14,Commercial horticulturist
23,cBbBcA0FCA3C4Bc,Randy,Barnes,Male,huangbill@example.org,001-960-629-7164x67214,1947-12-30,Outdoor activities/education manager
24,f1f89173353aD90,Janice,Rhodes,Female,juarezdominique@example.net,001-249-314-9742x6996,1999-11-01,Drilling engineer
25,c5B09fb33e8bA0A,Alfred,Mcneil,Female,cassandramorris@example.com,(468)276-9509x53058,1993-05-28,Systems analyst
26,c9F2282C40BEC1E,Sean,Levine,Male,sallymiller@example.net,4915828504,2010-10-09,"Conservation officer, nature"
27,9c1bc7EC53Fb7cE,Louis,Payne,Male,bsullivan@example.net,6232695307,1916-01-29,Counsellor
28,ddEc50e2A2e3a2B,Brittney,Vega,Female,ayalajose@example.net,945-739-8686,1932-10-31,Recycling officer
29,66F096D36Ebae11,Judy,Buckley,Male,irosales@example.net,001-654-208-1241x52830,1963-07-28,Art gallery manager
30,F0fE2faAd78F8b5,Norman,Weber,Male,mconrad@example.com,223.002.0429,1957-05-21,Gaffer
31,5d2feAfbdCAA6B5,Isaiah,Camacho,Female,jimblake@example.org,001-536-544-3367,1966-04-07,Food technologist
32,cDa5F303fCd6dEa,Jacqueline,Gallagher,Male,nsampson@example.net,(247)762-8934,1999-02-25,Building services engineer
33,8Ef7DBfcaB02b6B,Bonnie,Andrews,Female,caitlin24@example.net,+1-253-987-2776x9161,1953-12-21,Seismic interpreter
34,6Dec5b5542F8ed8,Brandon,Schmidt,Female,mconley@example.net,+1-386-673-1465x006,1931-05-12,"Engineer, biomedical"
35,3Fb8a7f68e12784,Jackson,Sparks,Female,reynoldsdarryl@example.net,(137)908-3129x65035,1980-11-18,Set designer
36,035eff50B9A0F24,Melody,Cook,Male,jeannovak@example.org,(826)792-7381,1963-06-25,Research scientist (life sciences)
37,aa614aAE4B7Cf0C,Leonard,Hurst,Male,clinton78@example.org,941-038-0427x38800,1938-03-13,"Accountant, chartered management"
38,ACcde95AAe3e6cC,Gene,Rich,Female,luisdeleon@example.org,+1-356-818-6604x89537,1946-08-22,"Surveyor, quantity"
39,b6a35de5CB6fc25,Cynthia,Wiggins,Female,rosariodave@example.org,(110)858-2437x70190,1984-01-27,Outdoor activities/education manager
40,e92A191E345fA3A,Tanya,Mckinney,Female,vickihouston@example.com,(830)774-9002x086,2003-03-12,Information systems manager
41,7D0AcBF6CCac3fd,Matthew,Stone,Female,evelyn31@example.org,952-381-6360,2017-08-23,"Scientist, clinical (histocompatibility and immunogenetics)"
42,CEFA7BBCef013AE,Kirk,Walsh,Female,stephenfuller@example.org,001-826-496-5529x8661,2009-04-08,Accounting technician
43,9edBC94aE7cA22a,Willie,Vang,Female,haleymathews@example.net,741.168.6854x067,1978-02-02,Management consultant
44,fFe7BAA737aDbe2,Miguel,Hill,Female,tyrone56@example.org,5247842945,1930-08-26,Make
45,5F2f3fAca8B0946,Darren,Andrews,Male,lhernandez@example.com,(975)799-4261,1997-10-04,Retail banker
46,6bFcfc3cc1BC6B4,Haley,Pugh,Female,molly03@example.org,(746)182-6137x2453,1980-09-16,Commissioning editor
47,f3BD2cBF7eEb6df,Danielle,Estrada,Female,jvang@example.org,(890)374-9518x772,1930-07-09,"Accountant, chartered management"
48,Ee4eB129dC7913A,Becky,Brady,Male,erikmueller@example.org,(390)002-0863,1957-06-27,Seismic interpreter
49,dBCEf340C3657Eb,Caitlyn,Frey,Male,rivasdominique@example.org,805-021-3965x46344,1968-01-26,Jewellery designer
50,E47FB71DD9ACCd9,Joshua,Sweeney,Male,daisymcgee@example.net,875.994.2100x535,1954-07-28,"Education officer, museum"
51,eA3fDd79BE9f0E7,Heidi,Escobar,Female,staffordtravis@example.net,601-155-3065x1131,1931-09-25,Estate manager/land agent
52,aF0eE4547Bc025c,Brian,Oconnell,Female,saralong@example.net,952-283-1423x733,1911-10-23,Physiotherapist
53,9F5DeD7aD228F5a,Beverly,Esparza,Female,iphelps@example.net,+1-327-578-8754x6771,1930-12-09,Passenger transport manager
54,D3Fa0220dDE4d36,Nathaniel,Rivas,Female,roberto29@example.com,(655)887-2040x37888,1908-11-17,Call centre manager
55,60FdBFd5e7BE8fF,Debra,Payne,Female,yolanda07@example.org,001-731-525-8400x52593,1927-08-20,Special educational needs teacher
56,D8bF5Ab2b98caff,Mackenzie,Rocha,Female,abbottyvette@example.net,4225525458,1980-10-21,Museum/gallery exhibitions officer
57,CD8d33aA25bc8BB,Courtney,Watkins,Female,ochang@example.org,210.683.2761x5883,2003-12-07,Pension scheme manager
58,Fac3BfFf0A3d03c,Fred,Olsen,Female,amyanderson@example.com,497-774-3053,1910-04-10,Archaeologist
59,e552D7ddafe1FFb,Ryan,Nelson,Female,qnorman@example.org,956.330.2951,1924-05-02,Historic buildings inspector/conservation officer
60,0f8deedb629A5f6,Grace,Phelps,Male,clarkeangela@example.net,(034)867-8827x6777,1909-10-15,Petroleum engineer
61,bB9e49E506F65ed,Shari,Daugherty,Male,kalvarado@example.org,001-951-655-4798x6124,1944-11-24,Curator
62,Ed724605A403D91,Kelli,Garner,Male,jodyvincent@example.org,995.000.4213x0982,2010-01-17,Retail banker
63,0aBE5ACb18E0c10,Jackie,Bennett,Male,hutchinsonkirk@example.com,001-740-937-0846x0087,1915-11-11,Neurosurgeon
64,5D2cb63CaAF53f6,Leslie,Conway,Female,floreschristina@example.org,795.782.4384x555,1983-11-06,Chiropractor
65,Ee6974f90eeCe18,Harold,Barnett,Female,nathan65@example.org,+1-026-265-6392,1943-03-15,"Biochemist, clinical"
66,cEf02C076afa07f,Larry,Harper,Male,maria32@example.org,+1-244-630-3792x4121,2021-05-05,"Scientist, water quality"
67,9Df5Ba591bF3EFf,Mike,Ward,Female,imccullough@example.com,116-729-5046,1967-11-09,Hydrologist
68,3faB1CBfEFBDdD4,Brittney,Rubio,Female,corey92@example.com,593.976.2528,1959-12-24,"Biochemist, clinical"
69,Ebcefdf75eCb0a9,Frank,Pineda,Male,daltoncalvin@example.net,(035)961-5060x9182,1926-03-10,Hospital pharmacist
70,e75e5DBfcb68887,Sandra,Wu,Male,ubanks@example.com,+1-096-606-6454x067,1925-04-28,Warehouse manager
71,6a53a8D41dDF6de,Ryan,Benton,Male,lopezdebbie@example.org,+1-695-557-9948x485,2020-10-06,Physiological scientist
72,F0d3bD1aaf9E3Bc,Tamara,Hull,Male,meagan39@example.net,017.665.3744x7944,1933-01-31,English as a second language teacher
73,5bC87340799FBD0,Jean,Ritter,Female,kristina76@example.com,(954)060-1066,1985-08-06,Financial trader
74,dBfA17Aaf16b4ab,Veronica,Briggs,Female,weissbridget@example.com,+1-521-589-2387x48490,1974-06-08,Structural engineer
75,c935b7Eb6FA0B0F,Kim,Andrews,Female,wpetersen@example.org,7677125383,1990-11-15,"Biochemist, clinical"
76,b3e15e65Ca2CcBf,Tina,Cunningham,Male,wongmary@example.org,079-907-5051,1956-11-29,Race relations officer
77,dade3452F0c32FD,Jonathon,Atkinson,Male,gailfrench@example.net,874-037-2032x932,2011-07-19,"Psychologist, forensic"
78,AdEd6cfD85DeC46,Jermaine,Reid,Female,vpaul@example.com,(742)214-8691,1974-08-18,Newspaper journalist
79,DAf111987098ae4,Regina,Stevens,Male,xpoole@example.net,891-359-2684,2011-11-28,Public house manager
80,6e6a5b885F6496d,Terrence,Huff,Male,cassandra80@example.org,221.800.6408x5416,1944-02-27,Careers information officer
81,12DCb4ED8E01D5C,Tyler,Foley,Female,johnathan72@example.org,001-386-469-3075x8030,1908-09-19,Economist
82,E1cB5cA8CA7CC0a,Andrew,Waters,Male,nhall@example.net,+1-376-865-2765x3351,1948-05-14,Jewellery designer
83,AedDfaE8Cf49F07,Reginald,Stephenson,Male,erikaball@example.net,+1-832-500-6044x475,2010-02-08,Contracting civil engineer
84,bff9853aFAeF772,Douglas,Reese,Female,nixonvanessa@example.net,001-834-660-8312x9864,1961-11-11,Higher education lecturer
85,E883773cA5219Be,Helen,Williamson,Female,melvin08@example.net,001-377-726-4229,1911-08-11,"Lecturer, further education"
86,CB19EafEbBfF9eC,Mario,Vaughn,Male,oblake@example.com,160-144-5039x12276,1990-07-08,Research scientist (life sciences)
87,5834700fbEd2771,Chelsea,Dickson,Male,johnnyhendricks@example.net,001-698-651-0138x18588,1958-05-13,"Teacher, early years/pre"
88,2b0Ab1Dc9E01D7E,Dustin,Bailey,Male,pbarron@example.net,+1-965-621-1157x345,1908-08-22,Travel agency manager
89,3f3a3D89ad042Dd,Harry,Medina,Female,olsenmalik@example.net,+1-451-099-5805,1947-08-24,Technical sales engineer
90,9425E2F38C408ef,Kathy,Haney,Female,teresa37@example.com,(164)105-8456,1955-09-02,Charity fundraiser
91,F0aeC9c2759F3C6,Alison,Nixon,Female,zmiles@example.net,3506680871,1941-07-10,Patent attorney
92,d6EA619A7C4aA95,Jamie,Hardy,Female,sheenadouglas@example.com,(900)803-9295x11533,1994-07-17,"Conservator, furniture"
93,2A33E7Cad1bb0F5,Melody,Cox,Female,evan90@example.org,(626)520-5080x3511,1974-07-30,Dance movement psychotherapist
94,d181FFB7d3E68bb,Xavier,Cole,Male,nicolas90@example.org,8164259975,1938-11-29,Financial planner
95,feaBf8dAE0C0d6F,Dillon,Guzman,Female,angelanavarro@example.net,971-992-4521,1942-04-01,Air broker
96,5eFda7caAeB260E,Dennis,Barnes,Female,bmartin@example.org,001-095-524-2112x257,1954-07-30,Software engineer
97,CCbFce93d3720bE,Steve,Patterson,Female,latasha46@example.net,001-865-478-5157,1932-04-29,Barrister
98,2fEc528aFAF0b69,Wesley,Bray,Male,regina11@example.org,995-542-3004x76800,1994-12-28,Police officer
99,Adc7ad9B6e4A1Fe,Summer,Oconnell,Female,alexiscantrell@example.org,001-273-685-6932x092,2012-04-12,Broadcast journalist
100,b8D0aD3490FC7e1,Mariah,Bernard,Male,pcopeland@example.org,(341)594-6554x44657,2016-11-15,IT sales professional
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>test.csv</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/csv</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
erp5_perspective
\ No newline at end of file
erp5_perspective
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Zuite" module="Products.Zelenium.zuite"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>perspective_zuite</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective Zuite</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testPerspective</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html>
<head><title tal:content="template/title"></title></head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="4" tal:content="template/title">
</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td tal:content="string:${context/portal_url}/portal_skins/erp5_perspective_test/Document_viewPerspectiveData"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-editable="field_my_perspective"]//iframe</td>
<td></td>
</tr>
<tr>
<td>selectFrame</td>
<td>//div[@data-gadget-editable="field_my_perspective"]//iframe</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//html/body/perspective-viewer/perspective-viewer-datagrid/regular-table/table</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td tal:content="string:${context/portal_url}/portal_skins/erp5_perspective_test/Document_viewPerspectiveNoData"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-editable="field_my_perspective"]//iframe</td>
<td></td>
</tr>
<tr>
<td>selectFrame</td>
<td>//div[@data-gadget-editable="field_my_perspective"]//iframe</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//html/body/perspective-viewer</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//html/body/perspective-viewer/perspective-viewer-datagrid</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_perspective_test</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective Test</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value> <string>[]</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>my_perspective</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_viewPerspectiveData</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>Document_viewPerspectiveData</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>ERP5 Form</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="GadgetField" module="Products.ERP5Form.GadgetField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_perspective</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>no_validator</string> </key>
<value> <string>Does not support this operation.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string>perspective_base_gadget.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string>perspective_base_gadget.html</string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string>iframe</string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value>
<list>
<tuple>
<string>child_html</string>
<string>PerspectiveTest.html</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value> <string>[]</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>my_perspective</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_viewPerspectiveNoData</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>Document_viewPerspectiveData</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>ERP5 Form</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="GadgetField" module="Products.ERP5Form.GadgetField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_perspective</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>no_validator</string> </key>
<value> <string>Does not support this operation.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>data_url</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string>perspective_base_gadget.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>gadget_url</string> </key>
<value> <string>perspective_base_gadget.html</string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>js_sandbox</string> </key>
<value> <string>iframe</string> </value>
</item>
<item>
<key> <string>renderjs_extra</string> </key>
<value>
<list>
<tuple>
<string>child_html</string>
<string>PerspectiveTestNoData.html</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
<item>
<key> <string>validator_field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>validator_form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<title>Perspective for Manufacturing Orders</title>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="PerspectiveTest.js" type="text/javascript"></script>
</head>
<body>
<perspective-viewer editable></perspective-viewer>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTest.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*global window, document, rJS, worker, console, RSVP, fetch */
/*jslint indent: 2*/
(function (window, rJS, RSVP) {
"use strict";
function getStockTimelineData() {
return new RSVP.Queue()
.push(function () {
console.log("herlo");
return "heelloooo";
})
/*
.push(function (resp) {
return resp.arrayBuffer();
});
*/
}
rJS(window)
.declareMethod("getData", function () {
console.log("jkhjhkjkh");
return getStockTimelineData();
});
}(window, rJS, RSVP));
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>PerspectiveTest.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Perspective</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
##############################################################################
#
# Copyright (c) 2002-2024 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
##############################################################################
import unittest
from Products.ERP5Type.tests.ERP5TypeFunctionalTestCase import ERP5TypeFunctionalTestCase
class TestPerspective(ERP5TypeFunctionalTestCase):
run_only = "perspective_zuite"
def getBusinessTemplateList(self):
return (
'erp5_perspective',
'erp5_perspective_test',
'erp5_ui_test_core'
)
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestPerspective))
return suite
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Test Component" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>default_reference</string> </key>
<value> <string>testPerspective</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test.erp5.testPerspective</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Test Component</string> </value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
erp5_perspective
erp5_ui_test_core
\ No newline at end of file
portal_tests/perspective_zuite
portal_tests/perspective_zuite/**
\ No newline at end of file
erp5_perspective_test
\ No newline at end of file
test.erp5.testPerspective
\ No newline at end of file
erp5_perspective_test
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment