pollination-react-io 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,93 +1,7 @@
1
1
  import * as React from 'react';
2
- import React__default, { useState, useCallback, useEffect, useMemo, forwardRef, useRef } from 'react';
2
+ import React__default, { useState, useRef, useCallback, useMemo, forwardRef, useEffect } from 'react';
3
3
  import e$4 from 'react-dom';
4
4
 
5
- /******************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
-
20
- var __assign = function() {
21
- __assign = Object.assign || function __assign(t) {
22
- for (var s, i = 1, n = arguments.length; i < n; i++) {
23
- s = arguments[i];
24
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
25
- }
26
- return t;
27
- };
28
- return __assign.apply(this, arguments);
29
- };
30
-
31
- function __rest(s, e) {
32
- var t = {};
33
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
34
- t[p] = s[p];
35
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
36
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
37
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
38
- t[p[i]] = s[p[i]];
39
- }
40
- return t;
41
- }
42
-
43
- function __awaiter(thisArg, _arguments, P, generator) {
44
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
45
- return new (P || (P = Promise))(function (resolve, reject) {
46
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
47
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
48
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
49
- step((generator = generator.apply(thisArg, _arguments || [])).next());
50
- });
51
- }
52
-
53
- function __generator(thisArg, body) {
54
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
55
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
56
- function verb(n) { return function (v) { return step([n, v]); }; }
57
- function step(op) {
58
- if (f) throw new TypeError("Generator is already executing.");
59
- while (_) try {
60
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
61
- if (y = 0, t) op = [op[0] & 2, t.value];
62
- switch (op[0]) {
63
- case 0: case 1: t = op; break;
64
- case 4: _.label++; return { value: op[1], done: false };
65
- case 5: _.label++; y = op[1]; op = [0]; continue;
66
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
67
- default:
68
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
69
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
70
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
71
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
72
- if (t[2]) _.ops.pop();
73
- _.trys.pop(); continue;
74
- }
75
- op = body.call(thisArg, _);
76
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
77
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
78
- }
79
- }
80
-
81
- function __spreadArray(to, from, pack) {
82
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
83
- if (ar || !(i in from)) {
84
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
85
- ar[i] = from[i];
86
- }
87
- }
88
- return to.concat(ar || Array.prototype.slice.call(from));
89
- }
90
-
91
5
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
92
6
 
93
7
  function createCommonjsModule(fn) {
@@ -1986,6 +1900,7 @@ function sendMessageDotNet(message) {
1986
1900
  if (!checkDotNet())
1987
1901
  return undefined;
1988
1902
  var json = JSON.stringify(message);
1903
+ console.log(message);
1989
1904
  try {
1990
1905
  window.parent.chrome.webview.postMessage(json);
1991
1906
  }
@@ -2004,9 +1919,9 @@ function subscribeDotNet(interval) {
2004
1919
  if (interval === void 0) { interval = 1000; }
2005
1920
  if (!checkDotNet)
2006
1921
  return undefined;
2007
- if (!window.parent.chrome.webview.hostObjects ||
2008
- !window.parent.chrome.webview.hostObjects.sync ||
2009
- !window.parent.chrome.webview.hostObjects.PassHBJSON) {
1922
+ if (!window.parent.chrome.webview.hostObjects
1923
+ || !window.parent.chrome.webview.hostObjects.sync
1924
+ || !window.parent.chrome.webview.hostObjects.PassHBJSON) {
2010
1925
  console.error('[POLLINATION-DEBUG]: hostObjects.sync.PassHBJSON not configured correctly');
2011
1926
  return;
2012
1927
  }
@@ -2029,65 +1944,61 @@ function getHost(key, defaultValue) {
2029
1944
 
2030
1945
  var useGetHbjson = function () {
2031
1946
  var host = getHost();
2032
- var _a = useState(), messageResponse = _a[0], setMessageResponse = _a[1];
2033
- var _b = useState(undefined), hbjson = _b[0], setHbjson = _b[1];
2034
- var rubyGetHBJSON = useCallback(function (key, selection) {
2035
- if (key === void 0) { key = performance.now().toString(); }
1947
+ var _a = useState(undefined), hbjson = _a[0], setHbjson = _a[1];
1948
+ var hbjsonRef = useRef(undefined);
1949
+ var setReturnValue = useCallback(function (res, force) {
1950
+ var bytes = new TextEncoder().encode(res.Geometry);
1951
+ if (hbjsonRef.current) {
1952
+ if (force || !lodash_isequal(bytes, hbjsonRef.current)) {
1953
+ setHbjson(new Blob([bytes], {
1954
+ type: 'application/json;charset=utf-8',
1955
+ }));
1956
+ }
1957
+ }
1958
+ else {
1959
+ setHbjson(new Blob([bytes], {
1960
+ type: 'application/json;charset=utf-8',
1961
+ }));
1962
+ }
1963
+ hbjsonRef.current = bytes;
1964
+ }, []);
1965
+ var rubyGetHbjson = useCallback(function (key, selection, force) {
2036
1966
  if (selection === void 0) { selection = false; }
1967
+ if (force === void 0) { force = false; }
2037
1968
  if (!checkRuby())
2038
1969
  return;
2039
- // TODO: why doesn't this function use the key?
1970
+ // TODO: why doesn't this function use the key?
2040
1971
  window.parent.sketchup.get_model(selection, {
2041
1972
  onCompleted: function (res) {
2042
1973
  var message = JSON.parse(res);
2043
- setMessageResponse(function (state) { return (__assign(__assign({}, state), { geometry: message.Geometry, identifier: message.Identifier })); });
2044
- }
1974
+ setReturnValue(message, force);
1975
+ },
2045
1976
  });
2046
- }, []);
2047
- var dotNetGetHBJSON = useCallback(function (key, selection) {
2048
- if (key === void 0) { key = performance.now().toString(); }
1977
+ }, [setReturnValue]);
1978
+ var dotNetGetHbjson = useCallback(function (key, selection, force) {
1979
+ if (key === void 0) { key = 'use-get-hbjson'; }
2049
1980
  if (selection === void 0) { selection = false; }
1981
+ if (force === void 0) { force = false; }
2050
1982
  if (!checkDotNet())
2051
1983
  return;
2052
1984
  var res = {
2053
1985
  Geometry: null,
2054
- Identifier: null
1986
+ Identifier: null,
2055
1987
  };
2056
- // @ts-ignore
2057
1988
  res = window.parent.chrome.webview
2058
- .hostObjects.sync.hbjson.PassPollinationModel(selection);
2059
- setMessageResponse(function (state) { return (__assign(__assign({}, state), { geometry: res.Geometry, identifier: res.Identifier })); });
2060
- }, []);
2061
- useEffect(function () {
2062
- if (!messageResponse)
2063
- return;
2064
- // @ts-ignore
2065
- var bytes = new TextEncoder().encode(messageResponse.geometry);
2066
- if (hbjson) {
2067
- hbjson.arrayBuffer().then(function (data) {
2068
- if (!lodash_isequal(bytes, new Uint8Array(data))) {
2069
- setHbjson(new Blob([bytes], {
2070
- type: 'application/json;charset=utf-8',
2071
- }));
2072
- }
2073
- });
2074
- }
2075
- else {
2076
- setHbjson(new Blob([bytes], {
2077
- type: 'application/json;charset=utf-8',
2078
- }));
2079
- }
2080
- }, [messageResponse]);
1989
+ .hostObjects.sync.hbjson.PassPollinationModel(key, selection);
1990
+ setReturnValue(res, force);
1991
+ }, [setReturnValue]);
2081
1992
  var getHbjson = useMemo(function () {
2082
1993
  switch (host) {
2083
- case 'sketchup':
2084
- return rubyGetHBJSON;
2085
1994
  case 'rhino':
2086
- return dotNetGetHBJSON;
1995
+ return dotNetGetHbjson;
1996
+ case 'sketchup':
1997
+ return rubyGetHbjson;
2087
1998
  default:
2088
1999
  return undefined;
2089
2000
  }
2090
- }, [host, dotNetGetHBJSON, rubyGetHBJSON]);
2001
+ }, [dotNetGetHbjson, host, rubyGetHbjson]);
2091
2002
  return {
2092
2003
  host: host,
2093
2004
  hbjson: hbjson,
@@ -2097,64 +2008,61 @@ var useGetHbjson = function () {
2097
2008
 
2098
2009
  var useGetGeometry = function () {
2099
2010
  var host = getHost();
2100
- var _a = useState(), messageResponse = _a[0], setMessageResponse = _a[1];
2101
- var _b = useState(undefined), geometry = _b[0], setGeometry = _b[1];
2102
- var rubyGetGeometry = useCallback(function (key, selection) {
2103
- if (key === void 0) { key = performance.now().toString(); }
2011
+ var _a = useState(undefined), geometry = _a[0], setGeometry = _a[1];
2012
+ var geometryRef = useRef(undefined);
2013
+ var setReturnVal = useCallback(function (data, force) {
2014
+ var bytes = new TextEncoder().encode(data.Geometry);
2015
+ if (geometryRef.current) {
2016
+ if (force || !lodash_isequal(bytes, geometryRef.current)) {
2017
+ setGeometry(new Blob([bytes], {
2018
+ type: 'application/json;charset=utf-8',
2019
+ }));
2020
+ }
2021
+ }
2022
+ else {
2023
+ setGeometry(new Blob([bytes], {
2024
+ type: 'application/json;charset=utf-8',
2025
+ }));
2026
+ }
2027
+ geometryRef.current = bytes;
2028
+ }, []);
2029
+ var rubyGetGeometry = useCallback(function (key, selection, force) {
2030
+ if (key === void 0) { key = 'use-get-geometry'; }
2104
2031
  if (selection === void 0) { selection = false; }
2032
+ if (force === void 0) { force = false; }
2105
2033
  if (!checkRuby())
2106
2034
  return;
2107
2035
  // ruby invoke
2108
2036
  window.parent.sketchup.get_geometry(key, selection, {
2109
2037
  onCompleted: function (res) {
2110
2038
  var message = JSON.parse(res);
2111
- setMessageResponse(function (state) { return (__assign(__assign({}, state), { geometry: message.Geometry, identifier: message.Identifier })); });
2112
- }
2039
+ setReturnVal(message, force);
2040
+ },
2113
2041
  });
2114
- }, []);
2115
- var dotNetGetGeometry = useCallback(function (key, selection) {
2116
- if (key === void 0) { key = performance.now().toString(); }
2042
+ }, [setReturnVal]);
2043
+ var dotNetGetGeometry = useCallback(function (key, selection, force) {
2044
+ if (key === void 0) { key = 'use-get-geometry'; }
2117
2045
  if (selection === void 0) { selection = false; }
2046
+ if (force === void 0) { force = false; }
2118
2047
  if (!checkDotNet())
2119
2048
  return;
2120
2049
  var res = {
2121
2050
  Geometry: null,
2122
- Identifier: null
2051
+ Identifier: null,
2123
2052
  };
2124
- // @ts-ignore
2125
2053
  res = window.parent.chrome.webview.hostObjects.sync.geometry.PassJsonGeometry(key, selection);
2126
- setMessageResponse(function (state) { return (__assign(__assign({}, state), { geometry: res.Geometry, identifier: res.Identifier })); });
2127
- }, []);
2128
- useEffect(function () {
2129
- if (!messageResponse)
2130
- return;
2131
- // @ts-ignore
2132
- var bytes = new TextEncoder().encode(messageResponse.geometry);
2133
- if (geometry) {
2134
- geometry.arrayBuffer().then(function (data) {
2135
- if (!lodash_isequal(bytes, new Uint8Array(data))) {
2136
- setGeometry(new Blob([bytes], {
2137
- type: 'application/json;charset=utf-8',
2138
- }));
2139
- }
2140
- });
2141
- }
2142
- else {
2143
- setGeometry(new Blob([bytes], {
2144
- type: 'application/json;charset=utf-8',
2145
- }));
2146
- }
2147
- }, [messageResponse]);
2054
+ setReturnVal(res, force);
2055
+ }, [setReturnVal]);
2148
2056
  var getGeometry = useMemo(function () {
2149
2057
  switch (host) {
2150
- case 'sketchup':
2151
- return rubyGetGeometry;
2152
2058
  case 'rhino':
2153
2059
  return dotNetGetGeometry;
2060
+ case 'sketchup':
2061
+ return rubyGetGeometry;
2154
2062
  default:
2155
2063
  return undefined;
2156
2064
  }
2157
- }, [host, dotNetGetGeometry, rubyGetGeometry]);
2065
+ }, [dotNetGetGeometry, host, rubyGetGeometry]);
2158
2066
  return {
2159
2067
  host: host,
2160
2068
  geometry: geometry,
@@ -2162,6 +2070,92 @@ var useGetGeometry = function () {
2162
2070
  };
2163
2071
  };
2164
2072
 
2073
+ /******************************************************************************
2074
+ Copyright (c) Microsoft Corporation.
2075
+
2076
+ Permission to use, copy, modify, and/or distribute this software for any
2077
+ purpose with or without fee is hereby granted.
2078
+
2079
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
2080
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
2081
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
2082
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
2083
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
2084
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
2085
+ PERFORMANCE OF THIS SOFTWARE.
2086
+ ***************************************************************************** */
2087
+
2088
+ var __assign = function() {
2089
+ __assign = Object.assign || function __assign(t) {
2090
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2091
+ s = arguments[i];
2092
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2093
+ }
2094
+ return t;
2095
+ };
2096
+ return __assign.apply(this, arguments);
2097
+ };
2098
+
2099
+ function __rest(s, e) {
2100
+ var t = {};
2101
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
2102
+ t[p] = s[p];
2103
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
2104
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2105
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
2106
+ t[p[i]] = s[p[i]];
2107
+ }
2108
+ return t;
2109
+ }
2110
+
2111
+ function __awaiter(thisArg, _arguments, P, generator) {
2112
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2113
+ return new (P || (P = Promise))(function (resolve, reject) {
2114
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
2115
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
2116
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
2117
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
2118
+ });
2119
+ }
2120
+
2121
+ function __generator(thisArg, body) {
2122
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
2123
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
2124
+ function verb(n) { return function (v) { return step([n, v]); }; }
2125
+ function step(op) {
2126
+ if (f) throw new TypeError("Generator is already executing.");
2127
+ while (_) try {
2128
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
2129
+ if (y = 0, t) op = [op[0] & 2, t.value];
2130
+ switch (op[0]) {
2131
+ case 0: case 1: t = op; break;
2132
+ case 4: _.label++; return { value: op[1], done: false };
2133
+ case 5: _.label++; y = op[1]; op = [0]; continue;
2134
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
2135
+ default:
2136
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
2137
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
2138
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
2139
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
2140
+ if (t[2]) _.ops.pop();
2141
+ _.trys.pop(); continue;
2142
+ }
2143
+ op = body.call(thisArg, _);
2144
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
2145
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
2146
+ }
2147
+ }
2148
+
2149
+ function __spreadArray(to, from, pack) {
2150
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
2151
+ if (ar || !(i in from)) {
2152
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
2153
+ ar[i] = from[i];
2154
+ }
2155
+ }
2156
+ return to.concat(ar || Array.prototype.slice.call(from));
2157
+ }
2158
+
2165
2159
  var useSendHbjson = function () {
2166
2160
  var host = getHost();
2167
2161
  var _a = useState({}), state = _a[0], setState = _a[1];
@@ -2196,7 +2190,7 @@ var useSendHbjson = function () {
2196
2190
  return ({
2197
2191
  host: host,
2198
2192
  state: state,
2199
- sendHbjson: sendHbjson
2193
+ sendHbjson: sendHbjson,
2200
2194
  });
2201
2195
  };
2202
2196
 
@@ -2234,7 +2228,7 @@ var useSendGeometry = function () {
2234
2228
  return ({
2235
2229
  host: host,
2236
2230
  state: state,
2237
- sendGeometry: sendGeometry
2231
+ sendGeometry: sendGeometry,
2238
2232
  });
2239
2233
  };
2240
2234
 
@@ -2257,7 +2251,7 @@ var useRunCommand = function () {
2257
2251
  }, [host, rhinoRunCommand]);
2258
2252
  return {
2259
2253
  host: host,
2260
- runCommand: runCommand
2254
+ runCommand: runCommand,
2261
2255
  };
2262
2256
  };
2263
2257
 
@@ -2266,7 +2260,7 @@ var useManageSettings = function () {
2266
2260
  var rhinoSendSettings = useCallback(function (settings) {
2267
2261
  var message = {
2268
2262
  action: 'SetModelSettings',
2269
- data: settings
2263
+ data: settings,
2270
2264
  };
2271
2265
  return sendMessageDotNet(message);
2272
2266
  }, []);
@@ -2293,7 +2287,7 @@ var useManageSettings = function () {
2293
2287
  return ({
2294
2288
  host: host,
2295
2289
  sendSettings: sendSettings,
2296
- getSettings: getSettings
2290
+ getSettings: getSettings,
2297
2291
  });
2298
2292
  };
2299
2293
 
@@ -2310,9 +2304,9 @@ var useHbjsontoVTK = function () {
2310
2304
  method: 'POST',
2311
2305
  headers: {
2312
2306
  'Content-Type': 'application/json',
2313
- 'Accept': '*/*',
2307
+ Accept: '*/*',
2314
2308
  },
2315
- body: "{\n \"output_format\": \"vtkjs\",\n \"hbjson\": ".concat(fileString, "\n }")
2309
+ body: "{\n \"output_format\": \"vtkjs\",\n \"hbjson\": ".concat(fileString, "\n }"),
2316
2310
  })
2317
2311
  .catch(function (e) {
2318
2312
  throw new Error(e);
@@ -2327,9 +2321,7 @@ var useHbjsontoVTK = function () {
2327
2321
  case 1:
2328
2322
  translatedFile = _a.sent();
2329
2323
  setVTK(translatedFile);
2330
- return [2 /*return*/, translatedFile
2331
- // viewerRef.current.loadFile(translatedFile, 'vtkjs')
2332
- ];
2324
+ return [2 /*return*/, translatedFile];
2333
2325
  case 2: throw new Error('Failed to retrieve .vtkjs from .hbjson file.Error translating hbjson to vtkjs');
2334
2326
  }
2335
2327
  });
@@ -2342,7 +2334,7 @@ var useHbjsontoVTK = function () {
2342
2334
  return {
2343
2335
  loading: loading,
2344
2336
  vtk: vtk,
2345
- fetchVTK: fetchVTK
2337
+ fetchVTK: fetchVTK,
2346
2338
  };
2347
2339
  };
2348
2340
 
@@ -4430,12 +4422,12 @@ var Dropdown = function (_a) {
4430
4422
  }, offset: 12 }))));
4431
4423
  };
4432
4424
 
4433
- var css_248z = ":root {\n --background: #FFFAEE;\n --primary: #1890ff;\n --primary2: #40a9ff;\n --primary0: #e6f7ff;\n --grey5: #8c8c8c;\n --grey3: #d0d7de;\n --secondary: #fff566;\n --font-color: #494949;\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --background: #3c3c3c;\n --font-color: #fafafa;\n }\n}\n.btn-group {\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", Segoe UI Symbol, \"Noto Color Emoji\";\n display: flex;\n border-radius: 4px;\n max-width: 260px;\n}\n\n.btn-group:hover {\n box-shadow: 0 1px 2px 0 rgba(26, 115, 232, 0.45), 0 1px 3px 1px rgba(26, 115, 232, 0.3);\n}\n\n.btn-group-disabled:hover {\n box-shadow: none;\n}\n\n.btn-group button {\n display: flex;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n color: white;\n padding: 6px 10px;\n cursor: pointer;\n float: left;\n transition: background-color 0.125s ease-in-out;\n z-index: 10;\n align-items: center;\n}\n\n.btn-group button:disabled {\n background-color: var(--grey3);\n color: var(--grey5);\n cursor: default;\n border-color: var(--grey5);\n}\n\n.btn-group button:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n\n.btn-group button:last-child {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-left-color: #096dd9;\n}\n\n.btn-group button:last-child:disabled {\n border-left-color: var(--grey5);\n}\n\n.btn-group button:not(:last-child) {\n border-right: none;\n}\n\n.btn-group button:focus-visible {\n outline: none;\n}\n\n/* Clear floats (clearfix hack) */\n.btn-group:after {\n content: \"\";\n clear: both;\n display: table;\n}\n\n.btn-group button:hover {\n background-color: var(--primary2);\n z-index: 11;\n}\n\n.btn-group-disabled:hover button:hover {\n background-color: var(--grey3);\n}\n\n.options-content {\n font-size: clamp(0.65rem, 8vw - 0.75rem, 0.85rem);\n}";
4425
+ var css_248z = ":root {\n --background: #FFFAEE;\n --primary: #1890ff;\n --primary2: #40a9ff;\n --primary0: #e6f7ff;\n --grey5: #8c8c8c;\n --grey3: #d0d7de;\n --secondary: #fff566;\n --font-color: #494949;\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --background: #3c3c3c;\n --font-color: #fafafa;\n }\n}\n.btn-group {\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", Segoe UI Symbol, \"Noto Color Emoji\";\n width: fit-content;\n display: flex;\n border-radius: 4px;\n}\n\n.btn-group:hover {\n box-shadow: 0 1px 2px 0 rgba(26, 115, 232, 0.45), 0 1px 3px 1px rgba(26, 115, 232, 0.3);\n}\n\n.btn-group-disabled:hover {\n box-shadow: none;\n}\n\n.btn-group button {\n max-width: 260px;\n display: flex;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n color: white;\n padding: 6px 10px;\n cursor: pointer;\n float: left;\n transition: background-color 0.125s ease-in-out;\n z-index: 10;\n align-items: center;\n}\n\n.btn-group button:disabled {\n background-color: var(--grey3);\n color: var(--grey5);\n cursor: default;\n border-color: var(--grey5);\n}\n\n.btn-group button:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n\n.btn-group button:last-child {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-left-color: #096dd9;\n}\n\n.btn-group button:last-child:disabled {\n border-left-color: var(--grey5);\n}\n\n.btn-group button:not(:last-child) {\n border-right: none;\n}\n\n.btn-group button:focus-visible {\n outline: none;\n}\n\n.btn-group button:focus {\n outline: none;\n}\n\n/* Clear floats (clearfix hack) */\n.btn-group:after {\n content: \"\";\n clear: both;\n display: table;\n}\n\n.btn-group button:hover {\n background-color: var(--primary2);\n z-index: 11;\n}\n\n.btn-group-disabled:hover button:hover {\n background-color: var(--grey3);\n}\n\n.options-content {\n font-size: clamp(0.65rem, 8vw - 0.75rem, 0.85rem);\n}";
4434
4426
  styleInject(css_248z);
4435
4427
 
4436
- var logo = "<svg width=\"120\" height=\"121\" viewBox=\"0 0 120 121\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_196:2879)\">\n<path d=\"M74.1329 19.935C71.2546 18.1644 67.758 17.1586 64.2138 16.6379C60.8839 16.2527 59.0697 16.26 55.8842 16.5653C52.286 17.0295 48.8866 18.1269 45.8012 19.7422L38.9746 24.6334C35.0335 28.3844 32.1047 33.1898 30.6397 38.5977C30.5443 38.9501 30.2703 39.2271 29.9191 39.3269C18.2166 42.6537 9.09766 53.0173 8.14885 65.2517C7.9581 67.7115 8.04252 69.0779 8.14886 71.4989C8.61571 82.1278 18.2019 94.0465 29.92 97.4229C30.2708 97.5239 30.5444 97.8011 30.6398 98.1535C33.9063 110.221 44.4326 119.553 57.2727 120.332C59.7632 120.483 61.1213 120.466 63.5199 120.207C74.5027 119.017 85.6433 109.914 88.89 98.3036C88.9897 97.947 89.2715 97.6687 89.6295 97.5742C101.6 94.4141 110.809 83.9226 111.778 71.3276L111.79 71.1632C111.97 68.8349 112.076 67.4612 111.778 65.0804C110.172 52.2413 101.58 42.3185 89.6301 39.1763C89.272 39.0822 88.9904 38.8043 88.8876 38.4486C87.3454 33.1121 83.1567 26.9108 80.8669 24.8932C78.4936 22.802 77.0112 21.7055 74.1329 19.935Z\" fill=\"#FAFAFA\"/>\n<path d=\"M55.3565 81.5463C52.2106 85.7324 47.5988 88.7539 42.2833 89.8487C42.2796 89.9983 42.2777 90.1484 42.2777 90.299C42.2777 100.087 50.2123 108.021 60 108.021C69.7878 108.021 77.7223 100.087 77.7223 90.299C77.7223 80.5112 69.7878 72.5767 60 72.5767C59.7782 72.5767 59.5574 72.5807 59.3375 72.5888C58.8727 74.9919 58.0148 77.2548 56.8336 79.308C57.6845 78.5778 58.7908 78.1366 60 78.1366C62.6869 78.1366 64.865 80.3147 64.865 83.0016C64.865 85.6884 62.6869 87.8665 60 87.8665C57.3132 87.8665 55.1351 85.6884 55.1351 83.0016C55.1351 82.4946 55.2126 82.0058 55.3565 81.5463Z\" fill=\"#F2B24D\"/>\n<path d=\"M73.355 20.8754C73.7199 20.3591 73.5817 19.6239 73.0138 19.3459C70.6087 18.1683 68.024 17.3007 65.3119 16.7952C64.712 16.6834 64.1699 17.1524 64.1699 17.7626V24.2563C64.1699 24.7309 64.5042 25.1377 64.9652 25.2507C66.5364 25.6358 68.041 26.1905 69.4587 26.8942C70.0888 27.2071 70.8644 26.8376 71.0248 26.1527C71.4653 24.2718 72.1906 22.523 73.355 20.8754Z\" fill=\"#24292E\"/>\n<path d=\"M78.8727 35.8702C78.7876 35.7178 78.7415 35.5465 78.7415 35.3719V32.8891C78.7415 32.8887 78.7412 32.8884 78.7408 32.8884V32.8884C78.7404 32.8884 78.7401 32.8881 78.7401 32.8877C78.7402 28.951 79.1734 27.0703 80.196 25.6448C80.5202 25.1927 81.1701 25.1864 81.5552 25.5879C84.9716 29.1497 87.5245 33.5465 88.878 38.442C88.9767 38.7988 89.2587 39.077 89.6167 39.1713C101.248 42.2371 110.135 52.0536 111.831 64.179C111.913 64.766 111.449 65.2793 110.857 65.2793H104.43C103.932 65.2793 103.513 64.9128 103.423 64.4234C101.73 55.2146 94.2729 48.0189 84.9329 46.7234L82.5873 46.3981C82.1484 46.3372 81.802 45.9948 81.7358 45.5568L81.3825 43.2152C80.9855 40.5842 80.1195 38.1066 78.8727 35.8702Z\" fill=\"#24292E\"/>\n<path d=\"M39.0061 24.7171C38.9467 24.6578 38.8508 24.6565 38.7903 24.7147C34.8991 28.4552 32.0072 33.2279 30.5539 38.5928C30.4585 38.9451 30.1842 39.2223 29.8331 39.322C18.4732 42.5485 9.83817 52.2453 8.1687 64.1791C8.08658 64.7661 8.55058 65.2793 9.14329 65.2793H15.5701C16.0677 65.2793 16.4871 64.9128 16.5771 64.4234C18.2429 55.3641 25.4866 48.2524 34.6147 46.791L36.9098 46.4235C37.3408 46.3545 37.6772 46.014 37.741 45.5822L38.0806 43.2828C38.5232 40.2866 39.5736 37.4881 41.1024 35.0163C41.2022 34.8549 41.257 34.6694 41.2573 34.4796L41.2599 32.8817C41.2593 28.0472 40.6046 26.3156 39.0061 24.7171V24.7171Z\" fill=\"#24292E\"/>\n<path d=\"M50.4609 26.6789C49.8385 26.9705 49.0889 26.6078 48.9241 25.9406C48.4629 24.0736 47.7124 22.3372 46.5192 20.7003C46.1396 20.1796 46.2808 19.4264 46.8637 19.1517C49.3149 17.9965 51.9466 17.161 54.705 16.699C55.2998 16.5994 55.83 17.0665 55.83 17.6696V24.1339C55.83 24.6178 55.4829 25.0298 55.0104 25.1338C53.4224 25.4833 51.899 26.0053 50.4609 26.6789Z\" fill=\"#24292E\"/>\n<path d=\"M81.3825 93.5983C80.021 102.62 73.1466 109.837 64.3028 111.714C63.8265 111.815 63.4752 112.229 63.4752 112.716V119.172C63.4752 119.772 64.0018 120.239 64.5949 120.143C76.3086 118.251 85.765 109.63 88.8778 98.3722C88.9765 98.0153 89.2587 97.7365 89.6167 97.6422C101.247 94.5764 110.135 84.7598 111.831 72.6345C111.913 72.0475 111.449 71.5342 110.857 71.5342H104.43C103.932 71.5342 103.513 71.9007 103.423 72.3901C101.73 81.5989 94.2729 88.7946 84.9329 90.0901L82.5873 90.4154C82.1484 90.4763 81.802 90.8186 81.7358 91.2567L81.3825 93.5983Z\" fill=\"#24292E\"/>\n<path d=\"M34.6147 90.0225C25.4866 88.5611 18.2429 81.4494 16.5771 72.39C16.4871 71.9007 16.0677 71.5342 15.5701 71.5342H9.14329C8.55058 71.5342 8.08658 72.0474 8.1687 72.6344C9.83818 84.5682 18.4732 94.265 29.8331 97.4915C30.1842 97.5912 30.4586 97.869 30.5541 98.2214C33.7329 109.955 43.794 118.856 56.1395 120.319C56.7201 120.388 57.2203 119.927 57.2203 119.342V112.94C57.2203 112.432 56.8383 112.007 56.3361 111.929C46.9129 110.459 39.4759 102.977 38.0806 93.5307L37.741 91.2313C37.6772 90.7995 37.3408 90.4589 36.9098 90.3899L34.6147 90.0225Z\" fill=\"#24292E\"/>\n<path d=\"M81.6288 86.129C91.4166 86.129 99.3511 78.1945 99.3511 68.4067C99.3511 58.6189 91.4166 50.6844 81.6288 50.6844C71.841 50.6844 63.9065 58.6189 63.9065 68.4067C63.9065 68.5396 63.908 68.6721 63.9109 68.8042C66.337 69.2726 68.6204 70.1415 70.6896 71.3395C70.0725 70.5241 69.7065 69.5081 69.7065 68.4067C69.7065 65.7199 71.8846 63.5418 74.5715 63.5418C77.2583 63.5418 79.4364 65.7199 79.4364 68.4067C79.4364 71.0935 77.2583 73.2717 74.5715 73.2717C74.1249 73.2717 73.6923 73.2115 73.2814 73.0988C77.3251 76.2875 80.2171 80.8715 81.2313 86.1247C81.3635 86.1276 81.496 86.129 81.6288 86.129Z\" fill=\"#EB2227\"/>\n<path d=\"M77.7179 46.9119C77.7208 46.7798 77.7222 46.6473 77.7222 46.5144C77.7222 36.7267 69.7877 28.7921 59.9999 28.7921C50.2121 28.7921 42.2776 36.7267 42.2776 46.5144C42.2776 56.3022 50.2121 64.2367 59.9999 64.2367C60.1328 64.2367 60.2653 64.2353 60.3974 64.2324C60.8357 61.9623 61.6246 59.8172 62.7056 57.8556C61.932 58.3743 61.0013 58.6768 59.9999 58.6768C57.3131 58.6768 55.135 56.4987 55.135 53.8119C55.135 51.125 57.3131 48.9469 59.9999 48.9469C62.6867 48.9469 64.8649 51.125 64.8649 53.8119C64.8649 54.1364 64.8331 54.4536 64.7724 54.7604C67.9575 50.7698 72.5087 47.9176 77.7179 46.9119Z\" fill=\"#04A54F\"/>\n<path d=\"M55.561 67.9564C55.5647 68.1061 55.5666 68.2562 55.5666 68.4067C55.5666 78.1945 47.632 86.129 37.8443 86.129C28.0565 86.129 20.1219 78.1945 20.1219 68.4067C20.1219 58.6189 28.0565 50.6844 37.8443 50.6844C38.066 50.6844 38.2868 50.6885 38.5066 50.6965C39.5143 55.906 42.3689 60.457 46.3619 63.6408C46.0448 63.5759 45.7166 63.5418 45.3804 63.5418C42.6935 63.5418 40.5154 65.7199 40.5154 68.4067C40.5154 71.0935 42.6935 73.2717 45.3804 73.2717C48.0672 73.2717 50.2453 71.0935 50.2453 68.4067C50.2453 67.3959 49.9371 66.4572 49.4095 65.6793C51.3054 66.7292 53.3736 67.506 55.561 67.9564Z\" fill=\"#2DA9E1\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M30.1088 16.0686C30.1088 12.2302 33.2204 9.11865 37.0587 9.11865C40.897 9.11865 44.0086 12.2302 44.0086 16.0686C44.0086 17.3483 43.6628 18.5472 43.0594 19.577L43.4291 19.9467L40.4805 22.8953L39.9675 22.3823C39.0826 22.7907 38.0973 23.0185 37.0587 23.0185C33.2204 23.0185 30.1088 19.9069 30.1088 16.0686ZM37.0587 13.2886C35.5234 13.2886 34.2787 14.5332 34.2787 16.0686C34.2787 17.6039 35.5234 18.8486 37.0587 18.8486C38.594 18.8486 39.8387 17.6039 39.8387 16.0686C39.8387 14.5332 38.594 13.2886 37.0587 13.2886Z\" fill=\"#24292E\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M43.273 61.7897L43.3202 32.5375L43.345 32.5375C43.3447 27.5138 42.6696 25.0844 40.4805 22.8953L43.4291 19.9467C46.7995 23.3171 47.515 27.142 47.515 32.5409H45.4118L47.4902 32.5442L47.443 61.7606C50.2866 62.6317 52.3543 65.2777 52.3543 68.4067C52.3543 72.245 49.2427 75.3566 45.4044 75.3566C41.566 75.3566 38.4544 72.245 38.4544 68.4067C38.4544 65.3119 40.4773 62.6895 43.273 61.7897ZM45.4044 65.6267C43.869 65.6267 42.6244 66.8713 42.6244 68.4067C42.6244 69.942 43.869 71.1867 45.4044 71.1867C46.9397 71.1867 48.1843 69.942 48.1843 68.4067C48.1843 66.8714 46.9397 65.6267 45.4044 65.6267Z\" fill=\"#24292E\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M76.4483 16.0686C76.4483 12.2302 79.5599 9.11865 83.3982 9.11865C87.2366 9.11865 90.3481 12.2302 90.3481 16.0686C90.3481 19.9069 87.2366 23.0185 83.3982 23.0185C82.2382 23.0185 81.1446 22.7343 80.1832 22.2318L79.5196 22.8953C79.5196 22.8953 79.5196 22.8953 79.5196 22.8953C77.3301 25.0849 76.6553 27.5149 76.6553 32.5409L76.6567 32.5409V61.7674C79.4888 62.6455 81.5457 65.2859 81.5457 68.4067C81.5457 72.245 78.4341 75.3566 74.5958 75.3566C70.7575 75.3566 67.6459 72.245 67.6459 68.4067C67.6459 65.3036 69.6795 62.6756 72.4867 61.7825V32.5409L72.4854 32.5409C72.4854 27.142 73.2007 23.317 76.571 19.9467L77.2347 19.283C76.7324 18.3218 76.4483 17.2283 76.4483 16.0686ZM83.3982 13.2886C81.8629 13.2886 80.6182 14.5332 80.6182 16.0686C80.6182 17.6039 81.8629 18.8486 83.3982 18.8486C84.9336 18.8486 86.1782 17.6039 86.1782 16.0686C86.1782 14.5332 84.9336 13.2886 83.3982 13.2886ZM74.5958 65.6267C73.0605 65.6267 71.8158 66.8714 71.8158 68.4067C71.8158 69.942 73.0605 71.1867 74.5958 71.1867C76.1311 71.1867 77.3758 69.942 77.3758 68.4067C77.3758 66.8714 76.1311 65.6267 74.5958 65.6267Z\" fill=\"#24292E\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M60.0001 0.427979C56.1618 0.427979 53.0502 3.53957 53.0502 7.37791C53.0502 10.4898 55.0954 13.124 57.915 14.0096L57.915 47.1877C55.1078 48.0807 53.0741 50.7088 53.0741 53.8119C53.0741 56.9161 55.1093 59.545 57.9181 60.437L57.9198 61.7735C55.0978 62.6577 53.0503 65.2931 53.0503 68.4067C53.0503 71.5264 55.1059 74.1661 57.9365 75.0451L57.9382 76.3701C55.119 77.256 53.0741 79.89 53.0741 83.0016C53.0741 86.8399 56.1857 89.9515 60.024 89.9515C63.8624 89.9515 66.974 86.8399 66.974 83.0016C66.974 79.8893 64.9282 77.2549 62.1081 76.3695L62.1064 75.0318C64.9151 74.1397 66.9502 71.5108 66.9502 68.4067C66.9502 65.2965 64.9071 62.6634 62.0898 61.7764L62.0881 60.4502C64.9186 59.571 66.974 56.9315 66.974 53.8119C66.974 50.6911 64.917 48.0508 62.085 47.1726L62.085 14.0097C64.9047 13.1241 66.95 10.4899 66.95 7.37791C66.95 3.53957 63.8384 0.427979 60.0001 0.427979ZM57.2201 7.37791C57.2201 5.84257 58.4648 4.59794 60.0001 4.59794C61.5354 4.59794 62.7801 5.84257 62.7801 7.37791C62.7801 8.91324 61.5354 10.1579 60.0001 10.1579C58.4648 10.1579 57.2201 8.91324 57.2201 7.37791ZM57.2441 83.0016C57.2441 81.4662 58.4887 80.2216 60.024 80.2216C61.5594 80.2216 62.804 81.4662 62.804 83.0016C62.804 84.5369 61.5594 85.7815 60.024 85.7815C58.4887 85.7815 57.2441 84.5369 57.2441 83.0016ZM57.2203 68.4067C57.2203 66.8714 58.4649 65.6268 60.0003 65.6268C61.5356 65.6268 62.7802 66.8714 62.7802 68.4067C62.7802 69.9421 61.5356 71.1867 60.0003 71.1867C58.4649 71.1867 57.2203 69.9421 57.2203 68.4067ZM60.024 51.0319C58.4887 51.0319 57.2441 52.2765 57.2441 53.8119C57.2441 55.3472 58.4887 56.5918 60.024 56.5918C61.5594 56.5918 62.804 55.3472 62.804 53.8119C62.804 52.2765 61.5594 51.0319 60.024 51.0319Z\" fill=\"#24292E\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_196:2879\">\n<rect width=\"120\" height=\"120\" fill=\"white\" transform=\"translate(0 0.427979)\"/>\n</clipPath>\n</defs>\n</svg>";
4428
+ var logo = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMSIgdmlld0JveD0iMCAwIDEyMCAxMjEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTk2OjI4NzkpIj4NCjxwYXRoIGQ9Ik03NC4xMzI5IDE5LjkzNUM3MS4yNTQ2IDE4LjE2NDQgNjcuNzU4IDE3LjE1ODYgNjQuMjEzOCAxNi42Mzc5QzYwLjg4MzkgMTYuMjUyNyA1OS4wNjk3IDE2LjI2IDU1Ljg4NDIgMTYuNTY1M0M1Mi4yODYgMTcuMDI5NSA0OC44ODY2IDE4LjEyNjkgNDUuODAxMiAxOS43NDIyTDM4Ljk3NDYgMjQuNjMzNEMzNS4wMzM1IDI4LjM4NDQgMzIuMTA0NyAzMy4xODk4IDMwLjYzOTcgMzguNTk3N0MzMC41NDQzIDM4Ljk1MDEgMzAuMjcwMyAzOS4yMjcxIDI5LjkxOTEgMzkuMzI2OUMxOC4yMTY2IDQyLjY1MzcgOS4wOTc2NiA1My4wMTczIDguMTQ4ODUgNjUuMjUxN0M3Ljk1ODEgNjcuNzExNSA4LjA0MjUyIDY5LjA3NzkgOC4xNDg4NiA3MS40OTg5QzguNjE1NzEgODIuMTI3OCAxOC4yMDE5IDk0LjA0NjUgMjkuOTIgOTcuNDIyOUMzMC4yNzA4IDk3LjUyMzkgMzAuNTQ0NCA5Ny44MDExIDMwLjYzOTggOTguMTUzNUMzMy45MDYzIDExMC4yMjEgNDQuNDMyNiAxMTkuNTUzIDU3LjI3MjcgMTIwLjMzMkM1OS43NjMyIDEyMC40ODMgNjEuMTIxMyAxMjAuNDY2IDYzLjUxOTkgMTIwLjIwN0M3NC41MDI3IDExOS4wMTcgODUuNjQzMyAxMDkuOTE0IDg4Ljg5IDk4LjMwMzZDODguOTg5NyA5Ny45NDcgODkuMjcxNSA5Ny42Njg3IDg5LjYyOTUgOTcuNTc0MkMxMDEuNiA5NC40MTQxIDExMC44MDkgODMuOTIyNiAxMTEuNzc4IDcxLjMyNzZMMTExLjc5IDcxLjE2MzJDMTExLjk3IDY4LjgzNDkgMTEyLjA3NiA2Ny40NjEyIDExMS43NzggNjUuMDgwNEMxMTAuMTcyIDUyLjI0MTMgMTAxLjU4IDQyLjMxODUgODkuNjMwMSAzOS4xNzYzQzg5LjI3MiAzOS4wODIyIDg4Ljk5MDQgMzguODA0MyA4OC44ODc2IDM4LjQ0ODZDODcuMzQ1NCAzMy4xMTIxIDgzLjE1NjcgMjYuOTEwOCA4MC44NjY5IDI0Ljg5MzJDNzguNDkzNiAyMi44MDIgNzcuMDExMiAyMS43MDU1IDc0LjEzMjkgMTkuOTM1WiIgZmlsbD0iI0ZBRkFGQSIvPg0KPHBhdGggZD0iTTU1LjM1NjUgODEuNTQ2M0M1Mi4yMTA2IDg1LjczMjQgNDcuNTk4OCA4OC43NTM5IDQyLjI4MzMgODkuODQ4N0M0Mi4yNzk2IDg5Ljk5ODMgNDIuMjc3NyA5MC4xNDg0IDQyLjI3NzcgOTAuMjk5QzQyLjI3NzcgMTAwLjA4NyA1MC4yMTIzIDEwOC4wMjEgNjAgMTA4LjAyMUM2OS43ODc4IDEwOC4wMjEgNzcuNzIyMyAxMDAuMDg3IDc3LjcyMjMgOTAuMjk5Qzc3LjcyMjMgODAuNTExMiA2OS43ODc4IDcyLjU3NjcgNjAgNzIuNTc2N0M1OS43NzgyIDcyLjU3NjcgNTkuNTU3NCA3Mi41ODA3IDU5LjMzNzUgNzIuNTg4OEM1OC44NzI3IDc0Ljk5MTkgNTguMDE0OCA3Ny4yNTQ4IDU2LjgzMzYgNzkuMzA4QzU3LjY4NDUgNzguNTc3OCA1OC43OTA4IDc4LjEzNjYgNjAgNzguMTM2NkM2Mi42ODY5IDc4LjEzNjYgNjQuODY1IDgwLjMxNDcgNjQuODY1IDgzLjAwMTZDNjQuODY1IDg1LjY4ODQgNjIuNjg2OSA4Ny44NjY1IDYwIDg3Ljg2NjVDNTcuMzEzMiA4Ny44NjY1IDU1LjEzNTEgODUuNjg4NCA1NS4xMzUxIDgzLjAwMTZDNTUuMTM1MSA4Mi40OTQ2IDU1LjIxMjYgODIuMDA1OCA1NS4zNTY1IDgxLjU0NjNaIiBmaWxsPSIjRjJCMjREIi8+DQo8cGF0aCBkPSJNNzMuMzU1IDIwLjg3NTRDNzMuNzE5OSAyMC4zNTkxIDczLjU4MTcgMTkuNjIzOSA3My4wMTM4IDE5LjM0NTlDNzAuNjA4NyAxOC4xNjgzIDY4LjAyNCAxNy4zMDA3IDY1LjMxMTkgMTYuNzk1MkM2NC43MTIgMTYuNjgzNCA2NC4xNjk5IDE3LjE1MjQgNjQuMTY5OSAxNy43NjI2VjI0LjI1NjNDNjQuMTY5OSAyNC43MzA5IDY0LjUwNDIgMjUuMTM3NyA2NC45NjUyIDI1LjI1MDdDNjYuNTM2NCAyNS42MzU4IDY4LjA0MSAyNi4xOTA1IDY5LjQ1ODcgMjYuODk0MkM3MC4wODg4IDI3LjIwNzEgNzAuODY0NCAyNi44Mzc2IDcxLjAyNDggMjYuMTUyN0M3MS40NjUzIDI0LjI3MTggNzIuMTkwNiAyMi41MjMgNzMuMzU1IDIwLjg3NTRaIiBmaWxsPSIjMjQyOTJFIi8+DQo8cGF0aCBkPSJNNzguODcyNyAzNS44NzAyQzc4Ljc4NzYgMzUuNzE3OCA3OC43NDE1IDM1LjU0NjUgNzguNzQxNSAzNS4zNzE5VjMyLjg4OTFDNzguNzQxNSAzMi44ODg3IDc4Ljc0MTIgMzIuODg4NCA3OC43NDA4IDMyLjg4ODRWMzIuODg4NEM3OC43NDA0IDMyLjg4ODQgNzguNzQwMSAzMi44ODgxIDc4Ljc0MDEgMzIuODg3N0M3OC43NDAyIDI4Ljk1MSA3OS4xNzM0IDI3LjA3MDMgODAuMTk2IDI1LjY0NDhDODAuNTIwMiAyNS4xOTI3IDgxLjE3MDEgMjUuMTg2NCA4MS41NTUyIDI1LjU4NzlDODQuOTcxNiAyOS4xNDk3IDg3LjUyNDUgMzMuNTQ2NSA4OC44NzggMzguNDQyQzg4Ljk3NjcgMzguNzk4OCA4OS4yNTg3IDM5LjA3NyA4OS42MTY3IDM5LjE3MTNDMTAxLjI0OCA0Mi4yMzcxIDExMC4xMzUgNTIuMDUzNiAxMTEuODMxIDY0LjE3OUMxMTEuOTEzIDY0Ljc2NiAxMTEuNDQ5IDY1LjI3OTMgMTEwLjg1NyA2NS4yNzkzSDEwNC40M0MxMDMuOTMyIDY1LjI3OTMgMTAzLjUxMyA2NC45MTI4IDEwMy40MjMgNjQuNDIzNEMxMDEuNzMgNTUuMjE0NiA5NC4yNzI5IDQ4LjAxODkgODQuOTMyOSA0Ni43MjM0TDgyLjU4NzMgNDYuMzk4MUM4Mi4xNDg0IDQ2LjMzNzIgODEuODAyIDQ1Ljk5NDggODEuNzM1OCA0NS41NTY4TDgxLjM4MjUgNDMuMjE1MkM4MC45ODU1IDQwLjU4NDIgODAuMTE5NSAzOC4xMDY2IDc4Ljg3MjcgMzUuODcwMloiIGZpbGw9IiMyNDI5MkUiLz4NCjxwYXRoIGQ9Ik0zOS4wMDYxIDI0LjcxNzFDMzguOTQ2NyAyNC42NTc4IDM4Ljg1MDggMjQuNjU2NSAzOC43OTAzIDI0LjcxNDdDMzQuODk5MSAyOC40NTUyIDMyLjAwNzIgMzMuMjI3OSAzMC41NTM5IDM4LjU5MjhDMzAuNDU4NSAzOC45NDUxIDMwLjE4NDIgMzkuMjIyMyAyOS44MzMxIDM5LjMyMkMxOC40NzMyIDQyLjU0ODUgOS44MzgxNyA1Mi4yNDUzIDguMTY4NyA2NC4xNzkxQzguMDg2NTggNjQuNzY2MSA4LjU1MDU4IDY1LjI3OTMgOS4xNDMyOSA2NS4yNzkzSDE1LjU3MDFDMTYuMDY3NyA2NS4yNzkzIDE2LjQ4NzEgNjQuOTEyOCAxNi41NzcxIDY0LjQyMzRDMTguMjQyOSA1NS4zNjQxIDI1LjQ4NjYgNDguMjUyNCAzNC42MTQ3IDQ2Ljc5MUwzNi45MDk4IDQ2LjQyMzVDMzcuMzQwOCA0Ni4zNTQ1IDM3LjY3NzIgNDYuMDE0IDM3Ljc0MSA0NS41ODIyTDM4LjA4MDYgNDMuMjgyOEMzOC41MjMyIDQwLjI4NjYgMzkuNTczNiAzNy40ODgxIDQxLjEwMjQgMzUuMDE2M0M0MS4yMDIyIDM0Ljg1NDkgNDEuMjU3IDM0LjY2OTQgNDEuMjU3MyAzNC40Nzk2TDQxLjI1OTkgMzIuODgxN0M0MS4yNTkzIDI4LjA0NzIgNDAuNjA0NiAyNi4zMTU2IDM5LjAwNjEgMjQuNzE3MVYyNC43MTcxWiIgZmlsbD0iIzI0MjkyRSIvPg0KPHBhdGggZD0iTTUwLjQ2MDkgMjYuNjc4OUM0OS44Mzg1IDI2Ljk3MDUgNDkuMDg4OSAyNi42MDc4IDQ4LjkyNDEgMjUuOTQwNkM0OC40NjI5IDI0LjA3MzYgNDcuNzEyNCAyMi4zMzcyIDQ2LjUxOTIgMjAuNzAwM0M0Ni4xMzk2IDIwLjE3OTYgNDYuMjgwOCAxOS40MjY0IDQ2Ljg2MzcgMTkuMTUxN0M0OS4zMTQ5IDE3Ljk5NjUgNTEuOTQ2NiAxNy4xNjEgNTQuNzA1IDE2LjY5OUM1NS4yOTk4IDE2LjU5OTQgNTUuODMgMTcuMDY2NSA1NS44MyAxNy42Njk2VjI0LjEzMzlDNTUuODMgMjQuNjE3OCA1NS40ODI5IDI1LjAyOTggNTUuMDEwNCAyNS4xMzM4QzUzLjQyMjQgMjUuNDgzMyA1MS44OTkgMjYuMDA1MyA1MC40NjA5IDI2LjY3ODlaIiBmaWxsPSIjMjQyOTJFIi8+DQo8cGF0aCBkPSJNODEuMzgyNSA5My41OTgzQzgwLjAyMSAxMDIuNjIgNzMuMTQ2NiAxMDkuODM3IDY0LjMwMjggMTExLjcxNEM2My44MjY1IDExMS44MTUgNjMuNDc1MiAxMTIuMjI5IDYzLjQ3NTIgMTEyLjcxNlYxMTkuMTcyQzYzLjQ3NTIgMTE5Ljc3MiA2NC4wMDE4IDEyMC4yMzkgNjQuNTk0OSAxMjAuMTQzQzc2LjMwODYgMTE4LjI1MSA4NS43NjUgMTA5LjYzIDg4Ljg3NzggOTguMzcyMkM4OC45NzY1IDk4LjAxNTMgODkuMjU4NyA5Ny43MzY1IDg5LjYxNjcgOTcuNjQyMkMxMDEuMjQ3IDk0LjU3NjQgMTEwLjEzNSA4NC43NTk4IDExMS44MzEgNzIuNjM0NUMxMTEuOTEzIDcyLjA0NzUgMTExLjQ0OSA3MS41MzQyIDExMC44NTcgNzEuNTM0MkgxMDQuNDNDMTAzLjkzMiA3MS41MzQyIDEwMy41MTMgNzEuOTAwNyAxMDMuNDIzIDcyLjM5MDFDMTAxLjczIDgxLjU5ODkgOTQuMjcyOSA4OC43OTQ2IDg0LjkzMjkgOTAuMDkwMUw4Mi41ODczIDkwLjQxNTRDODIuMTQ4NCA5MC40NzYzIDgxLjgwMiA5MC44MTg2IDgxLjczNTggOTEuMjU2N0w4MS4zODI1IDkzLjU5ODNaIiBmaWxsPSIjMjQyOTJFIi8+DQo8cGF0aCBkPSJNMzQuNjE0NyA5MC4wMjI1QzI1LjQ4NjYgODguNTYxMSAxOC4yNDI5IDgxLjQ0OTQgMTYuNTc3MSA3Mi4zOUMxNi40ODcxIDcxLjkwMDcgMTYuMDY3NyA3MS41MzQyIDE1LjU3MDEgNzEuNTM0Mkg5LjE0MzI5QzguNTUwNTggNzEuNTM0MiA4LjA4NjU4IDcyLjA0NzQgOC4xNjg3IDcyLjYzNDRDOS44MzgxOCA4NC41NjgyIDE4LjQ3MzIgOTQuMjY1IDI5LjgzMzEgOTcuNDkxNUMzMC4xODQyIDk3LjU5MTIgMzAuNDU4NiA5Ny44NjkgMzAuNTU0MSA5OC4yMjE0QzMzLjczMjkgMTA5Ljk1NSA0My43OTQgMTE4Ljg1NiA1Ni4xMzk1IDEyMC4zMTlDNTYuNzIwMSAxMjAuMzg4IDU3LjIyMDMgMTE5LjkyNyA1Ny4yMjAzIDExOS4zNDJWMTEyLjk0QzU3LjIyMDMgMTEyLjQzMiA1Ni44MzgzIDExMi4wMDcgNTYuMzM2MSAxMTEuOTI5QzQ2LjkxMjkgMTEwLjQ1OSAzOS40NzU5IDEwMi45NzcgMzguMDgwNiA5My41MzA3TDM3Ljc0MSA5MS4yMzEzQzM3LjY3NzIgOTAuNzk5NSAzNy4zNDA4IDkwLjQ1ODkgMzYuOTA5OCA5MC4zODk5TDM0LjYxNDcgOTAuMDIyNVoiIGZpbGw9IiMyNDI5MkUiLz4NCjxwYXRoIGQ9Ik04MS42Mjg4IDg2LjEyOUM5MS40MTY2IDg2LjEyOSA5OS4zNTExIDc4LjE5NDUgOTkuMzUxMSA2OC40MDY3Qzk5LjM1MTEgNTguNjE4OSA5MS40MTY2IDUwLjY4NDQgODEuNjI4OCA1MC42ODQ0QzcxLjg0MSA1MC42ODQ0IDYzLjkwNjUgNTguNjE4OSA2My45MDY1IDY4LjQwNjdDNjMuOTA2NSA2OC41Mzk2IDYzLjkwOCA2OC42NzIxIDYzLjkxMDkgNjguODA0MkM2Ni4zMzcgNjkuMjcyNiA2OC42MjA0IDcwLjE0MTUgNzAuNjg5NiA3MS4zMzk1QzcwLjA3MjUgNzAuNTI0MSA2OS43MDY1IDY5LjUwODEgNjkuNzA2NSA2OC40MDY3QzY5LjcwNjUgNjUuNzE5OSA3MS44ODQ2IDYzLjU0MTggNzQuNTcxNSA2My41NDE4Qzc3LjI1ODMgNjMuNTQxOCA3OS40MzY0IDY1LjcxOTkgNzkuNDM2NCA2OC40MDY3Qzc5LjQzNjQgNzEuMDkzNSA3Ny4yNTgzIDczLjI3MTcgNzQuNTcxNSA3My4yNzE3Qzc0LjEyNDkgNzMuMjcxNyA3My42OTIzIDczLjIxMTUgNzMuMjgxNCA3My4wOTg4Qzc3LjMyNTEgNzYuMjg3NSA4MC4yMTcxIDgwLjg3MTUgODEuMjMxMyA4Ni4xMjQ3QzgxLjM2MzUgODYuMTI3NiA4MS40OTYgODYuMTI5IDgxLjYyODggODYuMTI5WiIgZmlsbD0iI0VCMjIyNyIvPg0KPHBhdGggZD0iTTc3LjcxNzkgNDYuOTExOUM3Ny43MjA4IDQ2Ljc3OTggNzcuNzIyMiA0Ni42NDczIDc3LjcyMjIgNDYuNTE0NEM3Ny43MjIyIDM2LjcyNjcgNjkuNzg3NyAyOC43OTIxIDU5Ljk5OTkgMjguNzkyMUM1MC4yMTIxIDI4Ljc5MjEgNDIuMjc3NiAzNi43MjY3IDQyLjI3NzYgNDYuNTE0NEM0Mi4yNzc2IDU2LjMwMjIgNTAuMjEyMSA2NC4yMzY3IDU5Ljk5OTkgNjQuMjM2N0M2MC4xMzI4IDY0LjIzNjcgNjAuMjY1MyA2NC4yMzUzIDYwLjM5NzQgNjQuMjMyNEM2MC44MzU3IDYxLjk2MjMgNjEuNjI0NiA1OS44MTcyIDYyLjcwNTYgNTcuODU1NkM2MS45MzIgNTguMzc0MyA2MS4wMDEzIDU4LjY3NjggNTkuOTk5OSA1OC42NzY4QzU3LjMxMzEgNTguNjc2OCA1NS4xMzUgNTYuNDk4NyA1NS4xMzUgNTMuODExOUM1NS4xMzUgNTEuMTI1IDU3LjMxMzEgNDguOTQ2OSA1OS45OTk5IDQ4Ljk0NjlDNjIuNjg2NyA0OC45NDY5IDY0Ljg2NDkgNTEuMTI1IDY0Ljg2NDkgNTMuODExOUM2NC44NjQ5IDU0LjEzNjQgNjQuODMzMSA1NC40NTM2IDY0Ljc3MjQgNTQuNzYwNEM2Ny45NTc1IDUwLjc2OTggNzIuNTA4NyA0Ny45MTc2IDc3LjcxNzkgNDYuOTExOVoiIGZpbGw9IiMwNEE1NEYiLz4NCjxwYXRoIGQ9Ik01NS41NjEgNjcuOTU2NEM1NS41NjQ3IDY4LjEwNjEgNTUuNTY2NiA2OC4yNTYyIDU1LjU2NjYgNjguNDA2N0M1NS41NjY2IDc4LjE5NDUgNDcuNjMyIDg2LjEyOSAzNy44NDQzIDg2LjEyOUMyOC4wNTY1IDg2LjEyOSAyMC4xMjE5IDc4LjE5NDUgMjAuMTIxOSA2OC40MDY3QzIwLjEyMTkgNTguNjE4OSAyOC4wNTY1IDUwLjY4NDQgMzcuODQ0MyA1MC42ODQ0QzM4LjA2NiA1MC42ODQ0IDM4LjI4NjggNTAuNjg4NSAzOC41MDY2IDUwLjY5NjVDMzkuNTE0MyA1NS45MDYgNDIuMzY4OSA2MC40NTcgNDYuMzYxOSA2My42NDA4QzQ2LjA0NDggNjMuNTc1OSA0NS43MTY2IDYzLjU0MTggNDUuMzgwNCA2My41NDE4QzQyLjY5MzUgNjMuNTQxOCA0MC41MTU0IDY1LjcxOTkgNDAuNTE1NCA2OC40MDY3QzQwLjUxNTQgNzEuMDkzNSA0Mi42OTM1IDczLjI3MTcgNDUuMzgwNCA3My4yNzE3QzQ4LjA2NzIgNzMuMjcxNyA1MC4yNDUzIDcxLjA5MzUgNTAuMjQ1MyA2OC40MDY3QzUwLjI0NTMgNjcuMzk1OSA0OS45MzcxIDY2LjQ1NzIgNDkuNDA5NSA2NS42NzkzQzUxLjMwNTQgNjYuNzI5MiA1My4zNzM2IDY3LjUwNiA1NS41NjEgNjcuOTU2NFoiIGZpbGw9IiMyREE5RTEiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMTA4OCAxNi4wNjg2QzMwLjEwODggMTIuMjMwMiAzMy4yMjA0IDkuMTE4NjUgMzcuMDU4NyA5LjExODY1QzQwLjg5NyA5LjExODY1IDQ0LjAwODYgMTIuMjMwMiA0NC4wMDg2IDE2LjA2ODZDNDQuMDA4NiAxNy4zNDgzIDQzLjY2MjggMTguNTQ3MiA0My4wNTk0IDE5LjU3N0w0My40MjkxIDE5Ljk0NjdMNDAuNDgwNSAyMi44OTUzTDM5Ljk2NzUgMjIuMzgyM0MzOS4wODI2IDIyLjc5MDcgMzguMDk3MyAyMy4wMTg1IDM3LjA1ODcgMjMuMDE4NUMzMy4yMjA0IDIzLjAxODUgMzAuMTA4OCAxOS45MDY5IDMwLjEwODggMTYuMDY4NlpNMzcuMDU4NyAxMy4yODg2QzM1LjUyMzQgMTMuMjg4NiAzNC4yNzg3IDE0LjUzMzIgMzQuMjc4NyAxNi4wNjg2QzM0LjI3ODcgMTcuNjAzOSAzNS41MjM0IDE4Ljg0ODYgMzcuMDU4NyAxOC44NDg2QzM4LjU5NCAxOC44NDg2IDM5LjgzODcgMTcuNjAzOSAzOS44Mzg3IDE2LjA2ODZDMzkuODM4NyAxNC41MzMyIDM4LjU5NCAxMy4yODg2IDM3LjA1ODcgMTMuMjg4NloiIGZpbGw9IiMyNDI5MkUiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDMuMjczIDYxLjc4OTdMNDMuMzIwMiAzMi41Mzc1TDQzLjM0NSAzMi41Mzc1QzQzLjM0NDcgMjcuNTEzOCA0Mi42Njk2IDI1LjA4NDQgNDAuNDgwNSAyMi44OTUzTDQzLjQyOTEgMTkuOTQ2N0M0Ni43OTk1IDIzLjMxNzEgNDcuNTE1IDI3LjE0MiA0Ny41MTUgMzIuNTQwOUg0NS40MTE4TDQ3LjQ5MDIgMzIuNTQ0Mkw0Ny40NDMgNjEuNzYwNkM1MC4yODY2IDYyLjYzMTcgNTIuMzU0MyA2NS4yNzc3IDUyLjM1NDMgNjguNDA2N0M1Mi4zNTQzIDcyLjI0NSA0OS4yNDI3IDc1LjM1NjYgNDUuNDA0NCA3NS4zNTY2QzQxLjU2NiA3NS4zNTY2IDM4LjQ1NDQgNzIuMjQ1IDM4LjQ1NDQgNjguNDA2N0MzOC40NTQ0IDY1LjMxMTkgNDAuNDc3MyA2Mi42ODk1IDQzLjI3MyA2MS43ODk3Wk00NS40MDQ0IDY1LjYyNjdDNDMuODY5IDY1LjYyNjcgNDIuNjI0NCA2Ni44NzEzIDQyLjYyNDQgNjguNDA2N0M0Mi42MjQ0IDY5Ljk0MiA0My44NjkgNzEuMTg2NyA0NS40MDQ0IDcxLjE4NjdDNDYuOTM5NyA3MS4xODY3IDQ4LjE4NDMgNjkuOTQyIDQ4LjE4NDMgNjguNDA2N0M0OC4xODQzIDY2Ljg3MTQgNDYuOTM5NyA2NS42MjY3IDQ1LjQwNDQgNjUuNjI2N1oiIGZpbGw9IiMyNDI5MkUiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzYuNDQ4MyAxNi4wNjg2Qzc2LjQ0ODMgMTIuMjMwMiA3OS41NTk5IDkuMTE4NjUgODMuMzk4MiA5LjExODY1Qzg3LjIzNjYgOS4xMTg2NSA5MC4zNDgxIDEyLjIzMDIgOTAuMzQ4MSAxNi4wNjg2QzkwLjM0ODEgMTkuOTA2OSA4Ny4yMzY2IDIzLjAxODUgODMuMzk4MiAyMy4wMTg1QzgyLjIzODIgMjMuMDE4NSA4MS4xNDQ2IDIyLjczNDMgODAuMTgzMiAyMi4yMzE4TDc5LjUxOTYgMjIuODk1M0M3OS41MTk2IDIyLjg5NTMgNzkuNTE5NiAyMi44OTUzIDc5LjUxOTYgMjIuODk1M0M3Ny4zMzAxIDI1LjA4NDkgNzYuNjU1MyAyNy41MTQ5IDc2LjY1NTMgMzIuNTQwOUw3Ni42NTY3IDMyLjU0MDlWNjEuNzY3NEM3OS40ODg4IDYyLjY0NTUgODEuNTQ1NyA2NS4yODU5IDgxLjU0NTcgNjguNDA2N0M4MS41NDU3IDcyLjI0NSA3OC40MzQxIDc1LjM1NjYgNzQuNTk1OCA3NS4zNTY2QzcwLjc1NzUgNzUuMzU2NiA2Ny42NDU5IDcyLjI0NSA2Ny42NDU5IDY4LjQwNjdDNjcuNjQ1OSA2NS4zMDM2IDY5LjY3OTUgNjIuNjc1NiA3Mi40ODY3IDYxLjc4MjVWMzIuNTQwOUw3Mi40ODU0IDMyLjU0MDlDNzIuNDg1NCAyNy4xNDIgNzMuMjAwNyAyMy4zMTcgNzYuNTcxIDE5Ljk0NjdMNzcuMjM0NyAxOS4yODNDNzYuNzMyNCAxOC4zMjE4IDc2LjQ0ODMgMTcuMjI4MyA3Ni40NDgzIDE2LjA2ODZaTTgzLjM5ODIgMTMuMjg4NkM4MS44NjI5IDEzLjI4ODYgODAuNjE4MiAxNC41MzMyIDgwLjYxODIgMTYuMDY4NkM4MC42MTgyIDE3LjYwMzkgODEuODYyOSAxOC44NDg2IDgzLjM5ODIgMTguODQ4NkM4NC45MzM2IDE4Ljg0ODYgODYuMTc4MiAxNy42MDM5IDg2LjE3ODIgMTYuMDY4NkM4Ni4xNzgyIDE0LjUzMzIgODQuOTMzNiAxMy4yODg2IDgzLjM5ODIgMTMuMjg4NlpNNzQuNTk1OCA2NS42MjY3QzczLjA2MDUgNjUuNjI2NyA3MS44MTU4IDY2Ljg3MTQgNzEuODE1OCA2OC40MDY3QzcxLjgxNTggNjkuOTQyIDczLjA2MDUgNzEuMTg2NyA3NC41OTU4IDcxLjE4NjdDNzYuMTMxMSA3MS4xODY3IDc3LjM3NTggNjkuOTQyIDc3LjM3NTggNjguNDA2N0M3Ny4zNzU4IDY2Ljg3MTQgNzYuMTMxMSA2NS42MjY3IDc0LjU5NTggNjUuNjI2N1oiIGZpbGw9IiMyNDI5MkUiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjAuMDAwMSAwLjQyNzk3OUM1Ni4xNjE4IDAuNDI3OTc5IDUzLjA1MDIgMy41Mzk1NyA1My4wNTAyIDcuMzc3OTFDNTMuMDUwMiAxMC40ODk4IDU1LjA5NTQgMTMuMTI0IDU3LjkxNSAxNC4wMDk2TDU3LjkxNSA0Ny4xODc3QzU1LjEwNzggNDguMDgwNyA1My4wNzQxIDUwLjcwODggNTMuMDc0MSA1My44MTE5QzUzLjA3NDEgNTYuOTE2MSA1NS4xMDkzIDU5LjU0NSA1Ny45MTgxIDYwLjQzN0w1Ny45MTk4IDYxLjc3MzVDNTUuMDk3OCA2Mi42NTc3IDUzLjA1MDMgNjUuMjkzMSA1My4wNTAzIDY4LjQwNjdDNTMuMDUwMyA3MS41MjY0IDU1LjEwNTkgNzQuMTY2MSA1Ny45MzY1IDc1LjA0NTFMNTcuOTM4MiA3Ni4zNzAxQzU1LjExOSA3Ny4yNTYgNTMuMDc0MSA3OS44OSA1My4wNzQxIDgzLjAwMTZDNTMuMDc0MSA4Ni44Mzk5IDU2LjE4NTcgODkuOTUxNSA2MC4wMjQgODkuOTUxNUM2My44NjI0IDg5Ljk1MTUgNjYuOTc0IDg2LjgzOTkgNjYuOTc0IDgzLjAwMTZDNjYuOTc0IDc5Ljg4OTMgNjQuOTI4MiA3Ny4yNTQ5IDYyLjEwODEgNzYuMzY5NUw2Mi4xMDY0IDc1LjAzMThDNjQuOTE1MSA3NC4xMzk3IDY2Ljk1MDIgNzEuNTEwOCA2Ni45NTAyIDY4LjQwNjdDNjYuOTUwMiA2NS4yOTY1IDY0LjkwNzEgNjIuNjYzNCA2Mi4wODk4IDYxLjc3NjRMNjIuMDg4MSA2MC40NTAyQzY0LjkxODYgNTkuNTcxIDY2Ljk3NCA1Ni45MzE1IDY2Ljk3NCA1My44MTE5QzY2Ljk3NCA1MC42OTExIDY0LjkxNyA0OC4wNTA4IDYyLjA4NSA0Ny4xNzI2TDYyLjA4NSAxNC4wMDk3QzY0LjkwNDcgMTMuMTI0MSA2Ni45NSAxMC40ODk5IDY2Ljk1IDcuMzc3OTFDNjYuOTUgMy41Mzk1NyA2My44Mzg0IDAuNDI3OTc5IDYwLjAwMDEgMC40Mjc5NzlaTTU3LjIyMDEgNy4zNzc5MUM1Ny4yMjAxIDUuODQyNTcgNTguNDY0OCA0LjU5Nzk0IDYwLjAwMDEgNC41OTc5NEM2MS41MzU0IDQuNTk3OTQgNjIuNzgwMSA1Ljg0MjU3IDYyLjc4MDEgNy4zNzc5MUM2Mi43ODAxIDguOTEzMjQgNjEuNTM1NCAxMC4xNTc5IDYwLjAwMDEgMTAuMTU3OUM1OC40NjQ4IDEwLjE1NzkgNTcuMjIwMSA4LjkxMzI0IDU3LjIyMDEgNy4zNzc5MVpNNTcuMjQ0MSA4My4wMDE2QzU3LjI0NDEgODEuNDY2MiA1OC40ODg3IDgwLjIyMTYgNjAuMDI0IDgwLjIyMTZDNjEuNTU5NCA4MC4yMjE2IDYyLjgwNCA4MS40NjYyIDYyLjgwNCA4My4wMDE2QzYyLjgwNCA4NC41MzY5IDYxLjU1OTQgODUuNzgxNSA2MC4wMjQgODUuNzgxNUM1OC40ODg3IDg1Ljc4MTUgNTcuMjQ0MSA4NC41MzY5IDU3LjI0NDEgODMuMDAxNlpNNTcuMjIwMyA2OC40MDY3QzU3LjIyMDMgNjYuODcxNCA1OC40NjQ5IDY1LjYyNjggNjAuMDAwMyA2NS42MjY4QzYxLjUzNTYgNjUuNjI2OCA2Mi43ODAyIDY2Ljg3MTQgNjIuNzgwMiA2OC40MDY3QzYyLjc4MDIgNjkuOTQyMSA2MS41MzU2IDcxLjE4NjcgNjAuMDAwMyA3MS4xODY3QzU4LjQ2NDkgNzEuMTg2NyA1Ny4yMjAzIDY5Ljk0MjEgNTcuMjIwMyA2OC40MDY3Wk02MC4wMjQgNTEuMDMxOUM1OC40ODg3IDUxLjAzMTkgNTcuMjQ0MSA1Mi4yNzY1IDU3LjI0NDEgNTMuODExOUM1Ny4yNDQxIDU1LjM0NzIgNTguNDg4NyA1Ni41OTE4IDYwLjAyNCA1Ni41OTE4QzYxLjU1OTQgNTYuNTkxOCA2Mi44MDQgNTUuMzQ3MiA2Mi44MDQgNTMuODExOUM2Mi44MDQgNTIuMjc2NSA2MS41NTk0IDUxLjAzMTkgNjAuMDI0IDUxLjAzMTlaIiBmaWxsPSIjMjQyOTJFIi8+DQo8L2c+DQo8ZGVmcz4NCjxjbGlwUGF0aCBpZD0iY2xpcDBfMTk2OjI4NzkiPg0KPHJlY3Qgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMjAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNDI3OTc5KSIvPg0KPC9jbGlwUGF0aD4NCjwvZGVmcz4NCjwvc3ZnPg==';
4437
4429
 
4438
- var Logo = function () {
4430
+ function Logo() {
4439
4431
  return (React__default.createElement("div", { style: {
4440
4432
  display: 'flex',
4441
4433
  justifyContent: 'center',
@@ -4443,10 +4435,10 @@ var Logo = function () {
4443
4435
  borderRadius: 99999,
4444
4436
  maxHeight: 24,
4445
4437
  maxWidth: 24,
4446
- marginRight: 6
4438
+ marginRight: 6,
4447
4439
  } },
4448
- React__default.createElement("img", { src: logo, alt: 'Pollination Logo' })));
4449
- };
4440
+ React__default.createElement("img", { src: logo, alt: "Pollination Logo" })));
4441
+ }
4450
4442
 
4451
4443
  var SettingsButton = function (_a) {
4452
4444
  var options = _a.options, disabled = _a.disabled, onClick = _a.onClick, label = _a.label;
@@ -4455,7 +4447,7 @@ var SettingsButton = function (_a) {
4455
4447
  flex: 1,
4456
4448
  } },
4457
4449
  React__default.createElement(Logo, null),
4458
- disabled ? 'Try a Pollination CAD Plugin' : label),
4450
+ disabled ? 'Open in a Pollination CAD Plugin' : label),
4459
4451
  React__default.createElement(Dropdown, { trigger: React__default.createElement("button", null,
4460
4452
  React__default.createElement(CaretDownFill$1, null)), options: options, contentProps: {
4461
4453
  align: 'end',
@@ -4471,35 +4463,57 @@ var GetGeometry = function (_a) {
4471
4463
  var subscribeRef = useRef();
4472
4464
  var _c = useState(false), selection = _c[0], setSelection = _c[1];
4473
4465
  // pollination-react-io hooks
4474
- var _d = useGetGeometry(), host = _d.host, geometry = _d.geometry, getGeometry = _d.getGeometry;
4466
+ var _d = useGetGeometry(); _d.host; var geometry = _d.geometry, getGeometry = _d.getGeometry;
4475
4467
  // initial retrieval of geometry
4476
- useEffect(function () {
4477
- if (!getGeometry)
4478
- return;
4479
- getGeometry('get-geometry', selection);
4480
- }, [host]);
4468
+ if (getGeometry)
4469
+ getGeometry(performance.now().toString());
4481
4470
  useEffect(function () {
4482
4471
  if (!geometry || !setParentState)
4483
4472
  return;
4484
- setParentState(geometry);
4485
- }, [geometry]);
4473
+ var fr = new FileReader();
4474
+ fr.onload = function (ev) {
4475
+ if (typeof this.result !== 'string')
4476
+ return;
4477
+ setParentState({ geometry: JSON.parse(this.result) });
4478
+ };
4479
+ fr.readAsText(geometry);
4480
+ }, [geometry, setParentState]);
4486
4481
  // subscribe
4487
4482
  useEffect(function () {
4488
4483
  if (!getGeometry)
4489
4484
  return;
4490
- if (subscribe) {
4485
+ if (subscribe &&
4486
+ typeof subscribeRef.current === 'undefined') {
4491
4487
  subscribeRef.current = setInterval(function () {
4492
- getGeometry('get-geometry', selection);
4488
+ getGeometry(performance.now().toString(), false);
4493
4489
  }, 500);
4494
4490
  }
4495
- else {
4491
+ else if (!subscribe &&
4492
+ typeof subscribeRef.current !== 'undefined') {
4496
4493
  clearInterval(subscribeRef.current);
4494
+ subscribeRef.current = undefined;
4495
+ }
4496
+ }, [getGeometry, subscribe]);
4497
+ // with the current way our selection mechanism works
4498
+ // you can't be both subscribing and in selection mode
4499
+ // asks the user to continually provide input
4500
+ useEffect(function () {
4501
+ if (selection) {
4502
+ if (subscribeRef.current) {
4503
+ clearInterval(subscribeRef.current);
4504
+ }
4505
+ setSubscribe(false);
4506
+ }
4507
+ }, [selection]);
4508
+ useEffect(function () {
4509
+ if (subscribe) {
4510
+ setSelection(false);
4497
4511
  }
4498
4512
  }, [subscribe]);
4499
4513
  return (React__default.createElement(SettingsButton, { onClick: function () {
4500
4514
  if (!getGeometry)
4501
4515
  return;
4502
- getGeometry('get-geometry', selection);
4516
+ getGeometry(performance.now().toString(), selection && !subscribe, true);
4503
4517
  }, disabled: typeof getGeometry === 'undefined', options: [[
4504
4518
  {
4505
4519
  type: 'checkbox',
@@ -4516,8 +4530,8 @@ var GetGeometry = function (_a) {
4516
4530
  checked: selection,
4517
4531
  disabled: !getGeometry,
4518
4532
  onSelect: function () { return setSelection(!selection); },
4519
- }
4520
- ]], label: 'Get Geometry' }));
4533
+ },
4534
+ ]], label: "Get Geometry" }));
4521
4535
  };
4522
4536
 
4523
4537
  var GetHbjson = function (_a) {
@@ -4527,35 +4541,57 @@ var GetHbjson = function (_a) {
4527
4541
  var subscribeRef = useRef();
4528
4542
  var _c = useState(false), selection = _c[0], setSelection = _c[1];
4529
4543
  // pollination-react-io hooks
4530
- var _d = useGetHbjson(), host = _d.host, hbjson = _d.hbjson, getHbjson = _d.getHbjson;
4544
+ var _d = useGetHbjson(); _d.host; var hbjson = _d.hbjson, getHbjson = _d.getHbjson;
4531
4545
  // initial retrieval of hbjson
4532
- useEffect(function () {
4533
- if (!getHbjson)
4534
- return;
4535
- getHbjson('get-hbjson', selection);
4536
- }, [host]);
4546
+ if (getHbjson)
4547
+ getHbjson('get-geometry');
4537
4548
  useEffect(function () {
4538
4549
  if (!hbjson || !setParentState)
4539
4550
  return;
4540
- setParentState(hbjson);
4541
- }, [hbjson]);
4551
+ var fr = new FileReader();
4552
+ fr.onload = function () {
4553
+ if (typeof this.result !== 'string')
4554
+ return;
4555
+ setParentState({ hbjson: JSON.parse(this.result) });
4556
+ };
4557
+ fr.readAsText(hbjson);
4558
+ }, [hbjson, setParentState]);
4542
4559
  // subscribe
4543
4560
  useEffect(function () {
4544
4561
  if (!getHbjson)
4545
4562
  return;
4546
- if (subscribe) {
4563
+ if (subscribe &&
4564
+ typeof subscribeRef.current === 'undefined') {
4547
4565
  subscribeRef.current = setInterval(function () {
4548
- getHbjson('get-hbjson', selection);
4566
+ getHbjson('get-hbjson', false);
4549
4567
  }, 500);
4550
4568
  }
4551
- else {
4569
+ else if (!subscribe &&
4570
+ typeof subscribeRef.current !== 'undefined') {
4552
4571
  clearInterval(subscribeRef.current);
4572
+ subscribeRef.current = undefined;
4573
+ }
4574
+ }, [getHbjson, subscribe]);
4575
+ // with the current way our selection mechanism works
4576
+ // you can't be both subscribing and in selection mode
4577
+ // asks the user to continually provide input
4578
+ useEffect(function () {
4579
+ if (selection) {
4580
+ if (subscribeRef.current) {
4581
+ clearInterval(subscribeRef.current);
4582
+ }
4583
+ setSubscribe(false);
4584
+ }
4585
+ }, [selection]);
4586
+ useEffect(function () {
4587
+ if (subscribe) {
4588
+ setSelection(false);
4553
4589
  }
4554
4590
  }, [subscribe]);
4555
4591
  return (React__default.createElement(SettingsButton, { onClick: function () {
4556
4592
  if (!getHbjson)
4557
4593
  return;
4558
- getHbjson('get-hbjson', false);
4594
+ getHbjson('get-hbjson', selection, true);
4559
4595
  }, disabled: typeof getHbjson === 'undefined', options: [[
4560
4596
  {
4561
4597
  type: 'checkbox',
@@ -4572,37 +4608,27 @@ var GetHbjson = function (_a) {
4572
4608
  checked: selection,
4573
4609
  disabled: !getHbjson,
4574
4610
  onSelect: function () { return setSelection(!selection); },
4575
- }
4576
- ]], label: 'Get Hbjson' }));
4611
+ },
4612
+ ]], label: "Get Hbjson" }));
4577
4613
  };
4578
4614
 
4579
4615
  var SendGeometry = function (_a) {
4580
4616
  var geometry = _a.geometry;
4581
- // subscribe
4582
- var _b = useState(false), subscribe = _b[0], setSubscribe = _b[1];
4583
- var subscribeRef = useRef();
4584
- var _c = useState(true), preview = _c[0], setPreview = _c[1];
4585
- var _d = useSendGeometry(); _d.host; _d.state; var sendGeometry = _d.sendGeometry;
4617
+ var _b = useState(true), preview = _b[0], setPreview = _b[1];
4618
+ var _c = useSendGeometry(); _c.host; _c.state; var sendGeometry = _c.sendGeometry;
4586
4619
  // subscribe
4587
4620
  useEffect(function () {
4588
4621
  if (!sendGeometry)
4589
4622
  return;
4590
- if (subscribe) {
4591
- subscribeRef.current = setInterval(function () {
4592
- sendGeometry({
4593
- data: geometry,
4594
- uniqueId: performance.now().toString(),
4595
- options: {
4596
- layer: 'StreamlitLayer',
4597
- units: 'Meters'
4598
- }
4599
- }, preview);
4600
- }, 500);
4601
- }
4602
- else {
4603
- clearInterval(subscribeRef.current);
4604
- }
4605
- }, [subscribe]);
4623
+ sendGeometry({
4624
+ data: geometry,
4625
+ uniqueId: performance.now().toString(),
4626
+ options: {
4627
+ layer: 'StreamlitLayer',
4628
+ units: 'Meters',
4629
+ },
4630
+ }, preview);
4631
+ }, [geometry, preview, sendGeometry]);
4606
4632
  return (React__default.createElement(SettingsButton, { disabled: !sendGeometry, onClick: function () {
4607
4633
  if (!sendGeometry)
4608
4634
  return;
@@ -4611,18 +4637,10 @@ var SendGeometry = function (_a) {
4611
4637
  uniqueId: performance.now().toString(),
4612
4638
  options: {
4613
4639
  layer: 'StreamlitLayer',
4614
- units: 'Meters'
4615
- }
4640
+ units: 'Meters',
4641
+ },
4616
4642
  }, preview);
4617
4643
  }, options: [[
4618
- {
4619
- type: 'checkbox',
4620
- id: 'subscribe-send-geometry',
4621
- label: 'Subscribe to Geometry',
4622
- checked: subscribe,
4623
- disabled: !sendGeometry,
4624
- onSelect: function () { return setSubscribe(!subscribe); },
4625
- },
4626
4644
  {
4627
4645
  type: 'checkbox',
4628
4646
  id: 'preview-send-geometry',
@@ -4630,37 +4648,27 @@ var SendGeometry = function (_a) {
4630
4648
  checked: preview,
4631
4649
  disabled: !sendGeometry,
4632
4650
  onSelect: function () { return setPreview(function (p) { return !p; }); },
4633
- }
4634
- ]], label: 'Send Geometry' }));
4651
+ },
4652
+ ]], label: "Send Geometry" }));
4635
4653
  };
4636
4654
 
4637
4655
  var SendHbjson = function (_a) {
4638
4656
  var hbjson = _a.hbjson;
4639
- // subscribe
4640
- var _b = useState(false), subscribe = _b[0], setSubscribe = _b[1];
4641
- var subscribeRef = useRef();
4642
- var _c = useState(true), preview = _c[0], setPreview = _c[1];
4643
- var _d = useSendHbjson(); _d.host; _d.state; var sendHbjson = _d.sendHbjson;
4644
- // subscribe
4657
+ var _b = useState(true), preview = _b[0], setPreview = _b[1];
4658
+ var _c = useSendHbjson(); _c.host; _c.state; var sendHbjson = _c.sendHbjson;
4659
+ // initial send, defaults to preview
4645
4660
  useEffect(function () {
4646
4661
  if (!sendHbjson)
4647
4662
  return;
4648
- if (subscribe) {
4649
- subscribeRef.current = setInterval(function () {
4650
- sendHbjson({
4651
- data: hbjson,
4652
- uniqueId: performance.now().toString(),
4653
- options: {
4654
- layer: 'StreamlitLayer',
4655
- units: 'Meters'
4656
- }
4657
- }, preview);
4658
- }, 500);
4659
- }
4660
- else {
4661
- clearInterval(subscribeRef.current);
4662
- }
4663
- }, [subscribe]);
4663
+ sendHbjson({
4664
+ data: hbjson,
4665
+ uniqueId: performance.now().toString(),
4666
+ options: {
4667
+ layer: 'StreamlitLayer',
4668
+ units: 'Meters',
4669
+ },
4670
+ }, preview);
4671
+ }, [hbjson, preview, sendHbjson]);
4664
4672
  return (React__default.createElement(SettingsButton, { disabled: !sendHbjson, onClick: function () {
4665
4673
  if (!sendHbjson)
4666
4674
  return;
@@ -4669,18 +4677,10 @@ var SendHbjson = function (_a) {
4669
4677
  uniqueId: performance.now().toString(),
4670
4678
  options: {
4671
4679
  layer: 'StreamlitLayer',
4672
- units: 'Meters'
4673
- }
4680
+ units: 'Meters',
4681
+ },
4674
4682
  }, preview);
4675
4683
  }, options: [[
4676
- {
4677
- type: 'checkbox',
4678
- id: 'subscribe-send-hbjson',
4679
- label: 'Subscribe to Hbjson',
4680
- checked: subscribe,
4681
- disabled: !sendHbjson,
4682
- onSelect: function () { return setSubscribe(!subscribe); },
4683
- },
4684
4684
  {
4685
4685
  type: 'checkbox',
4686
4686
  id: 'preview-send-hbjson',
@@ -4688,8 +4688,8 @@ var SendHbjson = function (_a) {
4688
4688
  checked: preview,
4689
4689
  disabled: !sendHbjson,
4690
4690
  onSelect: function () { return setPreview(function (p) { return !p; }); },
4691
- }
4692
- ]], label: 'Send Hbjson' }));
4691
+ },
4692
+ ]], label: "Send Hbjson" }));
4693
4693
  };
4694
4694
 
4695
4695
  export { GetGeometry, GetHbjson, SendGeometry, SendHbjson, checkDotNet, checkRuby, getHost, sendMessageDotNet, sendMessageRuby, subscribeDotNet, useGetGeometry, useGetHbjson, useHbjsontoVTK, useManageSettings, useRunCommand, useSendGeometry, useSendHbjson };