summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorteh_coderer <me@tehcoderer.com>2023-05-03 10:39:13 -0400
committerteh_coderer <me@tehcoderer.com>2023-05-03 10:39:13 -0400
commit1e18dd0b9b40850a5f53404b30db37b3b9f04e95 (patch)
tree134e701dc9ccbd344c643deadeda271c5df7eb28
parent5f5a75248dbd3a7b10960dc74640038a0f6e24c2 (diff)
updates
-rw-r--r--frontend-components/plotly/src/components/Chart.tsx15
-rw-r--r--frontend-components/plotly/src/components/PlotlyConfig.tsx1
-rw-r--r--frontend-components/plotly/src/components/ResizeHandler.tsx19
-rw-r--r--frontend-components/plotly/src/utils/utils.ts7
-rw-r--r--openbb_terminal/core/plots/plotly.html190
5 files changed, 124 insertions, 108 deletions
diff --git a/frontend-components/plotly/src/components/Chart.tsx b/frontend-components/plotly/src/components/Chart.tsx
index 9a2525d75fd..f52acff397c 100644
--- a/frontend-components/plotly/src/components/Chart.tsx
+++ b/frontend-components/plotly/src/components/Chart.tsx
@@ -14,6 +14,7 @@ import autoScaling from "./AutoScaling";
import { non_blocking, saveImage } from "../utils/utils";
import ResizeHandler from "./ResizeHandler";
import ChangeColor from "./ChangeColor";
+import clsx from "clsx";
const Plot = createPlotlyComponent(Plotly);
@@ -54,6 +55,7 @@ export default function Chart({
const [loading, setLoading] = useState(false);
const [plotDiv, setPlotDiv] = useState(null);
const [volumeBars, setVolumeBars] = useState({ old_nticks: {} });
+ const [maximizePlot, setMaximizePlot] = useState(false);
const [plotData, setPlotData] = useState(json);
const [annotations, setAnnotations] = useState([]);
@@ -338,7 +340,11 @@ export default function Chart({
}
window.addEventListener("resize", async function () {
- let update = await ResizeHandler({ plotData, volumeBars });
+ let update = await ResizeHandler({
+ plotData,
+ volumeBars,
+ setMaximizePlot,
+ });
let layout_update = update.layout_update;
let newPlotData = update.plotData;
let volume_update = update.volume_update;
@@ -445,7 +451,12 @@ export default function Chart({
</p>
)} */}
</div>
- <div className="w-full h-[calc(100%-50px)] sm:pb-12">
+ <div
+ className={clsx("w-full sm:pb-12", {
+ "h-[calc(100%-10px)]": maximizePlot,
+ "h-[calc(100%-50px)]": !maximizePlot,
+ })}
+ >
<Plot
onInitialized={() => {
if (!plotDiv) {
diff --git a/frontend-components/plotly/src/components/PlotlyConfig.tsx b/frontend-components/plotly/src/components/PlotlyConfig.tsx
index a42c13f62f8..60a04fcaeae 100644
--- a/frontend-components/plotly/src/components/PlotlyConfig.tsx
+++ b/frontend-components/plotly/src/components/PlotlyConfig.tsx
@@ -109,7 +109,6 @@ export function PlotConfig({
name: "Download CSV (Ctrl+Shift+S)",
icon: ICONS.downloadCsv,
click: async function (gd: any) {
- setModal({ name: "downloadCsv" });
await downloadCSV(gd);
},
},
diff --git a/frontend-components/plotly/src/components/ResizeHandler.tsx b/frontend-components/plotly/src/components/ResizeHandler.tsx
index 9262f6cf764..e2997905c1c 100644
--- a/frontend-components/plotly/src/components/ResizeHandler.tsx
+++ b/frontend-components/plotly/src/components/ResizeHandler.tsx
@@ -4,10 +4,12 @@ import { hideModebar } from "./PlotlyConfig";
export default async function ResizeHandler({
plotData,
- Volume,
+ volumeBars,
+ setMaximizePlot
}: {
plotData: Figure;
- Volume: any;
+ volumeBars: any;
+ setMaximizePlot: (value: boolean) => void;
}) {
// We hide the modebar and set the number of ticks to 5
const XAXIS = Object.keys(plotData.layout)
@@ -19,12 +21,12 @@ export default async function ResizeHandler({
);
let layout_update: any = {};
- let volume: any = Volume || { old_nticks: {} };
+ let volume: any = volumeBars || { old_nticks: {} };
const width = window.innerWidth;
const height = window.innerHeight;
let tick_size =
- height > 420 && width < 920 ? 9 : height > 420 && width < 500 ? 10 : 8;
+ height > 420 && width < 920 ? 8 : height > 420 && width < 500 ? 9 : 7;
if (width < 750) {
// We hide the modebar and set the number of ticks to 5
@@ -33,7 +35,7 @@ export default async function ResizeHandler({
if (trace.type == "bar") {
trace.opacity = 1;
trace.marker.line.width = 0.09;
- if (Volume.yaxis == undefined) {
+ if (volumeBars.yaxis == undefined) {
volume.yaxis = "yaxis" + trace.yaxis.replace("y", "");
layout_update[volume.yaxis + ".tickfont.size"] = tick_size;
volume.tickfont = plotData.layout[volume.yaxis].tickfont || {};
@@ -48,12 +50,15 @@ export default async function ResizeHandler({
volume.old_nticks[x] = plotData.layout[x].nticks || 10;
}
});
+ setMaximizePlot(true);
+
await hideModebar();
} else if (window.MODEBAR.style.cssText.includes("display: none")) {
// We show the modebar
await hideModebar(false);
+ setMaximizePlot(false);
- if (Volume.old_nticks != undefined) {
+ if (volumeBars.old_nticks != undefined) {
XAXIS.forEach((x) => {
if (volume.old_nticks[x] != undefined) {
layout_update[x + ".nticks"] = volume.old_nticks[x];
@@ -62,7 +67,7 @@ export default async function ResizeHandler({
});
}
- if (Volume.yaxis != undefined) {
+ if (volumeBars.yaxis != undefined) {
TRACES.forEach((trace) => {
if (trace.type == "bar") {
trace.opacity = 0.5;
diff --git a/frontend-components/plotly/src/utils/utils.ts b/frontend-components/plotly/src/utils/utils.ts
index ec2967ad880..56f195e8f87 100644
--- a/frontend-components/plotly/src/utils/utils.ts
+++ b/frontend-components/plotly/src/utils/utils.ts
@@ -144,7 +144,7 @@ export async function downloadCSV(gd: Figure) {
if (columns.length == 0) {
columns.push(xaxis);
}
- columns.push(trace.name);
+ columns.push(trace.name != undefined ? trace.name : yaxis);
trace.x.forEach(function (x, i) {
if (rows[i] == undefined) {
rows[i] = [x];
@@ -327,6 +327,7 @@ export async function downloadImage(
const filename = `${window.title}.png`;
try {
+ loading(true);
let fileHandle = await getNewFileHandle({
filename: filename,
is_image: true,
@@ -336,7 +337,6 @@ export async function downloadImage(
// @ts-ignore
extension = fileHandle.name.split(".").pop();
}
- loading(true);
await loadingOverlay(`Saving ${extension.toUpperCase()}`);
if (["svg", "pdf"].includes(extension)) {
@@ -351,12 +351,13 @@ export async function downloadImage(
saveToFile(blob, filename, fileHandle).then(async function () {
await loadingOverlay("", true);
hidemodebar(false);
+ loading(false);
});
});
}, 2)();
- loading(false);
} catch (error) {
console.error(error);
hidemodebar(false);
+ loading(false);
}
}
diff --git a/openbb_terminal/core/plots/plotly.html b/openbb_terminal/core/plots/plotly.html
index c54b1452874..3aec2d5a963 100644
--- a/openbb_terminal/core/plots/plotly.html
+++ b/openbb_terminal/core/plots/plotly.html
@@ -33,60 +33,60 @@
}
</script>
<script type="module" crossorigin>
-function qb(O,F){for(var J=0;J<F.length;J++){const fe=F[J];if(typeof fe!="string"&&!Array.isArray(fe)){for(const Pe in fe)if(Pe!=="default"&&!(Pe in O)){const D=Object.getOwnPropertyDescriptor(fe,Pe);D&&Object.defineProperty(O,Pe,D.get?D:{enumerable:!0,get:()=>fe[Pe]})}}}return Object.freeze(Object.defineProperty(O,Symbol.toStringTag,{value:"Module"}))}(function(){const F=document.createElement("link").relList;if(F&&F.supports&&F.supports("modulepreload"))return;for(const Pe of document.querySelectorAll('link[rel="modulepreload"]'))fe(Pe);new MutationObserver(Pe=>{for(const D of Pe)if(D.type==="childList")for(const E of D.addedNodes)E.tagName==="LINK"&&E.rel==="modulepreload"&&fe(E)}).observe(document,{childList:!0,subtree:!0});function J(Pe){const D={};return Pe.integrity&&(D.integrity=Pe.integrity),Pe.referrerPolicy&&(D.referrerPolicy=Pe.referrerPolicy),Pe.crossOrigin==="use-credentials"?D.credentials="include":Pe.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function fe(Pe){if(Pe.ep)return;Pe.ep=!0;const D=J(Pe);fetch(Pe.href,D)}})();function jp(O){return O&&O.__esModule&&Object.prototype.hasOwnProperty.call(O,"default")?O.default:O}var Gb={exports:{}},Up={};/*
+function qb(P,F){for(var J=0;J<F.length;J++){const fe=F[J];if(typeof fe!="string"&&!Array.isArray(fe)){for(const Pe in fe)if(Pe!=="default"&&!(Pe in P)){const D=Object.getOwnPropertyDescriptor(fe,Pe);D&&Object.defineProperty(P,Pe,D.get?D:{enumerable:!0,get:()=>fe[Pe]})}}}return Object.freeze(Object.defineProperty(P,Symbol.toStringTag,{value:"Module"}))}(function(){const F=document.createElement("link").relList;if(F&&F.supports&&F.supports("modulepreload"))return;for(const Pe of document.querySelectorAll('link[rel="modulepreload"]'))fe(Pe);new MutationObserver(Pe=>{for(const D of Pe)if(D.type==="childList")for(const E of D.addedNodes)E.tagName==="LINK"&&E.rel==="modulepreload"&&fe(E)}).observe(document,{childList:!0,subtree:!0});function J(Pe){const D={};return Pe.integrity&&(D.integrity=Pe.integrity),Pe.referrerPolicy&&(D.referrerPolicy=Pe.referrerPolicy),Pe.crossOrigin==="use-credentials"?D.credentials="include":Pe.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function fe(Pe){if(Pe.ep)return;Pe.ep=!0;const D=J(Pe);fetch(Pe.href,D)}})();function jp(P){return P&&P.__esModule&&Object.prototype.hasOwnProperty.call(P,"default")?P.default:P}var Gb={exports:{}},Up={};/*
object-assign
(c) Sindre Sorhus
@license MIT
-*/var Dx=Object.getOwnPropertySymbols,A4=Object.prototype.hasOwnProperty,M4=Object.prototype.propertyIsEnumerable;function S4(O){if(O==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(O)}function E4(){try{if(!Object.assign)return!1;var O=new String("abc");if(O[5]="de",Object.getOwnPropertyNames(O)[0]==="5")return!1;for(var F={},J=0;J<10;J++)F["_"+String.fromCharCode(J)]=J;var fe=Object.getOwnPropertyNames(F).map(function(D){return F[D]});if(fe.join("")!=="0123456789")return!1;var Pe={};return"abcdefghijklmnopqrst".split("").forEach(function(D){Pe[D]=D}),Object.keys(Object.assign({},Pe)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var Wb=E4()?Object.assign:function(O,F){for(var J,fe=S4(O),Pe,D=1;D<arguments.length;D++){J=Object(arguments[D]);for(var E in J)A4.call(J,E)&&(fe[E]=J[E]);if(Dx){Pe=Dx(J);for(var e=0;e<Pe.length;e++)M4.call(J,Pe[e])&&(fe[Pe[e]]=J[Pe[e]])}}return fe},Zb={exports:{}},zi={};/** @license React v17.0.2
+*/var Dx=Object.getOwnPropertySymbols,M4=Object.prototype.hasOwnProperty,S4=Object.prototype.propertyIsEnumerable;function E4(P){if(P==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(P)}function C4(){try{if(!Object.assign)return!1;var P=new String("abc");if(P[5]="de",Object.getOwnPropertyNames(P)[0]==="5")return!1;for(var F={},J=0;J<10;J++)F["_"+String.fromCharCode(J)]=J;var fe=Object.getOwnPropertyNames(F).map(function(D){return F[D]});if(fe.join("")!=="0123456789")return!1;var Pe={};return"abcdefghijklmnopqrst".split("").forEach(function(D){Pe[D]=D}),Object.keys(Object.assign({},Pe)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var Wb=C4()?Object.assign:function(P,F){for(var J,fe=E4(P),Pe,D=1;D<arguments.length;D++){J=Object(arguments[D]);for(var E in J)M4.call(J,E)&&(fe[E]=J[E]);if(Dx){Pe=Dx(J);for(var e=0;e<Pe.length;e++)S4.call(J,Pe[e])&&(fe[Pe[e]]=J[Pe[e]])}}return fe},Zb={exports:{}},zi={};/** @license React v17.0.2
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var Wv=Wb,lh=60103,Yb=60106;zi.Fragment=60107;zi.StrictMode=60108;zi.Profiler=60114;var Xb=60109,$b=60110,Jb=60112;zi.Suspense=60113;var Kb=60115,Qb=60116;if(typeof Symbol=="function"&&Symbol.for){var Dl=Symbol.for;lh=Dl("react.element"),Yb=Dl("react.portal"),zi.Fragment=Dl("react.fragment"),zi.StrictMode=Dl("react.strict_mode"),zi.Profiler=Dl("react.profiler"),Xb=Dl("react.provider"),$b=Dl("react.context"),Jb=Dl("react.forward_ref"),zi.Suspense=Dl("react.suspense"),Kb=Dl("react.memo"),Qb=Dl("react.lazy")}var Fx=typeof Symbol=="function"&&Symbol.iterator;function C4(O){return O===null||typeof O!="object"?null:(O=Fx&&O[Fx]||O["@@iterator"],typeof O=="function"?O:null)}function Vp(O){for(var F="https://reactjs.org/docs/error-decoder.html?invariant="+O,J=1;J<arguments.length;J++)F+="&args[]="+encodeURIComponent(arguments[J]);return"Minified React error #"+O+"; visit "+F+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var e_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},t_={};function uh(O,F,J){this.props=O,this.context=F,this.refs=t_,this.updater=J||e_}uh.prototype.isReactComponent={};uh.prototype.setState=function(O,F){if(typeof O!="object"&&typeof O!="function"&&O!=null)throw Error(Vp(85));this.updater.enqueueSetState(this,O,F,"setState")};uh.prototype.forceUpdate=function(O){this.updater.enqueueForceUpdate(this,O,"forceUpdate")};function n_(){}n_.prototype=uh.prototype;function Zv(O,F,J){this.props=O,this.context=F,this.refs=t_,this.updater=J||e_}var Yv=Zv.prototype=new n_;Yv.constructor=Zv;Wv(Yv,uh.prototype);Yv.isPureReactComponent=!0;var Xv={current:null},r_=Object.prototype.hasOwnProperty,i_={key:!0,ref:!0,__self:!0,__source:!0};function a_(O,F,J){var fe,Pe={},D=null,E=null;if(F!=null)for(fe in F.ref!==void 0&&(E=F.ref),F.key!==void 0&&(D=""+F.key),F)r_.call(F,fe)&&!i_.hasOwnProperty(fe)&&(Pe[fe]=F[fe]);var e=arguments.length-2;if(e===1)Pe.children=J;else if(1<e){for(var _=Array(e),w=0;w<e;w++)_[w]=arguments[w+2];Pe.children=_}if(O&&O.defaultProps)for(fe in e=O.defaultProps,e)Pe[fe]===void 0&&(Pe[fe]=e[fe]);return{$$typeof:lh,type:O,key:D,ref:E,props:Pe,_owner:Xv.current}}function L4(O,F){return{$$typeof:lh,type:O.type,key:F,ref:O.ref,props:O.props,_owner:O._owner}}function $v(O){return typeof O=="object"&&O!==null&&O.$$typeof===lh}function P4(O){var F={"=":"=0",":":"=2"};return"$"+O.replace(/[=:]/g,function(J){return F[J]})}var Bx=/\/+/g;function Q1(O,F){return typeof O=="object"&&O!==null&&O.key!=null?P4(""+O.key):F.toString(36)}function n0(O,F,J,fe,Pe){var D=typeof O;(D==="undefined"||D==="boolean")&&(O=null);var E=!1;if(O===null)E=!0;else switch(D){case"string":case"number":E=!0;break;case"object":switch(O.$$typeof){case lh:case Yb:E=!0}}if(E)return E=O,Pe=Pe(E),O=fe===""?"."+Q1(E,0):fe,Array.isArray(Pe)?(J="",O!=null&&(J=O.replace(Bx,"$&/")+"/"),n0(Pe,F,J,"",function(w){return w})):Pe!=null&&($v(Pe)&&(Pe=L4(Pe,J+(!Pe.key||E&&E.key===Pe.key?"":(""+Pe.key).replace(Bx,"$&/")+"/")+O)),F.push(Pe)),1;if(E=0,fe=fe===""?".":fe+":",Array.isArray(O))for(var e=0;e<O.length;e++){D=O[e];var _=fe+Q1(D,e);E+=n0(D,F,J,_,Pe)}else if(_=C4(O),typeof _=="function")for(O=_.call(O),e=0;!(D=O.next()).done;)D=D.value,_=fe+Q1(D,e++),E+=n0(D,F,J,_,Pe);else if(D==="object")throw F=""+O,Error(Vp(31,F==="[object Object]"?"object with keys {"+Object.keys(O).join(", ")+"}":F));return E}function Rd(O,F,J){if(O==null)return O;var fe=[],Pe=0;return n0(O,fe,"","",function(D){return F.call(J,D,Pe++)}),fe}function O4(O){if(O._status===-1){var F=O._result;F=F(),O._status=0,O._result=F,F.then(function(J){O._status===0&&(J=J.default,O._status=1,O._result=J)},function(J){O._status===0&&(O._status=2,O._result=J)})}if(O._status===1)return O._result;throw O._result}var o_={current:null};function Nu(){var O=o_.current;if(O===null)throw Error(Vp(321));return O}var I4={ReactCurrentDispatcher:o_,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:Xv,IsSomeRendererActing:{current:!1},assign:Wv};zi.Children={map:Rd,forEach:function(O,F,J){Rd(O,function(){F.apply(this,arguments)},J)},count:function(O){var F=0;return Rd(O,function(){F++}),F},toArray:function(O){return Rd(O,function(F){return F})||[]},only:function(O){if(!$v(O))throw Error(Vp(143));return O}};zi.Component=uh;zi.PureComponent=Zv;zi.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I4;zi.cloneElement=function(O,F,J){if(O==null)throw Error(Vp(267,O));var fe=Wv({},O.props),Pe=O.key,D=O.ref,E=O._owner;if(F!=null){if(F.ref!==void 0&&(D=F.ref,E=Xv.current),F.key!==void 0&&(Pe=""+F.key),O.type&&O.type.defaultProps)var e=O.type.defaultProps;for(_ in F)r_.call(F,_)&&!i_.hasOwnProperty(_)&&(fe[_]=F[_]===void 0&&e!==void 0?e[_]:F[_])}var _=arguments.length-2;if(_===1)fe.children=J;else if(1<_){e=Array(_);for(var w=0;w<_;w++)e[w]=arguments[w+2];fe.children=e}return{$$typeof:lh,type:O.type,key:Pe,ref:D,props:fe,_owner:E}};zi.createContext=function(O,F){return F===void 0&&(F=null),O={$$typeof:$b,_calculateChangedBits:F,_currentValue:O,_currentValue2:O,_threadCount:0,Provider:null,Consumer:null},O.Provider={$$typeof:Xb,_context:O},O.Consumer=O};zi.createElement=a_;zi.createFactory=function(O){var F=a_.bind(null,O);return F.type=O,F};zi.createRef=function(){return{current:null}};zi.forwardRef=function(O){return{$$typeof:Jb,render:O}};zi.isValidElement=$v;zi.lazy=function(O){return{$$typeof:Qb,_payload:{_status:-1,_result:O},_init:O4}};zi.memo=function(O,F){return{$$typeof:Kb,type:O,compare:F===void 0?null:F}};zi.useCallback=function(O,F){return Nu().useCallback(O,F)};zi.useContext=function(O,F){return Nu().useContext(O,F)};zi.useDebugValue=function(){};zi.useEffect=function(O,F){return Nu().useEffect(O,F)};zi.useImperativeHandle=function(O,F,J){return Nu().useImperativeHandle(O,F,J)};zi.useLayoutEffect=function(O,F){return Nu().useLayoutEffect(O,F)};zi.useMemo=function(O,F){return Nu().useMemo(O,F)};zi.useReducer=function(O,F,J){return Nu().useReducer(O,F,J)};zi.useRef=function(O){return Nu().useRef(O)};zi.useState=function(O){return Nu().useState(O)};zi.version="17.0.2";Zb.exports=zi;var Un=Zb.exports;const s_=jp(Un),R4=qb({__proto__:null,default:s_},[Un]);/** @license React v17.0.2
+ */var Wv=Wb,lh=60103,Yb=60106;zi.Fragment=60107;zi.StrictMode=60108;zi.Profiler=60114;var Xb=60109,$b=60110,Jb=60112;zi.Suspense=60113;var Kb=60115,Qb=60116;if(typeof Symbol=="function"&&Symbol.for){var Dl=Symbol.for;lh=Dl("react.element"),Yb=Dl("react.portal"),zi.Fragment=Dl("react.fragment"),zi.StrictMode=Dl("react.strict_mode"),zi.Profiler=Dl("react.profiler"),Xb=Dl("react.provider"),$b=Dl("react.context"),Jb=Dl("react.forward_ref"),zi.Suspense=Dl("react.suspense"),Kb=Dl("react.memo"),Qb=Dl("react.lazy")}var Fx=typeof Symbol=="function"&&Symbol.iterator;function L4(P){return P===null||typeof P!="object"?null:(P=Fx&&P[Fx]||P["@@iterator"],typeof P=="function"?P:null)}function Vp(P){for(var F="https://reactjs.org/docs/error-decoder.html?invariant="+P,J=1;J<arguments.length;J++)F+="&args[]="+encodeURIComponent(arguments[J]);return"Minified React error #"+P+"; visit "+F+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var e_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},t_={};function uh(P,F,J){this.props=P,this.context=F,this.refs=t_,this.updater=J||e_}uh.prototype.isReactComponent={};uh.prototype.setState=function(P,F){if(typeof P!="object"&&typeof P!="function"&&P!=null)throw Error(Vp(85));this.updater.enqueueSetState(this,P,F,"setState")};uh.prototype.forceUpdate=function(P){this.updater.enqueueForceUpdate(this,P,"forceUpdate")};function n_(){}n_.prototype=uh.prototype;function Zv(P,F,J){this.props=P,this.context=F,this.refs=t_,this.updater=J||e_}var Yv=Zv.prototype=new n_;Yv.constructor=Zv;Wv(Yv,uh.prototype);Yv.isPureReactComponent=!0;var Xv={current:null},r_=Object.prototype.hasOwnProperty,i_={key:!0,ref:!0,__self:!0,__source:!0};function a_(P,F,J){var fe,Pe={},D=null,E=null;if(F!=null)for(fe in F.ref!==void 0&&(E=F.ref),F.key!==void 0&&(D=""+F.key),F)r_.call(F,fe)&&!i_.hasOwnProperty(fe)&&(Pe[fe]=F[fe]);var e=arguments.length-2;if(e===1)Pe.children=J;else if(1<e){for(var _=Array(e),T=0;T<e;T++)_[T]=arguments[T+2];Pe.children=_}if(P&&P.defaultProps)for(fe in e=P.defaultProps,e)Pe[fe]===void 0&&(Pe[fe]=e[fe]);return{$$typeof:lh,type:P,key:D,ref:E,props:Pe,_owner:Xv.current}}function P4(P,F){return{$$typeof:lh,type:P.type,key:F,ref:P.ref,props:P.props,_owner:P._owner}}function $v(P){return typeof P=="object"&&P!==null&&P.$$typeof===lh}function O4(P){var F={"=":"=0",":":"=2"};return"$"+P.replace(/[=:]/g,function(J){return F[J]})}var Bx=/\/+/g;function Q1(P,F){return typeof P=="object"&&P!==null&&P.key!=null?O4(""+P.key):F.toString(36)}function n0(P,F,J,fe,Pe){var D=typeof P;(D==="undefined"||D==="boolean")&&(P=null);var E=!1;if(P===null)E=!0;else switch(D){case"string":case"number":E=!0;break;case"object":switch(P.$$typeof){case lh:case Yb:E=!0}}if(E)return E=P,Pe=Pe(E),P=fe===""?"."+Q1(E,0):fe,Array.isArray(Pe)?(J="",P!=null&&(J=P.replace(Bx,"$&/")+"/"),n0(Pe,F,J,"",function(T){return T})):Pe!=null&&($v(Pe)&&(Pe=P4(Pe,J+(!Pe.key||E&&E.key===Pe.key?"":(""+Pe.key).replace(Bx,"$&/")+"/")+P)),F.push(Pe)),1;if(E=0,fe=fe===""?".":fe+":",Array.isArray(P))for(var e=0;e<P.length;e++){D=P[e];var _=fe+Q1(D,e);E+=n0(D,F,J,_,Pe)}else if(_=L4(P),typeof _=="function")for(P=_.call(P),e=0;!(D=P.next()).done;)D=D.value,_=fe+Q1(D,e++),E+=n0(D,F,J,_,Pe);else if(D==="object")throw F=""+P,Error(Vp(31,F==="[object Object]"?"object with keys {"+Object.keys(P).join(", ")+"}":F));return E}function Rd(P,F,J){if(P==null)return P;var fe=[],Pe=0;return n0(P,fe,"","",function(D){return F.call(J,D,Pe++)}),fe}function I4(P){if(P._status===-1){var F=P._result;F=F(),P._status=0,P._result=F,F.then(function(J){P._status===0&&(J=J.default,P._status=1,P._result=J)},function(J){P._status===0&&(P._status=2,P._result=J)})}if(P._status===1)return P._result;throw P._result}var o_={current:null};function Nu(){var P=o_.current;if(P===null)throw Error(Vp(321));return P}var R4={ReactCurrentDispatcher:o_,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:Xv,IsSomeRendererActing:{current:!1},assign:Wv};zi.Children={map:Rd,forEach:function(P,F,J){Rd(P,function(){F.apply(this,arguments)},J)},count:function(P){var F=0;return Rd(P,function(){F++}),F},toArray:function(P){return Rd(P,function(F){return F})||[]},only:function(P){if(!$v(P))throw Error(Vp(143));return P}};zi.Component=uh;zi.PureComponent=Zv;zi.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R4;zi.cloneElement=function(P,F,J){if(P==null)throw Error(Vp(267,P));var fe=Wv({},P.props),Pe=P.key,D=P.ref,E=P._owner;if(F!=null){if(F.ref!==void 0&&(D=F.ref,E=Xv.current),F.key!==void 0&&(Pe=""+F.key),P.type&&P.type.defaultProps)var e=P.type.defaultProps;for(_ in F)r_.call(F,_)&&!i_.hasOwnProperty(_)&&(fe[_]=F[_]===void 0&&e!==void 0?e[_]:F[_])}var _=arguments.length-2;if(_===1)fe.children=J;else if(1<_){e=Array(_);for(var T=0;T<_;T++)e[T]=arguments[T+2];fe.children=e}return{$$typeof:lh,type:P.type,key:Pe,ref:D,props:fe,_owner:E}};zi.createContext=function(P,F){return F===void 0&&(F=null),P={$$typeof:$b,_calculateChangedBits:F,_currentValue:P,_currentValue2:P,_threadCount:0,Provider:null,Consumer:null},P.Provider={$$typeof:Xb,_context:P},P.Consumer=P};zi.createElement=a_;zi.createFactory=function(P){var F=a_.bind(null,P);return F.type=P,F};zi.createRef=function(){return{current:null}};zi.forwardRef=function(P){return{$$typeof:Jb,render:P}};zi.isValidElement=$v;zi.lazy=function(P){return{$$typeof:Qb,_payload:{_status:-1,_result:P},_init:I4}};zi.memo=function(P,F){return{$$typeof:Kb,type:P,compare:F===void 0?null:F}};zi.useCallback=function(P,F){return Nu().useCallback(P,F)};zi.useContext=function(P,F){return Nu().useContext(P,F)};zi.useDebugValue=function(){};zi.useEffect=function(P,F){return Nu().useEffect(P,F)};zi.useImperativeHandle=function(P,F,J){return Nu().useImperativeHandle(P,F,J)};zi.useLayoutEffect=function(P,F){return Nu().useLayoutEffect(P,F)};zi.useMemo=function(P,F){return Nu().useMemo(P,F)};zi.useReducer=function(P,F,J){return Nu().useReducer(P,F,J)};zi.useRef=function(P){return Nu().useRef(P)};zi.useState=function(P){return Nu().useState(P)};zi.version="17.0.2";Zb.exports=zi;var Un=Zb.exports;const s_=jp(Un),z4=qb({__proto__:null,default:s_},[Un]);/** @license React v17.0.2
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var z4=Un,l_=60103;Up.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var Nx=Symbol.for;l_=Nx("react.element"),Up.Fragment=Nx("react.fragment")}var D4=z4.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,F4=Object.prototype.hasOwnProperty,B4={key:!0,ref:!0,__self:!0,__source:!0};function u_(O,F,J){var fe,Pe={},D=null,E=null;J!==void 0&&(D=""+J),F.key!==void 0&&(D=""+F.key),F.ref!==void 0&&(E=F.ref);for(fe in F)F4.call(F,fe)&&!B4.hasOwnProperty(fe)&&(Pe[fe]=F[fe]);if(O&&O.defaultProps)for(fe in F=O.defaultProps,F)Pe[fe]===void 0&&(Pe[fe]=F[fe]);return{$$typeof:l_,type:O,key:D,ref:E,props:Pe,_owner:D4.current}}Up.jsx=u_;Up.jsxs=u_;Gb.exports=Up;var Jv=Gb.exports;const eg=Jv.Fragment,Ar=Jv.jsx,ti=Jv.jsxs;var c_={exports:{}},ml={},f_={exports:{}},h_={};/** @license React v0.20.2
+ */var D4=Un,l_=60103;Up.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var Nx=Symbol.for;l_=Nx("react.element"),Up.Fragment=Nx("react.fragment")}var F4=D4.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,B4=Object.prototype.hasOwnProperty,N4={key:!0,ref:!0,__self:!0,__source:!0};function u_(P,F,J){var fe,Pe={},D=null,E=null;J!==void 0&&(D=""+J),F.key!==void 0&&(D=""+F.key),F.ref!==void 0&&(E=F.ref);for(fe in F)B4.call(F,fe)&&!N4.hasOwnProperty(fe)&&(Pe[fe]=F[fe]);if(P&&P.defaultProps)for(fe in F=P.defaultProps,F)Pe[fe]===void 0&&(Pe[fe]=F[fe]);return{$$typeof:l_,type:P,key:D,ref:E,props:Pe,_owner:F4.current}}Up.jsx=u_;Up.jsxs=u_;Gb.exports=Up;var Jv=Gb.exports;const eg=Jv.Fragment,Ar=Jv.jsx,ti=Jv.jsxs;var c_={exports:{}},ml={},f_={exports:{}},h_={};/** @license React v0.20.2
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */(function(O){var F,J,fe,Pe;if(typeof performance=="object"&&typeof performance.now=="function"){var D=performance;O.unstable_now=function(){return D.now()}}else{var E=Date,e=E.now();O.unstable_now=function(){return E.now()-e}}if(typeof window>"u"||typeof MessageChannel!="function"){var _=null,w=null,s=function(){if(_!==null)try{var I=O.unstable_now();_(!0,I),_=null}catch(R){throw setTimeout(s,0),R}};F=function(I){_!==null?setTimeout(F,0,I):(_=I,setTimeout(s,0))},J=function(I,R){w=setTimeout(I,R)},fe=function(){clearTimeout(w)},O.unstable_shouldYield=function(){return!1},Pe=O.unstable_forceFrameRate=function(){}}else{var T=window.setTimeout,m=window.clearTimeout;if(typeof console<"u"){var f=window.cancelAnimationFrame;typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof f!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var l=!1,t=null,a=-1,r=5,n=0;O.unstable_shouldYield=function(){return O.unstable_now()>=n},Pe=function(){},O.unstable_forceFrameRate=function(I){0>I||125<I?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):r=0<I?Math.floor(1e3/I):5};var o=new MessageChannel,i=o.port2;o.port1.onmessage=function(){if(t!==null){var I=O.unstable_now();n=I+r;try{t(!0,I)?i.postMessage(null):(l=!1,t=null)}catch(R){throw i.postMessage(null),R}}else l=!1},F=function(I){t=I,l||(l=!0,i.postMessage(null))},J=function(I,R){a=T(function(){I(O.unstable_now())},R)},fe=function(){m(a),a=-1}}function u(I,R){var U=I.length;I.push(R);e:for(;;){var B=U-1>>>1,G=I[B];if(G!==void 0&&0<b(G,R))I[B]=R,I[U]=G,U=B;else break e}}function p(I){return I=I[0],I===void 0?null:I}function c(I){var R=I[0];if(R!==void 0){var U=I.pop();if(U!==R){I[0]=U;e:for(var B=0,G=I.length;B<G;){var N=2*(B+1)-1,j=I[N],V=N+1,H=I[V];if(j!==void 0&&0>b(j,U))H!==void 0&&0>b(H,j)?(I[B]=H,I[V]=U,B=V):(I[B]=j,I[N]=U,B=N);else if(H!==void 0&&0>b(H,U))I[B]=H,I[V]=U,B=V;else break e}}return R}return null}function b(I,R){var U=I.sortIndex-R.sortIndex;return U!==0?U:I.id-R.id}var d=[],v=[],x=1,g=null,y=3,k=!1,h=!1,M=!1;function A(I){for(var R=p(v);R!==null;){if(R.callback===null)c(v);else if(R.startTime<=I)c(v),R.sortIndex=R.expirationTime,u(d,R);else break;R=p(v)}}function C(I){if(M=!1,A(I),!h)if(p(d)!==null)h=!0,F(L);else{var R=p(v);R!==null&&J(C,R.startTime-I)}}function L(I,R){h=!1,M&&(M=!1,fe()),k=!0;var U=y;try{for(A(R),g=p(d);g!==null&&(!(g.expirationTime>R)||I&&!O.unstable_shouldYield());){var B=g.callback;if(typeof B=="function"){g.callback=null,y=g.priorityLevel;var G=B(g.expirationTime<=R);R=O.unstable_now(),typeof G=="function"?g.callback=G:g===p(d)&&c(d),A(R)}else c(d);g=p(d)}if(g!==null)var N=!0;else{var j=p(v);j!==null&&J(C,j.startTime-R),N=!1}return N}finally{g=null,y=U,k=!1}}var P=Pe;O.unstable_IdlePriority=5,O.unstable_ImmediatePriority=1,O.unstable_LowPriority=4,O.unstable_NormalPriority=3,O.unstable_Profiling=null,O.unstable_UserBlockingPriority=2,O.unstable_cancelCallback=function(I){I.callback=null},O.unstable_continueExecution=function(){h||k||(h=!0,F(L))},O.unstable_getCurrentPriorityLevel=function(){return y},O.unstable_getFirstCallbackNode=function(){return p(d)},O.unstable_next=function(I){switch(y){case 1:case 2:case 3:var R=3;break;default:R=y}var U=y;y=R;try{return I()}finally{y=U}},O.unstable_pauseExecution=function(){},O.unstable_requestPaint=P,O.unstable_runWithPriority=function(I,R){switch(I){case 1:case 2:case 3:case 4:case 5:break;default:I=3}var U=y;y=I;try{return R()}finally{y=U}},O.unstable_scheduleCallback=function(I,R,U){var B=O.unstable_now();switch(typeof U=="object"&&U!==null?(U=U.delay,U=typeof U=="number"&&0<U?B+U:B):U=B,I){case 1:var G=-1;break;case 2:G=250;break;case 5:G=1073741823;break;case 4:G=1e4;break;default:G=5e3}return G=U+G,I={id:x++,callback:R,priorityLevel:I,startTime:U,expirationTime:G,sortIndex:-1},U>B?(I.sortIndex=U,u(v,I),p(d)===null&&I===p(v)&&(M?fe():M=!0,J(C,U-B))):(I.sortIndex=G,u(d,I),h||k||(h=!0,F(L))),I},O.unstable_wrapCallback=function(I){var R=y;return function(){var U=y;y=R;try{return I.apply(this,arguments)}finally{y=U}}}})(h_);f_.exports=h_;var N4=f_.exports;/** @license React v17.0.2
+ */(function(P){var F,J,fe,Pe;if(typeof performance=="object"&&typeof performance.now=="function"){var D=performance;P.unstable_now=function(){return D.now()}}else{var E=Date,e=E.now();P.unstable_now=function(){return E.now()-e}}if(typeof window>"u"||typeof MessageChannel!="function"){var _=null,T=null,s=function(){if(_!==null)try{var I=P.unstable_now();_(!0,I),_=null}catch(R){throw setTimeout(s,0),R}};F=function(I){_!==null?setTimeout(F,0,I):(_=I,setTimeout(s,0))},J=function(I,R){T=setTimeout(I,R)},fe=function(){clearTimeout(T)},P.unstable_shouldYield=function(){return!1},Pe=P.unstable_forceFrameRate=function(){}}else{var w=window.setTimeout,m=window.clearTimeout;if(typeof console<"u"){var f=window.cancelAnimationFrame;typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof f!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var l=!1,t=null,a=-1,r=5,n=0;P.unstable_shouldYield=function(){return P.unstable_now()>=n},Pe=function(){},P.unstable_forceFrameRate=function(I){0>I||125<I?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):r=0<I?Math.floor(1e3/I):5};var o=new MessageChannel,i=o.port2;o.port1.onmessage=function(){if(t!==null){var I=P.unstable_now();n=I+r;try{t(!0,I)?i.postMessage(null):(l=!1,t=null)}catch(R){throw i.postMessage(null),R}}else l=!1},F=function(I){t=I,l||(l=!0,i.postMessage(null))},J=function(I,R){a=w(function(){I(P.unstable_now())},R)},fe=function(){m(a),a=-1}}function u(I,R){var U=I.length;I.push(R);e:for(;;){var B=U-1>>>1,G=I[B];if(G!==void 0&&0<b(G,R))I[B]=R,I[U]=G,U=B;else break e}}function p(I){return I=I[0],I===void 0?null:I}function c(I){var R=I[0];if(R!==void 0){var U=I.pop();if(U!==R){I[0]=U;e:for(var B=0,G=I.length;B<G;){var N=2*(B+1)-1,j=I[N],V=N+1,H=I[V];if(j!==void 0&&0>b(j,U))H!==void 0&&0>b(H,j)?(I[B]=H,I[V]=U,B=V):(I[B]=j,I[N]=U,B=N);else if(H!==void 0&&0>b(H,U))I[B]=H,I[V]=U,B=V;else break e}}return R}return null}function b(I,R){var U=I.sortIndex-R.sortIndex;return U!==0?U:I.id-R.id}var d=[],v=[],x=1,g=null,y=3,k=!1,h=!1,M=!1;function A(I){for(var R=p(v);R!==null;){if(R.callback===null)c(v);else if(R.startTime<=I)c(v),R.sortIndex=R.expirationTime,u(d,R);else break;R=p(v)}}function C(I){if(M=!1,A(I),!h)if(p(d)!==null)h=!0,F(L);else{var R=p(v);R!==null&&J(C,R.startTime-I)}}function L(I,R){h=!1,M&&(M=!1,fe()),k=!0;var U=y;try{for(A(R),g=p(d);g!==null&&(!(g.expirationTime>R)||I&&!P.unstable_shouldYield());){var B=g.callback;if(typeof B=="function"){g.callback=null,y=g.priorityLevel;var G=B(g.expirationTime<=R);R=P.unstable_now(),typeof G=="function"?g.callback=G:g===p(d)&&c(d),A(R)}else c(d);g=p(d)}if(g!==null)var N=!0;else{var j=p(v);j!==null&&J(C,j.startTime-R),N=!1}return N}finally{g=null,y=U,k=!1}}var O=Pe;P.unstable_IdlePriority=5,P.unstable_ImmediatePriority=1,P.unstable_LowPriority=4,P.unstable_NormalPriority=3,P.unstable_Profiling=null,P.unstable_UserBlockingPriority=2,P.unstable_cancelCallback=function(I){I.callback=null},P.unstable_continueExecution=function(){h||k||(h=!0,F(L))},P.unstable_getCurrentPriorityLevel=function(){return y},P.unstable_getFirstCallbackNode=function(){return p(d)},P.unstable_next=function(I){switch(y){case 1:case 2:case 3:var R=3;break;default:R=y}var U=y;y=R;try{return I()}finally{y=U}},P.unstable_pauseExecution=function(){},P.unstable_requestPaint=O,P.unstable_runWithPriority=function(I,R){switch(I){case 1:case 2:case 3:case 4:case 5:break;default:I=3}var U=y;y=I;try{return R()}finally{y=U}},P.unstable_scheduleCallback=function(I,R,U){var B=P.unstable_now();switch(typeof U=="object"&&U!==null?(U=U.delay,U=typeof U=="number"&&0<U?B+U:B):U=B,I){case 1:var G=-1;break;case 2:G=250;break;case 5:G=1073741823;break;case 4:G=1e4;break;default:G=5e3}return G=U+G,I={id:x++,callback:R,priorityLevel:I,startTime:U,expirationTime:G,sortIndex:-1},U>B?(I.sortIndex=U,u(v,I),p(d)===null&&I===p(v)&&(M?fe():M=!0,J(C,U-B))):(I.sortIndex=G,u(d,I),h||k||(h=!0,F(L))),I},P.unstable_wrapCallback=function(I){var R=y;return function(){var U=y;y=R;try{return I.apply(this,arguments)}finally{y=U}}}})(h_);f_.exports=h_;var j4=f_.exports;/** @license React v17.0.2
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var Y0=Un,da=Wb,xo=N4;function Dr(O){for(var F="https://reactjs.org/docs/error-decoder.html?invariant="+O,J=1;J<arguments.length;J++)F+="&args[]="+encodeURIComponent(arguments[J]);return"Minified React error #"+O+"; visit "+F+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!Y0)throw Error(Dr(227));var p_=new Set,wp={};function cf(O,F){rh(O,F),rh(O+"Capture",F)}function rh(O,F){for(wp[O]=F,O=0;O<F.length;O++)p_.add(F[O])}var Bu=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),j4=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,jx=Object.prototype.hasOwnProperty,Ux={},Vx={};function U4(O){return jx.call(Vx,O)?!0:jx.call(Ux,O)?!1:j4.test(O)?Vx[O]=!0:(Ux[O]=!0,!1)}function V4(O,F,J,fe){if(J!==null&&J.type===0)return!1;switch(typeof F){case"function":case"symbol":return!0;case"boolean":return fe?!1:J!==null?!J.acceptsBooleans:(O=O.toLowerCase().slice(0,5),O!=="data-"&&O!=="aria-");default:return!1}}function H4(O,F,J,fe){if(F===null||typeof F>"u"||V4(O,F,J,fe))return!0;if(fe)return!1;if(J!==null)switch(J.type){case 3:return!F;case 4:return F===!1;case 5:return isNaN(F);case 6:return isNaN(F)||1>F}return!1}function cs(O,F,J,fe,Pe,D,E){this.acceptsBooleans=F===2||F===3||F===4,this.attributeName=fe,this.attributeNamespace=Pe,this.mustUseProperty=J,this.propertyName=O,this.type=F,this.sanitizeURL=D,this.removeEmptyString=E}var Oo={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(O){Oo[O]=new cs(O,0,!1,O,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(O){var F=O[0];Oo[F]=new cs(F,1,!1,O[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(O){Oo[O]=new cs(O,2,!1,O.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(O){Oo[O]=new cs(O,2,!1,O,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(O){Oo[O]=new cs(O,3,!1,O.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(O){Oo[O]=new cs(O,3,!0,O,null,!1,!1)});["capture","download"].forEach(function(O){Oo[O]=new cs(O,4,!1,O,null,!1,!1)});["cols","rows","size","span"].forEach(function(O){Oo[O]=new cs(O,6,!1,O,null,!1,!1)});["rowSpan","start"].forEach(function(O){Oo[O]=new cs(O,5,!1,O.toLowerCase(),null,!1,!1)});var Kv=/[\-:]([a-z])/g;function Qv(O){return O[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity str