From 7c90fac6c8289167c9bd0e8f48e0588409dc8b30 Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 10 Sep 2021 11:46:06 -0700 Subject: [PATCH 01/29] VIS directory setup as discussed in https://docs.google.com/document/d/1NU5VOPzlyrmRNZMmnSHfMuZ0sD71vVKdV4sHJ44QtxM/edit\# --- hatchet/vis/__init__.py | 0 hatchet/vis/external/roundtrip/roundtrip.py | 0 hatchet/vis/loader.py | 0 hatchet/vis/notebooks/boxplot.ipynb | 0 hatchet/vis/notebooks/cct.ipynb | 0 hatchet/vis/package.json | 25 +++++++++++++++++++++ hatchet/vis/requirements.txt | 0 hatchet/vis/scripts/boxplot.js | 0 hatchet/vis/scripts/utils/color.js | 0 hatchet/vis/scripts/utils/d3.js | 0 hatchet/vis/styles/boxplot.css | 0 hatchet/vis/styles/cct.css | 0 hatchet/vis/templates/boxplot.html | 0 hatchet/vis/templates/cct.html | 0 hatchet/vis/webpack.config.js | 0 15 files changed, 25 insertions(+) create mode 100644 hatchet/vis/__init__.py create mode 100644 hatchet/vis/external/roundtrip/roundtrip.py create mode 100644 hatchet/vis/loader.py create mode 100644 hatchet/vis/notebooks/boxplot.ipynb create mode 100644 hatchet/vis/notebooks/cct.ipynb create mode 100644 hatchet/vis/package.json create mode 100644 hatchet/vis/requirements.txt create mode 100644 hatchet/vis/scripts/boxplot.js create mode 100644 hatchet/vis/scripts/utils/color.js create mode 100644 hatchet/vis/scripts/utils/d3.js create mode 100644 hatchet/vis/styles/boxplot.css create mode 100644 hatchet/vis/styles/cct.css create mode 100644 hatchet/vis/templates/boxplot.html create mode 100644 hatchet/vis/templates/cct.html create mode 100644 hatchet/vis/webpack.config.js diff --git a/hatchet/vis/__init__.py b/hatchet/vis/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/external/roundtrip/roundtrip.py b/hatchet/vis/external/roundtrip/roundtrip.py new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/loader.py b/hatchet/vis/loader.py new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/notebooks/boxplot.ipynb b/hatchet/vis/notebooks/boxplot.ipynb new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/notebooks/cct.ipynb b/hatchet/vis/notebooks/cct.ipynb new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/package.json b/hatchet/vis/package.json new file mode 100644 index 00000000..ddc5edb0 --- /dev/null +++ b/hatchet/vis/package.json @@ -0,0 +1,25 @@ +{ + "name": "hatchet-vis", + "version": "0.0.1", + "description": "Notebook-based VIS for Hatchet", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hatchet/hatchet.git" + }, + "keywords": [ + "Performance-analysis", + "Jupyter-notebook", + "Visualization", + "HPC" + ], + "author": "Hatchet developers", + "license": "MIT", + "bugs": { + "url": "https://github.com/hatchet/hatchet/issues" + }, + "homepage": "https://github.com/hatchet/hatchet#readme" +} diff --git a/hatchet/vis/requirements.txt b/hatchet/vis/requirements.txt new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/scripts/boxplot.js b/hatchet/vis/scripts/boxplot.js new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/scripts/utils/color.js b/hatchet/vis/scripts/utils/color.js new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/scripts/utils/d3.js b/hatchet/vis/scripts/utils/d3.js new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/styles/boxplot.css b/hatchet/vis/styles/boxplot.css new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/styles/cct.css b/hatchet/vis/styles/cct.css new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/templates/boxplot.html b/hatchet/vis/templates/boxplot.html new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/templates/cct.html b/hatchet/vis/templates/cct.html new file mode 100644 index 00000000..e69de29b diff --git a/hatchet/vis/webpack.config.js b/hatchet/vis/webpack.config.js new file mode 100644 index 00000000..e69de29b From 218231c51a5a2f459f7cfa3c347176b22bde1a31 Mon Sep 17 00:00:00 2001 From: jarusified Date: Tue, 14 Sep 2021 12:33:28 -0700 Subject: [PATCH 02/29] Add the Boxplot class inside external/scripts --- hatchet/external/scripts/__init__.py | 9 + hatchet/external/scripts/boxplot.py | 301 +++++++++++++++++++++++++++ 2 files changed, 310 insertions(+) create mode 100644 hatchet/external/scripts/__init__.py create mode 100644 hatchet/external/scripts/boxplot.py diff --git a/hatchet/external/scripts/__init__.py b/hatchet/external/scripts/__init__.py new file mode 100644 index 00000000..bde29b6a --- /dev/null +++ b/hatchet/external/scripts/__init__.py @@ -0,0 +1,9 @@ +# Copyright 2017-2021 Lawrence Livermore National Security, LLC and other +# Hatchet Project Developers. See the top-level LICENSE file for details. +# +# SPDX-License-Identifier: MIT + +# make flake8 unused names in this file. +# flake8: noqa: F401 + +from .boxplot import BoxPlot diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py new file mode 100644 index 00000000..0f073868 --- /dev/null +++ b/hatchet/external/scripts/boxplot.py @@ -0,0 +1,301 @@ +import numpy as np +import pandas as pd +from scipy import stats +import hatchet as ht + + +class BoxPlot: + def __init__( + self, cat_column, tgt_gf, bkg_gf=None, callsites=[], metrics=[], iqr_scale=1.5 + ): + """ + Boxplot computation for callsites. The data can be computed for two use + cases: + 1. Examining runtime distributions of a single GraphFrame. + 2. Comparing runtime distributions of a target GraphFrame against a + background GraphFrame. + + Arguments: + cat_column: (string) Categorical column to aggregate the boxplot computation. + tgt_gf: (ht.GraphFrame) Target GraphFrame. + bkg_gf: (ht.GraphFrame) Background GraphFrame. + callsite: (list) List of callsites. + metrics: (list) List of metrics to compute. + iqr_scale: (float) IQR range for outliers. + + Return: None + """ + assert isinstance(tgt_gf, ht.GraphFrame) + assert isinstance(callsites, list) + assert isinstance(metrics, list) + assert isinstance(iqr_scale, float) + + self.df_index = ["node"] + + if bkg_gf is not None: + assert isinstance(bkg_gf, ht.GraphFrame) + assert cat_column in bkg_gf.dataframe.column + + tgt_gf.dataframe = tgt_gf.dataframe.reset_index() + if cat_column not in tgt_gf.dataframe.columns: + raise Exception(f"{cat_column} not found in tgt_gf.") + + if bkg_gf is not None: + bkg_gf.dataframe = bkg_gf.dataframe.reset_index() + if cat_column not in bkg_gf.dataframe.columns: + raise Exception(f"{cat_column} not found in bkg_gf.") + + self.metrics = metrics + self.iqr_scale = iqr_scale + self.callsites = callsites + self.cat_column = cat_column + + if len(metrics) == 0: + self.metrics = tgt_gf.inc_metrics + tgt_gf.exc_metrics + + tgt_dict = BoxPlot.df_groupby( + tgt_gf.dataframe, + groupby="name", + cols=self.metrics + [self.cat_column] + self.df_index, + ) + self.box_types = ["tgt"] + + if bkg_gf is not None: + bkg_dict = BoxPlot.df_groupby( + bkg_gf.dataframe, + groupby="name", + cols=self.metrics + [self.cat_column] + self.df_index, + ) + self.box_types = ["tgt", "bkg"] + + self.result = {} + for callsite in self.callsites: + ret = {} + tgt_df = tgt_dict[callsite] + ret["tgt"] = self.compute(tgt_df) + + if bkg_gf is not None: + bkg_df = bkg_dict[callsite] + ret["bkg"] = self.compute(bkg_df) + + self.result[callsite] = ret + + self.tgt = self.to_gf(tgt_gf, "tgt") + if bkg_gf is not None: + self.bkg = self.to_gf(bkg_gf, "bkg") + + @staticmethod + def df_groupby(df, groupby, cols): + """ + Group the dataframe by groupby column. + + Arguments: + df (graphframe): self's graphframe + groupby: groupby columns on dataframe + cols: columns from the dataframe + + Return: + (dict): A dictionary of dataframes (columns) keyed by groups. + """ + _df = df.set_index([groupby]) + _levels = _df.index.unique().tolist() + + return {_: _df.xs(_)[cols] for _ in _levels} + + @staticmethod + def outliers(data, scale=1.5, side="both"): + """ + Calculate outliers from the data. + + Arguments: + data (np.ndarray or pd.Series): Array of values. + scale (float): IQR range for outliers. + side (str): directions for calculating the outliers, i.e., left, + right, both. + + Return: + outliers (np.ndarray): Array of outlier values. + """ + assert isinstance(data, (pd.Series, np.ndarray)) + assert len(data.shape) == 1 + assert isinstance(scale, float) + assert side in ["gt", "lt", "both"] + + d_q13 = np.percentile(data, [25.0, 75.0]) + iqr_distance = np.multiply(stats.iqr(data), scale) + + if side in ["gt", "both"]: + upper_range = d_q13[1] + iqr_distance + upper_outlier = np.greater(data - upper_range.reshape(1), 0) + + if side in ["lt", "both"]: + lower_range = d_q13[0] - iqr_distance + lower_outlier = np.less(data - lower_range.reshape(1), 0) + + if side == "gt": + return upper_outlier + if side == "lt": + return lower_outlier + if side == "both": + return np.logical_or(upper_outlier, lower_outlier) + + def compute(self, df): + """ + Compute boxplot quartiles and statistics. + + Arguments: + df: Dataframe to calculate the boxplot information. + + Return: + ret (dict): { + "metric1": { + "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), + "ometric": (array) outlier from metric, + "ocat": (array) outlier from cat_column, + "d": (array) metric values, + "rng": (tuple) (min, max), + "uv": (tuple) (mean, variance), + "imb": (number) imbalance, + "ks": (tuple) (kurtosis, skewness) + } + } + """ + ret = {_: {} for _ in self.metrics} + for tk, tv in zip(self.metrics, self.metrics): + q = np.percentile(df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) + mask = BoxPlot.outliers(df[tv], scale=self.iqr_scale) + mask = np.where(mask)[0] + + _data = df[tv].to_numpy() + _min, _mean, _max = _data.min(), _data.mean(), _data.max() + _var = _data.var() if _data.shape[0] > 0 else 0.0 + _imb = (_max - _mean) / _mean if not np.isclose(_mean, 0.0) else _max + _skew = stats.skew(_data) + _kurt = stats.kurtosis(_data) + + ret[tk] = { + "q": q, + "ometric": df[tv].to_numpy()[mask], + "ocat": df[self.cat_column].to_numpy()[mask], + "d": _data, + "rng": (_min, _max), + "uv": (_mean, _var), + "imb": _imb, + "ks": (_kurt, _skew), + "node": df["node"].unique().tolist()[0], + } + + return ret + + def to_json(self): + """ + Unpack the boxplot data into JSON format. + + Arguments: + + Return: + result (dict): { + "callsite1": { + "tgt": self._unpack_callsite, + "bkg": self._unpack_callsite + }, + } + """ + return { + callsite: { + _type: self._unpack_callsite(callsite, _type) + for _type in self.box_types + } + for callsite in self.callsites + } + + def _unpack_callsite(self, callsite, box_type, with_htnode=False): + """ + Helper function to unpack the data by callsite. + + Arguments: + callsite: Callsite's name + box_type: (string) Boxplot type (i.e., "tgt" or "bkg") + with_htnode: (bool) An option to add hatchet.Node to the dict. + + Return: + ret (dict): { + "metric": { + "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), + "ocat": (array) outlier from cat_column, + "ometric": (array) outlier from metri, + "min": (number) minimum, + "max": (number) maximum, + "mean": (number) mean, + "var": (number) variance, + "imb": (number) imbalance, + "kurt": (number) kurtosis, + "skew": (number) skewness, + } + } + """ + ret = {} + for metric in self.metrics: + box = self.result[callsite][box_type][metric] + ret[metric] = { + "q": box["q"].tolist(), + "ocat": box["ocat"].tolist(), + "ometric": box["ometric"].tolist(), + "min": box["rng"][0], + "max": box["rng"][1], + "mean": box["uv"][0], + "var": box["uv"][1], + "imb": box["imb"], + "kurt": box["ks"][0], + "skew": box["ks"][1], + } + if with_htnode: + ret[metric]["node"] = box["node"] + + return ret + + def _to_gf_by_metric(self, gf, box_type, metric): + """ + Wrapper function to unpack the boxplot data into Hatchet.GraphFrame by + respective metric. + + Argument: + gf: (hatchet.GraphFrame) GraphFrame + box_type: (string) Boxplot type (i.e., "tgt" or "bkg") + metric: (string) Metric + + Return: + hatchet.GraphFrame with boxplot information as columns. + + """ + _dict = { + callsite: self._unpack_callsite(callsite, box_type, with_htnode=True)[ + metric + ] + for callsite in self.callsites + } + tmp_df = pd.DataFrame.from_dict(data=_dict).T + tmp_df.set_index(self.df_index, inplace=True) + + return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) + + def to_gf(self, gf, box_type): + """ + Unpack the boxplot data into GraphFrame object. + + Note: In this case, only the hatchet.dataframe will be updated, with + hatchet.Graph being the same as the input gf. + + Arguments: + gf: (hatchet.GraphFrame) GraphFrame + box_type: (string) Boxplot type (i.e., "tgt" or "bkg") + + Return: + (dict) : { + "metric": hatchet.GraphFrame, ... + } + """ + return { + metric: self._to_gf_by_metric(gf, box_type, metric) + for metric in self.metrics + } From d3f1a4d10c1802835321e42353f4a4039e0a7187 Mon Sep 17 00:00:00 2001 From: jarusified Date: Tue, 14 Sep 2021 13:05:48 -0700 Subject: [PATCH 03/29] Add externals to the setup.py, update requirements.txt --- requirements.txt | 1 + setup.py | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index 0af39485..7cc0de4a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,5 @@ PyYAML cython multiprocess textX +scipy caliper-reader diff --git a/setup.py b/setup.py index 59ecd5ab..057eb644 100644 --- a/setup.py +++ b/setup.py @@ -39,6 +39,7 @@ "hatchet.readers", "hatchet.util", "hatchet.external", + "hatchet.external.scripts" "hatchet.tests", "hatchet.cython_modules.libs", ], From 64a0316de84eb63409e291ab80428db71cb65c8d Mon Sep 17 00:00:00 2001 From: jarusified Date: Tue, 14 Sep 2021 13:35:32 -0700 Subject: [PATCH 04/29] Address default cases for callsites and metrics arguments --- hatchet/external/scripts/boxplot.py | 15 +++++++++++---- setup.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py index 0f073868..ecfce3cb 100644 --- a/hatchet/external/scripts/boxplot.py +++ b/hatchet/external/scripts/boxplot.py @@ -6,7 +6,7 @@ class BoxPlot: def __init__( - self, cat_column, tgt_gf, bkg_gf=None, callsites=[], metrics=[], iqr_scale=1.5 + self, cat_column, tgt_gf, bkg_gf=None, callsites=[], metrics=[] ): """ Boxplot computation for callsites. The data can be computed for two use @@ -28,7 +28,6 @@ def __init__( assert isinstance(tgt_gf, ht.GraphFrame) assert isinstance(callsites, list) assert isinstance(metrics, list) - assert isinstance(iqr_scale, float) self.df_index = ["node"] @@ -45,13 +44,21 @@ def __init__( if cat_column not in bkg_gf.dataframe.columns: raise Exception(f"{cat_column} not found in bkg_gf.") - self.metrics = metrics - self.iqr_scale = iqr_scale + self.iqr_scale = 1.5 self.callsites = callsites self.cat_column = cat_column if len(metrics) == 0: self.metrics = tgt_gf.inc_metrics + tgt_gf.exc_metrics + else: + self.metrics = metrics + + if len(callsites) == 0: + self.callsites = tgt_gf.dataframe['name'].unique().tolist() + if bkg_gf is not None: + self.callsites = tgt_gf.dataframe['name'].unique().tolist() + bkg_gf.dataframe['name'].unique().tolist() + else: + self.callsites = callsites tgt_dict = BoxPlot.df_groupby( tgt_gf.dataframe, diff --git a/setup.py b/setup.py index 057eb644..4ef8803e 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ "hatchet.readers", "hatchet.util", "hatchet.external", - "hatchet.external.scripts" + "hatchet.external.scripts", "hatchet.tests", "hatchet.cython_modules.libs", ], From 6dd8db951d6002a34b96bacb6ab9139f74bd442d Mon Sep 17 00:00:00 2001 From: jarusified Date: Wed, 22 Sep 2021 15:19:28 -0700 Subject: [PATCH 05/29] Add dtype to the output dataframes --- hatchet/external/scripts/boxplot.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py index ecfce3cb..983f8065 100644 --- a/hatchet/external/scripts/boxplot.py +++ b/hatchet/external/scripts/boxplot.py @@ -29,12 +29,14 @@ def __init__( assert isinstance(callsites, list) assert isinstance(metrics, list) - self.df_index = ["node"] - if bkg_gf is not None: assert isinstance(bkg_gf, ht.GraphFrame) assert cat_column in bkg_gf.dataframe.column + # self.df_index = list(tgt_gf.dataframe.index.names) # This will cause a + # bug. + self.df_index = ["node"] + tgt_gf.dataframe = tgt_gf.dataframe.reset_index() if cat_column not in tgt_gf.dataframe.columns: raise Exception(f"{cat_column} not found in tgt_gf.") @@ -275,6 +277,18 @@ def _to_gf_by_metric(self, gf, box_type, metric): hatchet.GraphFrame with boxplot information as columns. """ + _dtype = { + 'q': object, + 'ocat': object, + 'ometric': object, + 'min': np.float64, + 'max': np.float64, + 'mean': np.float64, + 'var': np.float64, + 'imb': np.float64, + 'kurt': np.float64, + 'skew': np.float64 + } _dict = { callsite: self._unpack_callsite(callsite, box_type, with_htnode=True)[ metric @@ -282,6 +296,7 @@ def _to_gf_by_metric(self, gf, box_type, metric): for callsite in self.callsites } tmp_df = pd.DataFrame.from_dict(data=_dict).T + tmp_df = tmp_df.astype(_dtype) tmp_df.set_index(self.df_index, inplace=True) return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) From 1ec29516fda3771e5bc8d72c9c12d2ed297768ad Mon Sep 17 00:00:00 2001 From: jarusified Date: Wed, 22 Sep 2021 16:42:32 -0700 Subject: [PATCH 06/29] Add name to the dataframe --- hatchet/external/scripts/boxplot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py index 983f8065..c6aebacb 100644 --- a/hatchet/external/scripts/boxplot.py +++ b/hatchet/external/scripts/boxplot.py @@ -247,6 +247,7 @@ def _unpack_callsite(self, callsite, box_type, with_htnode=False): for metric in self.metrics: box = self.result[callsite][box_type][metric] ret[metric] = { + "name": callsite, "q": box["q"].tolist(), "ocat": box["ocat"].tolist(), "ometric": box["ometric"].tolist(), @@ -278,6 +279,7 @@ def _to_gf_by_metric(self, gf, box_type, metric): """ _dtype = { + "name": object, 'q': object, 'ocat': object, 'ometric': object, From 0c2c779303ccffc97a8a4188bf9e120bc3955875 Mon Sep 17 00:00:00 2001 From: jarusified Date: Wed, 22 Sep 2021 17:55:40 -0700 Subject: [PATCH 07/29] Add basic unit tests --- hatchet/external/scripts/boxplot.py | 1 - hatchet/tests/boxplot.py | 80 +++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 hatchet/tests/boxplot.py diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py index c6aebacb..30c14d57 100644 --- a/hatchet/external/scripts/boxplot.py +++ b/hatchet/external/scripts/boxplot.py @@ -31,7 +31,6 @@ def __init__( if bkg_gf is not None: assert isinstance(bkg_gf, ht.GraphFrame) - assert cat_column in bkg_gf.dataframe.column # self.df_index = list(tgt_gf.dataframe.index.names) # This will cause a # bug. diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py new file mode 100644 index 00000000..36c729d1 --- /dev/null +++ b/hatchet/tests/boxplot.py @@ -0,0 +1,80 @@ +# Copyright 2017-2021 Lawrence Livermore National Security, LLC and other +# Hatchet Project Developers. See the top-level LICENSE file for details. +# +# SPDX-License-Identifier: MIT + +import pandas as pd +import pandas.api.types as ptypes +import pytest + +import hatchet as ht +from hatchet.external.scripts import BoxPlot +from hatchet.util.executable import which + +bp_columns = ['name', 'q', 'ocat', 'ometric', 'min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] + + +def test_boxplot_tgt(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + + # Check if the format of target is correct. + assert metrics[0] in list(bp.tgt.keys()) + assert isinstance(bp.tgt[metrics[0]], ht.GraphFrame) + assert isinstance(bp.tgt[metrics[0]].dataframe, pd.DataFrame) + assert isinstance(bp.tgt[metrics[0]].graph, ht.graph.Graph) + + # Check if the format of background is correct. + assert not hasattr(bp, 'bkg') + + df = bp.tgt[metrics[0]].dataframe + graph = bp.tgt[metrics[0]].graph + + # Check if the required columns are present. + columns = ['name', 'q', 'ocat', 'ometric', 'min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] + assert df.columns.tolist().sort() == columns.sort() + +def test_boxplot_bkg(calc_pi_hpct_db): + tgt_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + bkg_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(cat_column='rank', tgt_gf=tgt_gf, bkg_gf=bkg_gf, metrics=metrics) + + # Check if the format of target is correct. + assert metrics[0] in list(bp.tgt.keys()) + assert isinstance(bp.tgt[metrics[0]], ht.GraphFrame) + assert isinstance(bp.tgt[metrics[0]].dataframe, pd.DataFrame) + assert isinstance(bp.tgt[metrics[0]].graph, ht.graph.Graph) + + # Check if the format of background is correct. + assert metrics[0] in list(bp.bkg.keys()) + assert isinstance(bp.bkg[metrics[0]], ht.GraphFrame) + assert isinstance(bp.bkg[metrics[0]].dataframe, pd.DataFrame) + assert isinstance(bp.bkg[metrics[0]].graph, ht.graph.Graph) + + # Check if the required columns are present. + assert bp.tgt[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() + assert bp.bkg[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() + +def test_output_dtypes(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + + object_dtype = ['name', 'q', 'ocat', 'ometric'] + float_dtype = ['min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] + + assert all(ptypes.is_float_dtype(bp.tgt['time'].dataframe[col]) for col in float_dtype) + assert all(ptypes.is_object_dtype(bp.tgt['time'].dataframe[col]) for col in object_dtype) + +def test_callsite_count(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + + # assert len(bp.tgt['time'].graph) == len(bp.tgt['time'].dataframe.index.values.tolist()) + + # Check if equal number of nodes in graph and dataframe. + # assert len(bp.tgt[metrics[0]].graph) == len(bp.tgt[metrics[0]].dataframe['name'].unique().tolist()) + # assert len(bp.bkg[metrics[0]].graph) == len(bp.bkg[metrics[0]].dataframe['name'].unique().tolist()) From a1fc88c4802b9560432ef7508557a9531085e253 Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 23 Sep 2021 12:57:54 -0700 Subject: [PATCH 08/29] Add to_json unit tests --- hatchet/external/scripts/boxplot.py | 67 ++++++++-------- hatchet/tests/boxplot.py | 115 ++++++++++++++++++++++------ requirements.txt | 1 + 3 files changed, 128 insertions(+), 55 deletions(-) diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py index 30c14d57..4c1dbbc5 100644 --- a/hatchet/external/scripts/boxplot.py +++ b/hatchet/external/scripts/boxplot.py @@ -6,7 +6,12 @@ class BoxPlot: def __init__( - self, cat_column, tgt_gf, bkg_gf=None, callsites=[], metrics=[] + self, + cat_column, + tgt_gf, + bkg_gf=None, + group_by="nid", + metrics=[], ): """ Boxplot computation for callsites. The data can be computed for two use @@ -19,22 +24,22 @@ def __init__( cat_column: (string) Categorical column to aggregate the boxplot computation. tgt_gf: (ht.GraphFrame) Target GraphFrame. bkg_gf: (ht.GraphFrame) Background GraphFrame. - callsite: (list) List of callsites. + group_by: (string) Column to identify the callsites (e.g., name, nid). metrics: (list) List of metrics to compute. - iqr_scale: (float) IQR range for outliers. Return: None """ assert isinstance(tgt_gf, ht.GraphFrame) - assert isinstance(callsites, list) + assert isinstance(group_by, str) assert isinstance(metrics, list) if bkg_gf is not None: assert isinstance(bkg_gf, ht.GraphFrame) - # self.df_index = list(tgt_gf.dataframe.index.names) # This will cause a - # bug. - self.df_index = ["node"] + self.df_index = list(tgt_gf.dataframe.index.names) + # Remove cat_column from the index, since we will aggregate by this column. + if cat_column in self.df_index: + self.df_index.remove(cat_column) tgt_gf.dataframe = tgt_gf.dataframe.reset_index() if cat_column not in tgt_gf.dataframe.columns: @@ -46,7 +51,6 @@ def __init__( raise Exception(f"{cat_column} not found in bkg_gf.") self.iqr_scale = 1.5 - self.callsites = callsites self.cat_column = cat_column if len(metrics) == 0: @@ -54,25 +58,25 @@ def __init__( else: self.metrics = metrics - if len(callsites) == 0: - self.callsites = tgt_gf.dataframe['name'].unique().tolist() - if bkg_gf is not None: - self.callsites = tgt_gf.dataframe['name'].unique().tolist() + bkg_gf.dataframe['name'].unique().tolist() - else: - self.callsites = callsites + self.callsites = tgt_gf.dataframe[group_by].unique().tolist() + if bkg_gf is not None: + self.callsites = ( + tgt_gf.dataframe[group_by].unique().tolist() + + bkg_gf.dataframe[group_by].unique().tolist() + ) tgt_dict = BoxPlot.df_groupby( tgt_gf.dataframe, - groupby="name", - cols=self.metrics + [self.cat_column] + self.df_index, + groupby=group_by, + cols=self.metrics + [self.cat_column] + self.df_index + ["name"], ) self.box_types = ["tgt"] if bkg_gf is not None: bkg_dict = BoxPlot.df_groupby( bkg_gf.dataframe, - groupby="name", - cols=self.metrics + [self.cat_column] + self.df_index, + groupby=group_by, + cols=self.metrics + [self.cat_column] + self.df_index + ["name"], ) self.box_types = ["tgt", "bkg"] @@ -191,6 +195,7 @@ def compute(self, df): "imb": _imb, "ks": (_kurt, _skew), "node": df["node"].unique().tolist()[0], + "name": df["name"].unique().tolist()[0], } return ret @@ -246,7 +251,7 @@ def _unpack_callsite(self, callsite, box_type, with_htnode=False): for metric in self.metrics: box = self.result[callsite][box_type][metric] ret[metric] = { - "name": callsite, + "name": box["name"], "q": box["q"].tolist(), "ocat": box["ocat"].tolist(), "ometric": box["ometric"].tolist(), @@ -278,17 +283,17 @@ def _to_gf_by_metric(self, gf, box_type, metric): """ _dtype = { - "name": object, - 'q': object, - 'ocat': object, - 'ometric': object, - 'min': np.float64, - 'max': np.float64, - 'mean': np.float64, - 'var': np.float64, - 'imb': np.float64, - 'kurt': np.float64, - 'skew': np.float64 + "name": str, + "q": object, + "ocat": object, + "ometric": object, + "min": np.float64, + "max": np.float64, + "mean": np.float64, + "var": np.float64, + "imb": np.float64, + "kurt": np.float64, + "skew": np.float64, } _dict = { callsite: self._unpack_callsite(callsite, box_type, with_htnode=True)[ @@ -300,6 +305,8 @@ def _to_gf_by_metric(self, gf, box_type, metric): tmp_df = tmp_df.astype(_dtype) tmp_df.set_index(self.df_index, inplace=True) + # TODO: Would we need to squash the graph. (Check in the to_gf() method.) + # Call into the gf.groupby_aggregate() (in PR) before returning the gf. return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) def to_gf(self, gf, box_type): diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index 36c729d1..8b4e02c6 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -5,19 +5,31 @@ import pandas as pd import pandas.api.types as ptypes -import pytest +import jsonschema import hatchet as ht from hatchet.external.scripts import BoxPlot from hatchet.util.executable import which -bp_columns = ['name', 'q', 'ocat', 'ometric', 'min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] +bp_columns = [ + "name", + "q", + "ocat", + "ometric", + "min", + "max", + "mean", + "var", + "imb", + "kurt", + "skew", +] def test_boxplot_tgt(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) metrics = ["time"] - bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) # Check if the format of target is correct. assert metrics[0] in list(bp.tgt.keys()) @@ -26,26 +38,33 @@ def test_boxplot_tgt(calc_pi_hpct_db): assert isinstance(bp.tgt[metrics[0]].graph, ht.graph.Graph) # Check if the format of background is correct. - assert not hasattr(bp, 'bkg') + assert not hasattr(bp, "bkg") df = bp.tgt[metrics[0]].dataframe graph = bp.tgt[metrics[0]].graph # Check if the required columns are present. - columns = ['name', 'q', 'ocat', 'ometric', 'min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] + columns = [ + "name", + "q", + "ocat", + "ometric", + "min", + "max", + "mean", + "var", + "imb", + "kurt", + "skew", + ] assert df.columns.tolist().sort() == columns.sort() + def test_boxplot_bkg(calc_pi_hpct_db): tgt_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) bkg_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) metrics = ["time"] - bp = BoxPlot(cat_column='rank', tgt_gf=tgt_gf, bkg_gf=bkg_gf, metrics=metrics) - - # Check if the format of target is correct. - assert metrics[0] in list(bp.tgt.keys()) - assert isinstance(bp.tgt[metrics[0]], ht.GraphFrame) - assert isinstance(bp.tgt[metrics[0]].dataframe, pd.DataFrame) - assert isinstance(bp.tgt[metrics[0]].graph, ht.graph.Graph) + bp = BoxPlot(cat_column="rank", tgt_gf=tgt_gf, bkg_gf=bkg_gf, metrics=metrics) # Check if the format of background is correct. assert metrics[0] in list(bp.bkg.keys()) @@ -53,28 +72,74 @@ def test_boxplot_bkg(calc_pi_hpct_db): assert isinstance(bp.bkg[metrics[0]].dataframe, pd.DataFrame) assert isinstance(bp.bkg[metrics[0]].graph, ht.graph.Graph) - # Check if the required columns are present. - assert bp.tgt[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() - assert bp.bkg[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() + # # Check if the required columns are present. + # assert bp.tgt[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() + # assert bp.bkg[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() + def test_output_dtypes(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) metrics = ["time"] - bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) + + object_dtype = ["name", "q", "ocat", "ometric"] + float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] - object_dtype = ['name', 'q', 'ocat', 'ometric'] - float_dtype = ['min', 'max', 'mean', 'var', 'imb', 'kurt', 'skew'] + assert all( + ptypes.is_float_dtype(bp.tgt["time"].dataframe[col]) for col in float_dtype + ) + assert all( + ptypes.is_object_dtype(bp.tgt["time"].dataframe[col]) for col in object_dtype + ) - assert all(ptypes.is_float_dtype(bp.tgt['time'].dataframe[col]) for col in float_dtype) - assert all(ptypes.is_object_dtype(bp.tgt['time'].dataframe[col]) for col in object_dtype) def test_callsite_count(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) metrics = ["time"] - bp = BoxPlot(cat_column='rank', tgt_gf=gf, bkg_gf=None, metrics=metrics) + bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) + + assert len(bp.tgt["time"].graph) == len( + bp.tgt["time"].dataframe.index.values.tolist() + ) + - # assert len(bp.tgt['time'].graph) == len(bp.tgt['time'].dataframe.index.values.tolist()) +def test_multiple_metrics(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time", "time (inc)"] + bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) + + assert all(metric in bp.tgt for metric in metrics) - # Check if equal number of nodes in graph and dataframe. - # assert len(bp.tgt[metrics[0]].graph) == len(bp.tgt[metrics[0]].dataframe['name'].unique().tolist()) - # assert len(bp.bkg[metrics[0]].graph) == len(bp.bkg[metrics[0]].dataframe['name'].unique().tolist()) + +def test_to_json(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) + json = bp.to_json() + assert all( + (nid in json.keys()) and ("tgt" in json[nid]) + for nid in gf.dataframe["nid"].unique().tolist() + ) + + +# def test_to_json_schema(calc_pi_hpct_db): +# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) +# json = bp.to_json() +# STATS_SCHEMA = { +# "type": "object", +# "properties": { +# "name": {"type": "string"}, +# "min": {"type": "number"}, +# "max": {"type": "number"}, +# "mean": {"type": "number"}, +# "imb": {"type": "number"}, +# "var": {"type": "number"}, +# "kurt": {"type": "number"}, +# "skew": {"type": "number"}, +# "q": {"type": "array"}, +# "ocat": {"type": "array"}, +# "ometric": {"type": "array"} +# }, +# } + +# assert all(jsonschema.validate(instance=json[nid]["tgt"]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) diff --git a/requirements.txt b/requirements.txt index 7cc0de4a..8fe52a4e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ multiprocess textX scipy caliper-reader +jsonschema \ No newline at end of file From 288e2f0f3fd4964b366ce0698b6b0a9e75b963b5 Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 23 Sep 2021 13:11:54 -0700 Subject: [PATCH 09/29] Fix flake8 errors --- hatchet/tests/boxplot.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index 8b4e02c6..da6629fc 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -5,11 +5,9 @@ import pandas as pd import pandas.api.types as ptypes -import jsonschema import hatchet as ht from hatchet.external.scripts import BoxPlot -from hatchet.util.executable import which bp_columns = [ "name", @@ -41,7 +39,6 @@ def test_boxplot_tgt(calc_pi_hpct_db): assert not hasattr(bp, "bkg") df = bp.tgt[metrics[0]].dataframe - graph = bp.tgt[metrics[0]].graph # Check if the required columns are present. columns = [ From ea085549624b6571adecd354fb37e88d6ac9cd93 Mon Sep 17 00:00:00 2001 From: jarusified Date: Wed, 29 Sep 2021 17:43:45 -0700 Subject: [PATCH 10/29] Change the user interface for boxplot class; Move it util directory --- hatchet/util/boxplot.py | 297 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 hatchet/util/boxplot.py diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py new file mode 100644 index 00000000..0f4ec0cd --- /dev/null +++ b/hatchet/util/boxplot.py @@ -0,0 +1,297 @@ +from itertools import groupby +import numpy as np +import pandas as pd +from scipy import stats +import hatchet as ht + + +class BoxPlot: + def __init__( + self, + multi_index_gf, + cat_column="rank", + metrics=[], + ): + """ + Boxplot computation for callsites. The data can be computed for two use + cases: + 1. Examining runtime distributions of a single GraphFrame. + 2. Comparing runtime distributions of a target GraphFrame against a + background GraphFrame. + + Arguments: + cat_column: (string) Categorical column to aggregate the boxplot computation. + tgt_gf: (ht.GraphFrame) Target GraphFrame. + bkg_gf: (ht.GraphFrame) Background GraphFrame. + group_by: (string) Column to identify the callsites (e.g., name, nid). + metrics: (list) List of metrics to compute. + + Return: None + """ + assert isinstance(multi_index_gf, ht.GraphFrame) + assert isinstance(metrics, list) + + self.df_index = list(multi_index_gf.dataframe.index.names) + print(self.df_index) + # Remove cat_column from the index, since we will aggregate by this column. + if cat_column in self.df_index: + self.df_index.remove(cat_column) + + print(self.df_index) + + multi_index_gf.dataframe = multi_index_gf.dataframe.reset_index() + if cat_column not in multi_index_gf.dataframe.columns: + raise Exception(f"{cat_column} not found in tgt_gf.") + + self.iqr_scale = 1.5 + self.cat_column = cat_column + + if len(metrics) == 0: + self.metrics = multi_index_gf.inc_metrics + multi_index_gf.exc_metrics + else: + self.metrics = metrics + + groupby = "nid" + self.callsites = multi_index_gf.dataframe[groupby].unique().tolist() + + tgt_dict = BoxPlot.df_groupby( + multi_index_gf.dataframe, + groupby=groupby, + cols=self.metrics + [self.cat_column] + self.df_index + ["name"], + ) + + self.result = {} + for callsite in self.callsites: + tgt_df = tgt_dict[callsite] + self.result[callsite] = self.compute(tgt_df) + + self.gf = self.to_gf(multi_index_gf) + + @staticmethod + def df_groupby(df, groupby, cols): + """ + Group the dataframe by groupby column. + + Arguments: + df (graphframe): self's graphframe + groupby: groupby columns on dataframe + cols: columns from the dataframe + + Return: + (dict): A dictionary of dataframes (columns) keyed by groups. + """ + _df = df.set_index([groupby]) + _levels = _df.index.unique().tolist() + + return {_: _df.xs(_)[cols] for _ in _levels} + + @staticmethod + def outliers(data, scale=1.5, side="both"): + """ + Calculate outliers from the data. + + Arguments: + data (np.ndarray or pd.Series): Array of values. + scale (float): IQR range for outliers. + side (str): directions for calculating the outliers, i.e., left, + right, both. + + Return: + outliers (np.ndarray): Array of outlier values. + """ + assert isinstance(data, (pd.Series, np.ndarray)) + assert len(data.shape) == 1 + assert isinstance(scale, float) + assert side in ["gt", "lt", "both"] + + d_q13 = np.percentile(data, [25.0, 75.0]) + iqr_distance = np.multiply(stats.iqr(data), scale) + + if side in ["gt", "both"]: + upper_range = d_q13[1] + iqr_distance + upper_outlier = np.greater(data - upper_range.reshape(1), 0) + + if side in ["lt", "both"]: + lower_range = d_q13[0] - iqr_distance + lower_outlier = np.less(data - lower_range.reshape(1), 0) + + if side == "gt": + return upper_outlier + if side == "lt": + return lower_outlier + if side == "both": + return np.logical_or(upper_outlier, lower_outlier) + + def compute(self, df): + """ + Compute boxplot quartiles and statistics. + + Arguments: + df: Dataframe to calculate the boxplot information. + + Return: + ret (dict): { + "metric1": { + "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), + "ometric": (array) outlier from metric, + "ocat": (array) outlier from cat_column, + "d": (array) metric values, + "rng": (tuple) (min, max), + "uv": (tuple) (mean, variance), + "imb": (number) imbalance, + "ks": (tuple) (kurtosis, skewness) + } + } + """ + ret = {_: {} for _ in self.metrics} + for tk, tv in zip(self.metrics, self.metrics): + q = np.percentile(df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) + mask = BoxPlot.outliers(df[tv], scale=self.iqr_scale) + mask = np.where(mask)[0] + + _data = df[tv].to_numpy() + _min, _mean, _max = _data.min(), _data.mean(), _data.max() + _var = _data.var() if _data.shape[0] > 0 else 0.0 + _imb = (_max - _mean) / _mean if not np.isclose(_mean, 0.0) else _max + _skew = stats.skew(_data) + _kurt = stats.kurtosis(_data) + + ret[tk] = { + "q": q, + "ometric": df[tv].to_numpy()[mask], + "ocat": df[self.cat_column].to_numpy()[mask], + "d": _data, + "rng": (_min, _max), + "uv": (_mean, _var), + "imb": _imb, + "ks": (_kurt, _skew), + "name": df["name"].unique().tolist()[0], + } + + for index in self.df_index: + ret[tk][index] = df[index].unique().tolist()[0], + + return ret + + def to_json(self): + """ + Unpack the boxplot data into JSON format. + + Arguments: + + Return: + result (dict): { + "callsite1": { + "tgt": self._unpack_callsite, + "bkg": self._unpack_callsite + }, + } + """ + return { + callsite: self._unpack_callsite(callsite) + for callsite in self.callsites + } + + def _unpack_callsite(self, callsite): + """ + Helper function to unpack the data by callsite. + + Arguments: + callsite: Callsite's name + with_htnode: (bool) An option to add hatchet.Node to the dict. + + Return: + ret (dict): { + "metric": { + "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), + "ocat": (array) outlier from cat_column, + "ometric": (array) outlier from metri, + "min": (number) minimum, + "max": (number) maximum, + "mean": (number) mean, + "var": (number) variance, + "imb": (number) imbalance, + "kurt": (number) kurtosis, + "skew": (number) skewness, + } + } + """ + ret = {} + for metric in self.metrics: + box = self.result[callsite][metric] + ret[metric] = { + "name": box["name"], + "q": box["q"].tolist(), + "ocat": box["ocat"].tolist(), + "ometric": box["ometric"].tolist(), + "min": box["rng"][0], + "max": box["rng"][1], + "mean": box["uv"][0], + "var": box["uv"][1], + "imb": box["imb"], + "kurt": box["ks"][0], + "skew": box["ks"][1], + } + + for index in self.df_index: + ret[metric][index] = box[index] + + return ret + + def _to_gf_by_metric(self, gf, metric): + """ + Wrapper function to unpack the boxplot data into Hatchet.GraphFrame by + respective metric. + + Argument: + gf: (hatchet.GraphFrame) GraphFrame + metric: (string) Metric + + Return: + hatchet.GraphFrame with boxplot information as columns. + + """ + _dtype = { + "name": str, + "q": object, + "ocat": object, + "ometric": object, + "min": np.float64, + "max": np.float64, + "mean": np.float64, + "var": np.float64, + "imb": np.float64, + "kurt": np.float64, + "skew": np.float64, + } + _dict = { + callsite: self._unpack_callsite(callsite)[metric] + for callsite in self.callsites + } + tmp_df = pd.DataFrame.from_dict(data=_dict).T + tmp_df = tmp_df.astype(_dtype) + tmp_df.set_index(self.df_index, inplace=True) + + # TODO: Would we need to squash the graph. (Check in the to_gf() method.) + # Call into the gf.groupby_aggregate() (in PR) before returning the gf. + return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) + + def to_gf(self, gf): + """ + Unpack the boxplot data into GraphFrame object. + + Note: In this case, only the hatchet.dataframe will be updated, with + hatchet.Graph being the same as the input gf. + + Arguments: + gf: (hatchet.GraphFrame) GraphFrame + + Return: + (dict) : { + "metric": hatchet.GraphFrame, ... + } + """ + return { + metric: self._to_gf_by_metric(gf, metric) + for metric in self.metrics + } From 47e46c0f02da943569d6dc0a2150933410170a6b Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 09:34:09 -0700 Subject: [PATCH 11/29] Ensure the implementation works --- .../performance_variability_boxplots.ipynb | 2932 +++++++++++++++++ hatchet/util/boxplot.py | 67 +- 2 files changed, 2964 insertions(+), 35 deletions(-) create mode 100644 docs/examples/tutorial/performance_variability_boxplots.ipynb diff --git a/docs/examples/tutorial/performance_variability_boxplots.ipynb b/docs/examples/tutorial/performance_variability_boxplots.ipynb new file mode 100644 index 00000000..3ba57cc3 --- /dev/null +++ b/docs/examples/tutorial/performance_variability_boxplots.ipynb @@ -0,0 +1,2932 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Performance Variability Boxplots\n", + "\n", + "Performance variability boxplots provide an insight into the runtime distribution and its varibility across callsites. Boxplots are calculated to represent the range of the distribution and outliers (dots) correspond which are beyond the 1.5*IQR. Additionally, several statistical measures like mean, variance, kurtosis, skewness are also provided." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os, sys\n", + "from IPython.display import HTML, display\n", + "\n", + "# Hatchet imports\n", + "import hatchet as ht\n", + "from hatchet.util.unify_ensemble import unify_ensemble\n", + "from hatchet.util.boxplot import BoxPlot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will construct a **hatchet.GraphFrame** using a sample dataset in our repository, **caliper-lulesh-json**. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "data_dir = os.path.realpath(\"../../../hatchet/tests/data\")\n", + "data_path = os.path.join(data_dir, \"caliper-lulesh-json/lulesh-annotation-profile.json\")\n", + "\n", + "gf_list = []\n", + "for i in range(10):\n", + " gf = ht.GraphFrame.from_caliper(data_path)\n", + " gf.dataset = \"dset{}\".format(i)\n", + " gf_list.append(gf)\n", + "\n", + "gf_ensemble = unify_ensemble(gf_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namenidtimetime (inc)hatchet_nid
noderankdataset
{'name': 'main', 'type': 'region'}0dset9main0121489.05882425.00
4dset7main0118953.05905595.00
5dset7main0133256.05877613.00
6dset7main0114035.05870933.00
7dset7main0137098.05898724.00
........................
{'name': 'TimeIncrement', 'type': 'region'}1dset3TimeIncrement12212402.0212402.023
2dset3TimeIncrement12171635.0171635.023
3dset3TimeIncrement12323519.0323519.023
dset5TimeIncrement12323519.0323519.023
7dset0TimeIncrement12540.0540.023
\n", + "

1920 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " name nid \\\n", + "node rank dataset \n", + "{'name': 'main', 'type': 'region'} 0 dset9 main 0 \n", + " 4 dset7 main 0 \n", + " 5 dset7 main 0 \n", + " 6 dset7 main 0 \n", + " 7 dset7 main 0 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 1 dset3 TimeIncrement 12 \n", + " 2 dset3 TimeIncrement 12 \n", + " 3 dset3 TimeIncrement 12 \n", + " dset5 TimeIncrement 12 \n", + " 7 dset0 TimeIncrement 12 \n", + "\n", + " time \\\n", + "node rank dataset \n", + "{'name': 'main', 'type': 'region'} 0 dset9 121489.0 \n", + " 4 dset7 118953.0 \n", + " 5 dset7 133256.0 \n", + " 6 dset7 114035.0 \n", + " 7 dset7 137098.0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 1 dset3 212402.0 \n", + " 2 dset3 171635.0 \n", + " 3 dset3 323519.0 \n", + " dset5 323519.0 \n", + " 7 dset0 540.0 \n", + "\n", + " time (inc) \\\n", + "node rank dataset \n", + "{'name': 'main', 'type': 'region'} 0 dset9 5882425.0 \n", + " 4 dset7 5905595.0 \n", + " 5 dset7 5877613.0 \n", + " 6 dset7 5870933.0 \n", + " 7 dset7 5898724.0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 1 dset3 212402.0 \n", + " 2 dset3 171635.0 \n", + " 3 dset3 323519.0 \n", + " dset5 323519.0 \n", + " 7 dset0 540.0 \n", + "\n", + " hatchet_nid \n", + "node rank dataset \n", + "{'name': 'main', 'type': 'region'} 0 dset9 0 \n", + " 4 dset7 0 \n", + " 5 dset7 0 \n", + " 6 dset7 0 \n", + " 7 dset7 0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 1 dset3 23 \n", + " 2 dset3 23 \n", + " 3 dset3 23 \n", + " dset5 23 \n", + " 7 dset0 23 \n", + "\n", + "[1920 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_ensemble.dataframe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, using the **hatchet.GraphFrame**, we can calculate the data required for performance variability boxplot using an exposed hatchet API, **Boxplot**.\n", + "\n", + "The interface excepts the following attributes:\n", + "1. `tgt_gf` - Target hatchet.GraphFrame \n", + "2. `bkg_gf` - Background hatchet.GraphFrame (optional)\n", + "3. `callsites` - List of callsite names for which we want to compute/visualize the boxplots.\n", + "4. `metrics` - Runtime metrics for which we need to calculate the boxplots.\n", + "5. `iqr_scale` - Interquartile range scale (by default = 1.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dataset']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3361: PerformanceWarning: indexing past lexsort depth may impact performance.\n", + " if (await self.run_code(code, result, async_=asy)):\n" + ] + } + ], + "source": [ + "from pyinstrument import Profiler\n", + "bp = BoxPlot(cat_column='rank', multi_index_gf=gf_ensemble, metrics=[\"time\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Boxplot** API calculates the results and stores as a GraphFrames in a dictionary (i.e., `tgt` and `bkg`). " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nidnameqminmaxmeanvarimbkurtskew
noderank
{'name': 'main', 'type': 'region'}00main[121489.0, 121489.0, 121489.0, 121489.0, 12148...121489.0121489.0121489.00.00.0-3.00.0
40main[118953.0, 118953.0, 118953.0, 118953.0, 11895...118953.0118953.0118953.00.00.0-3.00.0
50main[133256.0, 133256.0, 133256.0, 133256.0, 13325...133256.0133256.0133256.00.00.0-3.00.0
60main[114035.0, 114035.0, 114035.0, 114035.0, 11403...114035.0114035.0114035.00.00.0-3.00.0
70main[137098.0, 137098.0, 137098.0, 137098.0, 13709...137098.0137098.0137098.00.00.0-3.00.0
....................................
{'name': 'TimeIncrement', 'type': 'region'}212TimeIncrement[171635.0, 171635.0, 171635.0, 171635.0, 17163...171635.0171635.0171635.00.00.0-3.00.0
112TimeIncrement[212402.0, 212402.0, 212402.0, 212402.0, 21240...212402.0212402.0212402.00.00.0-3.00.0
012TimeIncrement[418469.0, 418469.0, 418469.0, 418469.0, 41846...418469.0418469.0418469.00.00.0-3.00.0
712TimeIncrement[540.0, 540.0, 540.0, 540.0, 540.0]540.0540.0540.00.00.0-3.00.0
612TimeIncrement[423809.0, 423809.0, 423809.0, 423809.0, 42380...423809.0423809.0423809.00.00.0-3.00.0
\n", + "

192 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " nid name \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0 main \n", + " 4 0 main \n", + " 5 0 main \n", + " 6 0 main \n", + " 7 0 main \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 12 TimeIncrement \n", + " 1 12 TimeIncrement \n", + " 0 12 TimeIncrement \n", + " 7 12 TimeIncrement \n", + " 6 12 TimeIncrement \n", + "\n", + " q \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 [121489.0, 121489.0, 121489.0, 121489.0, 12148... \n", + " 4 [118953.0, 118953.0, 118953.0, 118953.0, 11895... \n", + " 5 [133256.0, 133256.0, 133256.0, 133256.0, 13325... \n", + " 6 [114035.0, 114035.0, 114035.0, 114035.0, 11403... \n", + " 7 [137098.0, 137098.0, 137098.0, 137098.0, 13709... \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 [171635.0, 171635.0, 171635.0, 171635.0, 17163... \n", + " 1 [212402.0, 212402.0, 212402.0, 212402.0, 21240... \n", + " 0 [418469.0, 418469.0, 418469.0, 418469.0, 41846... \n", + " 7 [540.0, 540.0, 540.0, 540.0, 540.0] \n", + " 6 [423809.0, 423809.0, 423809.0, 423809.0, 42380... \n", + "\n", + " min max \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 121489.0 121489.0 \n", + " 4 118953.0 118953.0 \n", + " 5 133256.0 133256.0 \n", + " 6 114035.0 114035.0 \n", + " 7 137098.0 137098.0 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 171635.0 \n", + " 1 212402.0 212402.0 \n", + " 0 418469.0 418469.0 \n", + " 7 540.0 540.0 \n", + " 6 423809.0 423809.0 \n", + "\n", + " mean var imb kurt \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 121489.0 0.0 0.0 -3.0 \n", + " 4 118953.0 0.0 0.0 -3.0 \n", + " 5 133256.0 0.0 0.0 -3.0 \n", + " 6 114035.0 0.0 0.0 -3.0 \n", + " 7 137098.0 0.0 0.0 -3.0 \n", + "... ... ... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 0.0 0.0 -3.0 \n", + " 1 212402.0 0.0 0.0 -3.0 \n", + " 0 418469.0 0.0 0.0 -3.0 \n", + " 7 540.0 0.0 0.0 -3.0 \n", + " 6 423809.0 0.0 0.0 -3.0 \n", + "\n", + " skew \n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0.0 \n", + " 4 0.0 \n", + " 5 0.0 \n", + " 6 0.0 \n", + " 7 0.0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 0.0 \n", + " 1 0.0 \n", + " 0 0.0 \n", + " 7 0.0 \n", + " 6 0.0 \n", + "\n", + "[192 rows x 10 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bp.gf['time'].dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "MultiIndex: 192 entries, (Node({'name': 'main', 'type': 'region'}), 0) to (Node({'name': 'TimeIncrement', 'type': 'region'}), 6)\n", + "Data columns (total 10 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 nid 192 non-null int64 \n", + " 1 name 192 non-null object \n", + " 2 q 192 non-null object \n", + " 3 min 192 non-null float64\n", + " 4 max 192 non-null float64\n", + " 5 mean 192 non-null float64\n", + " 6 var 192 non-null float64\n", + " 7 imb 192 non-null float64\n", + " 8 kurt 192 non-null float64\n", + " 9 skew 192 non-null float64\n", + "dtypes: float64(7), int64(1), object(2)\n", + "memory usage: 16.6+ KB\n" + ] + } + ], + "source": [ + "bp.gf['time'].dataframe.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the **roundtrip** interface, we can then visualize the compute boxplot information. Below, we load the roundtrip interface that allows users to visualize plots on jupyter notebook cells directly. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# This is the relative path from the notebook to Roundtrip files in hatchet/external/roundtrip/\n", + "roundtrip_path = '../../../hatchet/external/roundtrip/'\n", + "hatchet_path = \".\"\n", + "\n", + "# Add the path so that the notebook can find the Roundtrip extension\n", + "module_path = os.path.abspath(os.path.join(roundtrip_path)) \n", + "if module_path not in sys.path:\n", + " sys.path.append(module_path)\n", + " sys.path.append(hatchet_path)\n", + "\n", + " \n", + "# Uncomment this line to widen the cells to handle large trees \n", + "#display(HTML(\"\"))\n", + "\n", + "# Load the Roundtrip extension. This only needs to be loaded once.\n", + "%load_ext roundtrip" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since **roundtrip** excepts the data in JSON format, **Boxplot** API exposes a method, `to_json()` which will dump the boxplot's graphframes (i.e., `tgt` and `bkg`) in JSON." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "bp_json = bp.to_json()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(0,\n", + " 0): {'time': {'name': 'main',\n", + " 'q': [121489.0, 121489.0, 121489.0, 121489.0, 121489.0],\n", + " 'min': 121489.0,\n", + " 'max': 121489.0,\n", + " 'mean': 121489.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 4): {'time': {'name': 'main',\n", + " 'q': [118953.0, 118953.0, 118953.0, 118953.0, 118953.0],\n", + " 'min': 118953.0,\n", + " 'max': 118953.0,\n", + " 'mean': 118953.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 5): {'time': {'name': 'main',\n", + " 'q': [133256.0, 133256.0, 133256.0, 133256.0, 133256.0],\n", + " 'min': 133256.0,\n", + " 'max': 133256.0,\n", + " 'mean': 133256.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 6): {'time': {'name': 'main',\n", + " 'q': [114035.0, 114035.0, 114035.0, 114035.0, 114035.0],\n", + " 'min': 114035.0,\n", + " 'max': 114035.0,\n", + " 'mean': 114035.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 7): {'time': {'name': 'main',\n", + " 'q': [137098.0, 137098.0, 137098.0, 137098.0, 137098.0],\n", + " 'min': 137098.0,\n", + " 'max': 137098.0,\n", + " 'mean': 137098.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 3): {'time': {'name': 'main',\n", + " 'q': [113830.0, 113830.0, 113830.0, 113830.0, 113830.0],\n", + " 'min': 113830.0,\n", + " 'max': 113830.0,\n", + " 'mean': 113830.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 2): {'time': {'name': 'main',\n", + " 'q': [110799.0, 110799.0, 110799.0, 110799.0, 110799.0],\n", + " 'min': 110799.0,\n", + " 'max': 110799.0,\n", + " 'mean': 110799.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (0,\n", + " 1): {'time': {'name': 'main',\n", + " 'q': [105528.0, 105528.0, 105528.0, 105528.0, 105528.0],\n", + " 'min': 105528.0,\n", + " 'max': 105528.0,\n", + " 'mean': 105528.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " (1,\n", + " 7): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [543.0, 543.0, 543.0, 543.0, 543.0],\n", + " 'min': 543.0,\n", + " 'max': 543.0,\n", + " 'mean': 543.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 0): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [528.0, 528.0, 528.0, 528.0, 528.0],\n", + " 'min': 528.0,\n", + " 'max': 528.0,\n", + " 'mean': 528.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 1): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [499.0, 499.0, 499.0, 499.0, 499.0],\n", + " 'min': 499.0,\n", + " 'max': 499.0,\n", + " 'mean': 499.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 4): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [513.0, 513.0, 513.0, 513.0, 513.0],\n", + " 'min': 513.0,\n", + " 'max': 513.0,\n", + " 'mean': 513.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 3): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [511.0, 511.0, 511.0, 511.0, 511.0],\n", + " 'min': 511.0,\n", + " 'max': 511.0,\n", + " 'mean': 511.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 6): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [525.0, 525.0, 525.0, 525.0, 525.0],\n", + " 'min': 525.0,\n", + " 'max': 525.0,\n", + " 'mean': 525.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 5): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [517.0, 517.0, 517.0, 517.0, 517.0],\n", + " 'min': 517.0,\n", + " 'max': 517.0,\n", + " 'mean': 517.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (1,\n", + " 2): {'time': {'name': 'LagrangeLeapFrog',\n", + " 'q': [3520.0, 3520.0, 3520.0, 3520.0, 3520.0],\n", + " 'min': 3520.0,\n", + " 'max': 3520.0,\n", + " 'mean': 3520.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " (9,\n", + " 0): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [21493.0, 21493.0, 21493.0, 21493.0, 21493.0],\n", + " 'min': 21493.0,\n", + " 'max': 21493.0,\n", + " 'mean': 21493.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 4): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [2321.0, 2321.0, 2321.0, 2321.0, 2321.0],\n", + " 'min': 2321.0,\n", + " 'max': 2321.0,\n", + " 'mean': 2321.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 6): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [14203.0, 14203.0, 14203.0, 14203.0, 14203.0],\n", + " 'min': 14203.0,\n", + " 'max': 14203.0,\n", + " 'mean': 14203.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 5): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [2828.0, 2828.0, 2828.0, 2828.0, 2828.0],\n", + " 'min': 2828.0,\n", + " 'max': 2828.0,\n", + " 'mean': 2828.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 3): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [10194.0, 10194.0, 10194.0, 10194.0, 10194.0],\n", + " 'min': 10194.0,\n", + " 'max': 10194.0,\n", + " 'mean': 10194.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 1): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [2745.0, 2745.0, 2745.0, 2745.0, 2745.0],\n", + " 'min': 2745.0,\n", + " 'max': 2745.0,\n", + " 'mean': 2745.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 2): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [2758.0, 2758.0, 2758.0, 2758.0, 2758.0],\n", + " 'min': 2758.0,\n", + " 'max': 2758.0,\n", + " 'mean': 2758.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (9,\n", + " 7): {'time': {'name': 'CalcTimeConstraintsForElems',\n", + " 'q': [2970.0, 2970.0, 2970.0, 2970.0, 2970.0],\n", + " 'min': 2970.0,\n", + " 'max': 2970.0,\n", + " 'mean': 2970.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", + " (10,\n", + " 2): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [16695.0, 16695.0, 16695.0, 16695.0, 16695.0],\n", + " 'min': 16695.0,\n", + " 'max': 16695.0,\n", + " 'mean': 16695.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 1): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [17558.0, 17558.0, 17558.0, 17558.0, 17558.0],\n", + " 'min': 17558.0,\n", + " 'max': 17558.0,\n", + " 'mean': 17558.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 0): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [85866.0, 85866.0, 85866.0, 85866.0, 85866.0],\n", + " 'min': 85866.0,\n", + " 'max': 85866.0,\n", + " 'mean': 85866.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 3): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [25658.0, 25658.0, 25658.0, 25658.0, 25658.0],\n", + " 'min': 25658.0,\n", + " 'max': 25658.0,\n", + " 'mean': 25658.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 4): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [17195.0, 17195.0, 17195.0, 17195.0, 17195.0],\n", + " 'min': 17195.0,\n", + " 'max': 17195.0,\n", + " 'mean': 17195.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 5): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [21244.0, 21244.0, 21244.0, 21244.0, 21244.0],\n", + " 'min': 21244.0,\n", + " 'max': 21244.0,\n", + " 'mean': 21244.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 6): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [30246.0, 30246.0, 30246.0, 30246.0, 30246.0],\n", + " 'min': 30246.0,\n", + " 'max': 30246.0,\n", + " 'mean': 30246.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (10,\n", + " 7): {'time': {'name': 'CalcCourantConstraintForElems',\n", + " 'q': [16865.0, 16865.0, 16865.0, 16865.0, 16865.0],\n", + " 'min': 16865.0,\n", + " 'max': 16865.0,\n", + " 'mean': 16865.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 7): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [4906.0, 4906.0, 4906.0, 4906.0, 4906.0],\n", + " 'min': 4906.0,\n", + " 'max': 4906.0,\n", + " 'mean': 4906.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 0): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [29653.0, 29653.0, 29653.0, 29653.0, 29653.0],\n", + " 'min': 29653.0,\n", + " 'max': 29653.0,\n", + " 'mean': 29653.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 5): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [5628.0, 5628.0, 5628.0, 5628.0, 5628.0],\n", + " 'min': 5628.0,\n", + " 'max': 5628.0,\n", + " 'mean': 5628.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 4): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [4600.0, 4600.0, 4600.0, 4600.0, 4600.0],\n", + " 'min': 4600.0,\n", + " 'max': 4600.0,\n", + " 'mean': 4600.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 3): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [4781.0, 4781.0, 4781.0, 4781.0, 4781.0],\n", + " 'min': 4781.0,\n", + " 'max': 4781.0,\n", + " 'mean': 4781.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 2): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [4658.0, 4658.0, 4658.0, 4658.0, 4658.0],\n", + " 'min': 4658.0,\n", + " 'max': 4658.0,\n", + " 'mean': 4658.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 1): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [4523.0, 4523.0, 4523.0, 4523.0, 4523.0],\n", + " 'min': 4523.0,\n", + " 'max': 4523.0,\n", + " 'mean': 4523.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (11,\n", + " 6): {'time': {'name': 'CalcHydroConstraintForElems',\n", + " 'q': [23674.0, 23674.0, 23674.0, 23674.0, 23674.0],\n", + " 'min': 23674.0,\n", + " 'max': 23674.0,\n", + " 'mean': 23674.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " (2,\n", + " 3): {'time': {'name': 'LagrangeElements',\n", + " 'q': [670.0, 670.0, 670.0, 670.0, 670.0],\n", + " 'min': 670.0,\n", + " 'max': 670.0,\n", + " 'mean': 670.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 2): {'time': {'name': 'LagrangeElements',\n", + " 'q': [923.0, 923.0, 923.0, 923.0, 923.0],\n", + " 'min': 923.0,\n", + " 'max': 923.0,\n", + " 'mean': 923.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 1): {'time': {'name': 'LagrangeElements',\n", + " 'q': [656.0, 656.0, 656.0, 656.0, 656.0],\n", + " 'min': 656.0,\n", + " 'max': 656.0,\n", + " 'mean': 656.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 0): {'time': {'name': 'LagrangeElements',\n", + " 'q': [663.0, 663.0, 663.0, 663.0, 663.0],\n", + " 'min': 663.0,\n", + " 'max': 663.0,\n", + " 'mean': 663.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 4): {'time': {'name': 'LagrangeElements',\n", + " 'q': [675.0, 675.0, 675.0, 675.0, 675.0],\n", + " 'min': 675.0,\n", + " 'max': 675.0,\n", + " 'mean': 675.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 5): {'time': {'name': 'LagrangeElements',\n", + " 'q': [664.0, 664.0, 664.0, 664.0, 664.0],\n", + " 'min': 664.0,\n", + " 'max': 664.0,\n", + " 'mean': 664.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 7): {'time': {'name': 'LagrangeElements',\n", + " 'q': [832.0, 832.0, 832.0, 832.0, 832.0],\n", + " 'min': 832.0,\n", + " 'max': 832.0,\n", + " 'mean': 832.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (2,\n", + " 6): {'time': {'name': 'LagrangeElements',\n", + " 'q': [628.0, 628.0, 628.0, 628.0, 628.0],\n", + " 'min': 628.0,\n", + " 'max': 628.0,\n", + " 'mean': 628.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " (3,\n", + " 5): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [11505.0, 11505.0, 11505.0, 11505.0, 11505.0],\n", + " 'min': 11505.0,\n", + " 'max': 11505.0,\n", + " 'mean': 11505.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 6): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [22583.0, 22583.0, 22583.0, 22583.0, 22583.0],\n", + " 'min': 22583.0,\n", + " 'max': 22583.0,\n", + " 'mean': 22583.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 7): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [13609.0, 13609.0, 13609.0, 13609.0, 13609.0],\n", + " 'min': 13609.0,\n", + " 'max': 13609.0,\n", + " 'mean': 13609.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 0): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [14072.0, 14072.0, 14072.0, 14072.0, 14072.0],\n", + " 'min': 14072.0,\n", + " 'max': 14072.0,\n", + " 'mean': 14072.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 2): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [13643.0, 13643.0, 13643.0, 13643.0, 13643.0],\n", + " 'min': 13643.0,\n", + " 'max': 13643.0,\n", + " 'mean': 13643.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 3): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [13171.0, 13171.0, 13171.0, 13171.0, 13171.0],\n", + " 'min': 13171.0,\n", + " 'max': 13171.0,\n", + " 'mean': 13171.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 4): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [12643.0, 12643.0, 12643.0, 12643.0, 12643.0],\n", + " 'min': 12643.0,\n", + " 'max': 12643.0,\n", + " 'mean': 12643.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (3,\n", + " 1): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", + " 'q': [12107.0, 12107.0, 12107.0, 12107.0, 12107.0],\n", + " 'min': 12107.0,\n", + " 'max': 12107.0,\n", + " 'mean': 12107.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " (4,\n", + " 6): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [162868.0, 162868.0, 162868.0, 162868.0, 162868.0],\n", + " 'min': 162868.0,\n", + " 'max': 162868.0,\n", + " 'mean': 162868.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 7): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [244580.0, 244580.0, 244580.0, 244580.0, 244580.0],\n", + " 'min': 244580.0,\n", + " 'max': 244580.0,\n", + " 'mean': 244580.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 5): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [190093.0, 190093.0, 190093.0, 190093.0, 190093.0],\n", + " 'min': 190093.0,\n", + " 'max': 190093.0,\n", + " 'mean': 190093.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 0): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [244008.0, 244008.0, 244008.0, 244008.0, 244008.0],\n", + " 'min': 244008.0,\n", + " 'max': 244008.0,\n", + " 'mean': 244008.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 3): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [235964.0, 235964.0, 235964.0, 235964.0, 235964.0],\n", + " 'min': 235964.0,\n", + " 'max': 235964.0,\n", + " 'mean': 235964.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 2): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [305500.0, 305500.0, 305500.0, 305500.0, 305500.0],\n", + " 'min': 305500.0,\n", + " 'max': 305500.0,\n", + " 'mean': 305500.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 1): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [261646.0, 261646.0, 261646.0, 261646.0, 261646.0],\n", + " 'min': 261646.0,\n", + " 'max': 261646.0,\n", + " 'mean': 261646.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (4,\n", + " 4): {'time': {'name': 'EvalEOSForElems',\n", + " 'q': [393451.0, 393451.0, 393451.0, 393451.0, 393451.0],\n", + " 'min': 393451.0,\n", + " 'max': 393451.0,\n", + " 'mean': 393451.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " (5,\n", + " 3): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [229266.0, 229266.0, 229266.0, 229266.0, 229266.0],\n", + " 'min': 229266.0,\n", + " 'max': 229266.0,\n", + " 'mean': 229266.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 4): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [340746.0, 340746.0, 340746.0, 340746.0, 340746.0],\n", + " 'min': 340746.0,\n", + " 'max': 340746.0,\n", + " 'mean': 340746.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 5): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [214592.0, 214592.0, 214592.0, 214592.0, 214592.0],\n", + " 'min': 214592.0,\n", + " 'max': 214592.0,\n", + " 'mean': 214592.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 6): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [148668.0, 148668.0, 148668.0, 148668.0, 148668.0],\n", + " 'min': 148668.0,\n", + " 'max': 148668.0,\n", + " 'mean': 148668.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 2): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [352694.0, 352694.0, 352694.0, 352694.0, 352694.0],\n", + " 'min': 352694.0,\n", + " 'max': 352694.0,\n", + " 'mean': 352694.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 7): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [426729.0, 426729.0, 426729.0, 426729.0, 426729.0],\n", + " 'min': 426729.0,\n", + " 'max': 426729.0,\n", + " 'mean': 426729.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 1): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [365612.0, 365612.0, 365612.0, 365612.0, 365612.0],\n", + " 'min': 365612.0,\n", + " 'max': 365612.0,\n", + " 'mean': 365612.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (5,\n", + " 0): {'time': {'name': 'CalcEnergyForElems',\n", + " 'q': [222116.0, 222116.0, 222116.0, 222116.0, 222116.0],\n", + " 'min': 222116.0,\n", + " 'max': 222116.0,\n", + " 'mean': 222116.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " (6,\n", + " 1): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [218047.0, 218047.0, 218047.0, 218047.0, 218047.0],\n", + " 'min': 218047.0,\n", + " 'max': 218047.0,\n", + " 'mean': 218047.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 0): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [188615.0, 188615.0, 188615.0, 188615.0, 188615.0],\n", + " 'min': 188615.0,\n", + " 'max': 188615.0,\n", + " 'mean': 188615.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 6): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [122300.0, 122300.0, 122300.0, 122300.0, 122300.0],\n", + " 'min': 122300.0,\n", + " 'max': 122300.0,\n", + " 'mean': 122300.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 7): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [127732.0, 127732.0, 127732.0, 127732.0, 127732.0],\n", + " 'min': 127732.0,\n", + " 'max': 127732.0,\n", + " 'mean': 127732.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 5): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [152655.0, 152655.0, 152655.0, 152655.0, 152655.0],\n", + " 'min': 152655.0,\n", + " 'max': 152655.0,\n", + " 'mean': 152655.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 2): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [294780.0, 294780.0, 294780.0, 294780.0, 294780.0],\n", + " 'min': 294780.0,\n", + " 'max': 294780.0,\n", + " 'mean': 294780.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 3): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [157734.0, 157734.0, 157734.0, 157734.0, 157734.0],\n", + " 'min': 157734.0,\n", + " 'max': 157734.0,\n", + " 'mean': 157734.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (6,\n", + " 4): {'time': {'name': 'CalcPressureForElems',\n", + " 'q': [157776.0, 157776.0, 157776.0, 157776.0, 157776.0],\n", + " 'min': 157776.0,\n", + " 'max': 157776.0,\n", + " 'mean': 157776.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " (7,\n", + " 0): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [7973.0, 7973.0, 7973.0, 7973.0, 7973.0],\n", + " 'min': 7973.0,\n", + " 'max': 7973.0,\n", + " 'mean': 7973.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 2): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [9894.0, 9894.0, 9894.0, 9894.0, 9894.0],\n", + " 'min': 9894.0,\n", + " 'max': 9894.0,\n", + " 'mean': 9894.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 7): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [11973.0, 11973.0, 11973.0, 11973.0, 11973.0],\n", + " 'min': 11973.0,\n", + " 'max': 11973.0,\n", + " 'mean': 11973.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 6): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [7979.0, 7979.0, 7979.0, 7979.0, 7979.0],\n", + " 'min': 7979.0,\n", + " 'max': 7979.0,\n", + " 'mean': 7979.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 5): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [7737.0, 7737.0, 7737.0, 7737.0, 7737.0],\n", + " 'min': 7737.0,\n", + " 'max': 7737.0,\n", + " 'mean': 7737.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 4): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [9177.0, 9177.0, 9177.0, 9177.0, 9177.0],\n", + " 'min': 9177.0,\n", + " 'max': 9177.0,\n", + " 'mean': 9177.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 1): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [8127.0, 8127.0, 8127.0, 8127.0, 8127.0],\n", + " 'min': 8127.0,\n", + " 'max': 8127.0,\n", + " 'mean': 8127.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (7,\n", + " 3): {'time': {'name': 'CalcSoundSpeedForElems',\n", + " 'q': [8070.0, 8070.0, 8070.0, 8070.0, 8070.0],\n", + " 'min': 8070.0,\n", + " 'max': 8070.0,\n", + " 'mean': 8070.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " (19,\n", + " 1): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [25449.0, 25449.0, 25449.0, 25449.0, 25449.0],\n", + " 'min': 25449.0,\n", + " 'max': 25449.0,\n", + " 'mean': 25449.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 4): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [23064.0, 23064.0, 23064.0, 23064.0, 23064.0],\n", + " 'min': 23064.0,\n", + " 'max': 23064.0,\n", + " 'mean': 23064.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 5): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [23281.0, 23281.0, 23281.0, 23281.0, 23281.0],\n", + " 'min': 23281.0,\n", + " 'max': 23281.0,\n", + " 'mean': 23281.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 0): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [21891.0, 21891.0, 21891.0, 21891.0, 21891.0],\n", + " 'min': 21891.0,\n", + " 'max': 21891.0,\n", + " 'mean': 21891.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 3): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [22109.0, 22109.0, 22109.0, 22109.0, 22109.0],\n", + " 'min': 22109.0,\n", + " 'max': 22109.0,\n", + " 'mean': 22109.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 6): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [22362.0, 22362.0, 22362.0, 22362.0, 22362.0],\n", + " 'min': 22362.0,\n", + " 'max': 22362.0,\n", + " 'mean': 22362.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 7): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [22494.0, 22494.0, 22494.0, 22494.0, 22494.0],\n", + " 'min': 22494.0,\n", + " 'max': 22494.0,\n", + " 'mean': 22494.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (19,\n", + " 2): {'time': {'name': 'CalcLagrangeElements',\n", + " 'q': [33090.0, 33090.0, 33090.0, 33090.0, 33090.0],\n", + " 'min': 33090.0,\n", + " 'max': 33090.0,\n", + " 'mean': 33090.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " (20,\n", + " 2): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [853294.0, 853294.0, 853294.0, 853294.0, 853294.0],\n", + " 'min': 853294.0,\n", + " 'max': 853294.0,\n", + " 'mean': 853294.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 4): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [907675.0, 907675.0, 907675.0, 907675.0, 907675.0],\n", + " 'min': 907675.0,\n", + " 'max': 907675.0,\n", + " 'mean': 907675.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 5): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [623934.0, 623934.0, 623934.0, 623934.0, 623934.0],\n", + " 'min': 623934.0,\n", + " 'max': 623934.0,\n", + " 'mean': 623934.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 1): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [896981.0, 896981.0, 896981.0, 896981.0, 896981.0],\n", + " 'min': 896981.0,\n", + " 'max': 896981.0,\n", + " 'mean': 896981.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 0): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [642566.0, 642566.0, 642566.0, 642566.0, 642566.0],\n", + " 'min': 642566.0,\n", + " 'max': 642566.0,\n", + " 'mean': 642566.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 3): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [667751.0, 667751.0, 667751.0, 667751.0, 667751.0],\n", + " 'min': 667751.0,\n", + " 'max': 667751.0,\n", + " 'mean': 667751.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 7): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [840333.0, 840333.0, 840333.0, 840333.0, 840333.0],\n", + " 'min': 840333.0,\n", + " 'max': 840333.0,\n", + " 'mean': 840333.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (20,\n", + " 6): {'time': {'name': 'CalcKinematicsForElems',\n", + " 'q': [493338.0, 493338.0, 493338.0, 493338.0, 493338.0],\n", + " 'min': 493338.0,\n", + " 'max': 493338.0,\n", + " 'mean': 493338.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " (21,\n", + " 4): {'time': {'name': 'CalcQForElems',\n", + " 'q': [91947.0, 91947.0, 91947.0, 91947.0, 91947.0],\n", + " 'min': 91947.0,\n", + " 'max': 91947.0,\n", + " 'mean': 91947.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 3): {'time': {'name': 'CalcQForElems',\n", + " 'q': [345305.0, 345305.0, 345305.0, 345305.0, 345305.0],\n", + " 'min': 345305.0,\n", + " 'max': 345305.0,\n", + " 'mean': 345305.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 2): {'time': {'name': 'CalcQForElems',\n", + " 'q': [119519.0, 119519.0, 119519.0, 119519.0, 119519.0],\n", + " 'min': 119519.0,\n", + " 'max': 119519.0,\n", + " 'mean': 119519.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 1): {'time': {'name': 'CalcQForElems',\n", + " 'q': [207886.0, 207886.0, 207886.0, 207886.0, 207886.0],\n", + " 'min': 207886.0,\n", + " 'max': 207886.0,\n", + " 'mean': 207886.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 6): {'time': {'name': 'CalcQForElems',\n", + " 'q': [480632.0, 480632.0, 480632.0, 480632.0, 480632.0],\n", + " 'min': 480632.0,\n", + " 'max': 480632.0,\n", + " 'mean': 480632.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 0): {'time': {'name': 'CalcQForElems',\n", + " 'q': [356717.0, 356717.0, 356717.0, 356717.0, 356717.0],\n", + " 'min': 356717.0,\n", + " 'max': 356717.0,\n", + " 'mean': 356717.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 5): {'time': {'name': 'CalcQForElems',\n", + " 'q': [448598.0, 448598.0, 448598.0, 448598.0, 448598.0],\n", + " 'min': 448598.0,\n", + " 'max': 448598.0,\n", + " 'mean': 448598.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (21,\n", + " 7): {'time': {'name': 'CalcQForElems',\n", + " 'q': [204809.0, 204809.0, 204809.0, 204809.0, 204809.0],\n", + " 'min': 204809.0,\n", + " 'max': 204809.0,\n", + " 'mean': 204809.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " (22,\n", + " 7): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [371161.0, 371161.0, 371161.0, 371161.0, 371161.0],\n", + " 'min': 371161.0,\n", + " 'max': 371161.0,\n", + " 'mean': 371161.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 6): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [445067.0, 445067.0, 445067.0, 445067.0, 445067.0],\n", + " 'min': 445067.0,\n", + " 'max': 445067.0,\n", + " 'mean': 445067.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 5): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [448753.0, 448753.0, 448753.0, 448753.0, 448753.0],\n", + " 'min': 448753.0,\n", + " 'max': 448753.0,\n", + " 'mean': 448753.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 4): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [363349.0, 363349.0, 363349.0, 363349.0, 363349.0],\n", + " 'min': 363349.0,\n", + " 'max': 363349.0,\n", + " 'mean': 363349.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 3): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [412746.0, 412746.0, 412746.0, 412746.0, 412746.0],\n", + " 'min': 412746.0,\n", + " 'max': 412746.0,\n", + " 'mean': 412746.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 1): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [326522.0, 326522.0, 326522.0, 326522.0, 326522.0],\n", + " 'min': 326522.0,\n", + " 'max': 326522.0,\n", + " 'mean': 326522.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 0): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [431829.0, 431829.0, 431829.0, 431829.0, 431829.0],\n", + " 'min': 431829.0,\n", + " 'max': 431829.0,\n", + " 'mean': 431829.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (22,\n", + " 2): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", + " 'q': [349038.0, 349038.0, 349038.0, 349038.0, 349038.0],\n", + " 'min': 349038.0,\n", + " 'max': 349038.0,\n", + " 'mean': 349038.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " (23,\n", + " 6): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [155072.0, 155072.0, 155072.0, 155072.0, 155072.0],\n", + " 'min': 155072.0,\n", + " 'max': 155072.0,\n", + " 'mean': 155072.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 0): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [162256.0, 162256.0, 162256.0, 162256.0, 162256.0],\n", + " 'min': 162256.0,\n", + " 'max': 162256.0,\n", + " 'mean': 162256.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 1): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [238276.0, 238276.0, 238276.0, 238276.0, 238276.0],\n", + " 'min': 238276.0,\n", + " 'max': 238276.0,\n", + " 'mean': 238276.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 7): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [262458.0, 262458.0, 262458.0, 262458.0, 262458.0],\n", + " 'min': 262458.0,\n", + " 'max': 262458.0,\n", + " 'mean': 262458.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 5): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [165478.0, 165478.0, 165478.0, 165478.0, 165478.0],\n", + " 'min': 165478.0,\n", + " 'max': 165478.0,\n", + " 'mean': 165478.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 4): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [241505.0, 241505.0, 241505.0, 241505.0, 241505.0],\n", + " 'min': 241505.0,\n", + " 'max': 241505.0,\n", + " 'mean': 241505.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 3): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [187396.0, 187396.0, 187396.0, 187396.0, 187396.0],\n", + " 'min': 187396.0,\n", + " 'max': 187396.0,\n", + " 'mean': 187396.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (23,\n", + " 2): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", + " 'q': [191604.0, 191604.0, 191604.0, 191604.0, 191604.0],\n", + " 'min': 191604.0,\n", + " 'max': 191604.0,\n", + " 'mean': 191604.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " (8,\n", + " 7): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [6171.0, 6171.0, 6171.0, 6171.0, 6171.0],\n", + " 'min': 6171.0,\n", + " 'max': 6171.0,\n", + " 'mean': 6171.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 2): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [6591.0, 6591.0, 6591.0, 6591.0, 6591.0],\n", + " 'min': 6591.0,\n", + " 'max': 6591.0,\n", + " 'mean': 6591.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 1): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [6445.0, 6445.0, 6445.0, 6445.0, 6445.0],\n", + " 'min': 6445.0,\n", + " 'max': 6445.0,\n", + " 'mean': 6445.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 6): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [42609.0, 42609.0, 42609.0, 42609.0, 42609.0],\n", + " 'min': 42609.0,\n", + " 'max': 42609.0,\n", + " 'mean': 42609.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 5): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [7431.0, 7431.0, 7431.0, 7431.0, 7431.0],\n", + " 'min': 7431.0,\n", + " 'max': 7431.0,\n", + " 'mean': 7431.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 4): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [6854.0, 6854.0, 6854.0, 6854.0, 6854.0],\n", + " 'min': 6854.0,\n", + " 'max': 6854.0,\n", + " 'mean': 6854.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 0): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [16902.0, 16902.0, 16902.0, 16902.0, 16902.0],\n", + " 'min': 16902.0,\n", + " 'max': 16902.0,\n", + " 'mean': 16902.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (8,\n", + " 3): {'time': {'name': 'UpdateVolumesForElems',\n", + " 'q': [6454.0, 6454.0, 6454.0, 6454.0, 6454.0],\n", + " 'min': 6454.0,\n", + " 'max': 6454.0,\n", + " 'mean': 6454.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", + " (13,\n", + " 1): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [252178.0, 252178.0, 252178.0, 252178.0, 252178.0],\n", + " 'min': 252178.0,\n", + " 'max': 252178.0,\n", + " 'mean': 252178.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 0): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [206007.0, 206007.0, 206007.0, 206007.0, 206007.0],\n", + " 'min': 206007.0,\n", + " 'max': 206007.0,\n", + " 'mean': 206007.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 2): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [306392.0, 306392.0, 306392.0, 306392.0, 306392.0],\n", + " 'min': 306392.0,\n", + " 'max': 306392.0,\n", + " 'mean': 306392.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 6): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [280120.0, 280120.0, 280120.0, 280120.0, 280120.0],\n", + " 'min': 280120.0,\n", + " 'max': 280120.0,\n", + " 'mean': 280120.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 7): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [340105.0, 340105.0, 340105.0, 340105.0, 340105.0],\n", + " 'min': 340105.0,\n", + " 'max': 340105.0,\n", + " 'mean': 340105.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 5): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [204412.0, 204412.0, 204412.0, 204412.0, 204412.0],\n", + " 'min': 204412.0,\n", + " 'max': 204412.0,\n", + " 'mean': 204412.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 4): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [239869.0, 239869.0, 239869.0, 239869.0, 239869.0],\n", + " 'min': 239869.0,\n", + " 'max': 239869.0,\n", + " 'mean': 239869.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (13,\n", + " 3): {'time': {'name': 'LagrangeNodal',\n", + " 'q': [246837.0, 246837.0, 246837.0, 246837.0, 246837.0],\n", + " 'min': 246837.0,\n", + " 'max': 246837.0,\n", + " 'mean': 246837.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", + " (14,\n", + " 4): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [168395.0, 168395.0, 168395.0, 168395.0, 168395.0],\n", + " 'min': 168395.0,\n", + " 'max': 168395.0,\n", + " 'mean': 168395.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 0): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [411190.0, 411190.0, 411190.0, 411190.0, 411190.0],\n", + " 'min': 411190.0,\n", + " 'max': 411190.0,\n", + " 'mean': 411190.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 6): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [537984.0, 537984.0, 537984.0, 537984.0, 537984.0],\n", + " 'min': 537984.0,\n", + " 'max': 537984.0,\n", + " 'mean': 537984.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 7): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [190604.0, 190604.0, 190604.0, 190604.0, 190604.0],\n", + " 'min': 190604.0,\n", + " 'max': 190604.0,\n", + " 'mean': 190604.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 1): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [140031.0, 140031.0, 140031.0, 140031.0, 140031.0],\n", + " 'min': 140031.0,\n", + " 'max': 140031.0,\n", + " 'mean': 140031.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 2): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [126085.0, 126085.0, 126085.0, 126085.0, 126085.0],\n", + " 'min': 126085.0,\n", + " 'max': 126085.0,\n", + " 'mean': 126085.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 3): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [379447.0, 379447.0, 379447.0, 379447.0, 379447.0],\n", + " 'min': 379447.0,\n", + " 'max': 379447.0,\n", + " 'mean': 379447.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (14,\n", + " 5): {'time': {'name': 'CalcForceForNodes',\n", + " 'q': [408344.0, 408344.0, 408344.0, 408344.0, 408344.0],\n", + " 'min': 408344.0,\n", + " 'max': 408344.0,\n", + " 'mean': 408344.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", + " (15,\n", + " 1): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [8339.0, 8339.0, 8339.0, 8339.0, 8339.0],\n", + " 'min': 8339.0,\n", + " 'max': 8339.0,\n", + " 'mean': 8339.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 0): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [8780.0, 8780.0, 8780.0, 8780.0, 8780.0],\n", + " 'min': 8780.0,\n", + " 'max': 8780.0,\n", + " 'mean': 8780.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 3): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [9174.0, 9174.0, 9174.0, 9174.0, 9174.0],\n", + " 'min': 9174.0,\n", + " 'max': 9174.0,\n", + " 'mean': 9174.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 2): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [13261.0, 13261.0, 13261.0, 13261.0, 13261.0],\n", + " 'min': 13261.0,\n", + " 'max': 13261.0,\n", + " 'mean': 13261.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 4): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [18019.0, 18019.0, 18019.0, 18019.0, 18019.0],\n", + " 'min': 18019.0,\n", + " 'max': 18019.0,\n", + " 'mean': 18019.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 5): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [8653.0, 8653.0, 8653.0, 8653.0, 8653.0],\n", + " 'min': 8653.0,\n", + " 'max': 8653.0,\n", + " 'mean': 8653.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 6): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [8549.0, 8549.0, 8549.0, 8549.0, 8549.0],\n", + " 'min': 8549.0,\n", + " 'max': 8549.0,\n", + " 'mean': 8549.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (15,\n", + " 7): {'time': {'name': 'CalcVolumeForceForElems',\n", + " 'q': [12193.0, 12193.0, 12193.0, 12193.0, 12193.0],\n", + " 'min': 12193.0,\n", + " 'max': 12193.0,\n", + " 'mean': 12193.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", + " (17,\n", + " 6): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [494580.0, 494580.0, 494580.0, 494580.0, 494580.0],\n", + " 'min': 494580.0,\n", + " 'max': 494580.0,\n", + " 'mean': 494580.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 0): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [597414.0, 597414.0, 597414.0, 597414.0, 597414.0],\n", + " 'min': 597414.0,\n", + " 'max': 597414.0,\n", + " 'mean': 597414.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 1): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [570912.0, 570912.0, 570912.0, 570912.0, 570912.0],\n", + " 'min': 570912.0,\n", + " 'max': 570912.0,\n", + " 'mean': 570912.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 2): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [578433.0, 578433.0, 578433.0, 578433.0, 578433.0],\n", + " 'min': 578433.0,\n", + " 'max': 578433.0,\n", + " 'mean': 578433.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 3): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [586524.0, 586524.0, 586524.0, 586524.0, 586524.0],\n", + " 'min': 586524.0,\n", + " 'max': 586524.0,\n", + " 'mean': 586524.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 4): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [583632.0, 583632.0, 583632.0, 583632.0, 583632.0],\n", + " 'min': 583632.0,\n", + " 'max': 583632.0,\n", + " 'mean': 583632.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 5): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [599077.0, 599077.0, 599077.0, 599077.0, 599077.0],\n", + " 'min': 599077.0,\n", + " 'max': 599077.0,\n", + " 'mean': 599077.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (17,\n", + " 7): {'time': {'name': 'CalcHourglassControlForElems',\n", + " 'q': [583900.0, 583900.0, 583900.0, 583900.0, 583900.0],\n", + " 'min': 583900.0,\n", + " 'max': 583900.0,\n", + " 'mean': 583900.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", + " (18,\n", + " 4): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1144720.0, 1144720.0, 1144720.0, 1144720.0, 1144720.0],\n", + " 'min': 1144720.0,\n", + " 'max': 1144720.0,\n", + " 'mean': 1144720.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 5): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1276744.0, 1276744.0, 1276744.0, 1276744.0, 1276744.0],\n", + " 'min': 1276744.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1276744.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 7): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1088315.0, 1088315.0, 1088315.0, 1088315.0, 1088315.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1088315.0,\n", + " 'mean': 1088315.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 2): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1166060.0, 1166060.0, 1166060.0, 1166060.0, 1166060.0],\n", + " 'min': 1166060.0,\n", + " 'max': 1166060.0,\n", + " 'mean': 1166060.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 1): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1187834.0, 1187834.0, 1187834.0, 1187834.0, 1187834.0],\n", + " 'min': 1187834.0,\n", + " 'max': 1187834.0,\n", + " 'mean': 1187834.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 3): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1222919.0, 1222919.0, 1222919.0, 1222919.0, 1222919.0],\n", + " 'min': 1222919.0,\n", + " 'max': 1222919.0,\n", + " 'mean': 1222919.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 0): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1223331.0, 1223331.0, 1223331.0, 1223331.0, 1223331.0],\n", + " 'min': 1223331.0,\n", + " 'max': 1223331.0,\n", + " 'mean': 1223331.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (18,\n", + " 6): {'time': {'name': 'CalcFBHourglassForceForElems',\n", + " 'q': [1268960.0, 1268960.0, 1268960.0, 1268960.0, 1268960.0],\n", + " 'min': 1268960.0,\n", + " 'max': 1268960.0,\n", + " 'mean': 1268960.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", + " (16,\n", + " 3): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [672966.0, 672966.0, 672966.0, 672966.0, 672966.0],\n", + " 'min': 672966.0,\n", + " 'max': 672966.0,\n", + " 'mean': 672966.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 0): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [448597.0, 448597.0, 448597.0, 448597.0, 448597.0],\n", + " 'min': 448597.0,\n", + " 'max': 448597.0,\n", + " 'mean': 448597.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 1): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [832046.0, 832046.0, 832046.0, 832046.0, 832046.0],\n", + " 'min': 832046.0,\n", + " 'max': 832046.0,\n", + " 'mean': 832046.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 2): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [867711.0, 867711.0, 867711.0, 867711.0, 867711.0],\n", + " 'min': 867711.0,\n", + " 'max': 867711.0,\n", + " 'mean': 867711.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 5): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [579856.0, 579856.0, 579856.0, 579856.0, 579856.0],\n", + " 'min': 579856.0,\n", + " 'max': 579856.0,\n", + " 'mean': 579856.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 7): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [987804.0, 987804.0, 987804.0, 987804.0, 987804.0],\n", + " 'min': 987804.0,\n", + " 'max': 987804.0,\n", + " 'mean': 987804.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 4): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [842913.0, 842913.0, 842913.0, 842913.0, 842913.0],\n", + " 'min': 842913.0,\n", + " 'max': 842913.0,\n", + " 'mean': 842913.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (16,\n", + " 6): {'time': {'name': 'IntegrateStressForElems',\n", + " 'q': [570142.0, 570142.0, 570142.0, 570142.0, 570142.0],\n", + " 'min': 570142.0,\n", + " 'max': 570142.0,\n", + " 'mean': 570142.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", + " (12,\n", + " 5): {'time': {'name': 'TimeIncrement',\n", + " 'q': [342333.0, 342333.0, 342333.0, 342333.0, 342333.0],\n", + " 'min': 342333.0,\n", + " 'max': 342333.0,\n", + " 'mean': 342333.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 4): {'time': {'name': 'TimeIncrement',\n", + " 'q': [215603.0, 215603.0, 215603.0, 215603.0, 215603.0],\n", + " 'min': 215603.0,\n", + " 'max': 215603.0,\n", + " 'mean': 215603.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 3): {'time': {'name': 'TimeIncrement',\n", + " 'q': [323519.0, 323519.0, 323519.0, 323519.0, 323519.0],\n", + " 'min': 323519.0,\n", + " 'max': 323519.0,\n", + " 'mean': 323519.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 2): {'time': {'name': 'TimeIncrement',\n", + " 'q': [171635.0, 171635.0, 171635.0, 171635.0, 171635.0],\n", + " 'min': 171635.0,\n", + " 'max': 171635.0,\n", + " 'mean': 171635.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 1): {'time': {'name': 'TimeIncrement',\n", + " 'q': [212402.0, 212402.0, 212402.0, 212402.0, 212402.0],\n", + " 'min': 212402.0,\n", + " 'max': 212402.0,\n", + " 'mean': 212402.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 0): {'time': {'name': 'TimeIncrement',\n", + " 'q': [418469.0, 418469.0, 418469.0, 418469.0, 418469.0],\n", + " 'min': 418469.0,\n", + " 'max': 418469.0,\n", + " 'mean': 418469.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 7): {'time': {'name': 'TimeIncrement',\n", + " 'q': [540.0, 540.0, 540.0, 540.0, 540.0],\n", + " 'min': 540.0,\n", + " 'max': 540.0,\n", + " 'mean': 540.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", + " (12,\n", + " 6): {'time': {'name': 'TimeIncrement',\n", + " 'q': [423809.0, 423809.0, 423809.0, 423809.0, 423809.0],\n", + " 'min': 423809.0,\n", + " 'max': 423809.0,\n", + " 'mean': 423809.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}}}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bp_json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can trigger the visualization using **roundtrip** magic command, `%loadVisualization`. `%loadVisualization` expects the `roundtrip_path` (path in which roundtrip resides), `\"boxplot\"` (identifier to the visualization type) and variable containing the data for the boxplots (here it is bp_json).\n", + "\n", + "Interactions on the boxplot visualization:\n", + "1. Users can select the metric of interest to visualize the corresponding runtime information.\n", + "2. Users can sort the callsites by their statistical attributes (i.e., mean, min, max, variance, imbalance, kurtosis and skewness).\n", + "3. Users can select the sorting order (i.e., ascending or descending).\n", + "4. Users can select the number of callsites that would be visualized." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "%loadVisualization roundtrip_path \"boxplot\" bp_json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the exploration of the variability is done. Users can get the corresponding data in their visualization using the `%fetchData` magic command. Similar to the `%loadVisualization`, we will have to specify `\"boxplot\"` to identify the corresponding visualization type. The results will be stored in the following variable (here it is `result_csv` ) in the `.csv` format." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%fetchData \"boxplot\" result_csv" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(result_csv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `.csv` formatted output can be converted to a dataframe as shown below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "columns = result_csv.split(';')[0].split(',')\n", + "data = [x.split(',') for x in result_csv.split(';')[1:]]\n", + "df = pd.DataFrame(data, columns=columns).set_index('name')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "hatchet-venv", + "language": "python", + "name": "hatchet-venv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 0f4ec0cd..ba960972 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -1,4 +1,3 @@ -from itertools import groupby import numpy as np import pandas as pd from scipy import stats @@ -13,17 +12,12 @@ def __init__( metrics=[], ): """ - Boxplot computation for callsites. The data can be computed for two use - cases: - 1. Examining runtime distributions of a single GraphFrame. - 2. Comparing runtime distributions of a target GraphFrame against a - background GraphFrame. + Boxplot class computes the runtime distributions of a multi-indexed GraphFrame. + Arguments: + multi_index_gf: (ht.GraphFrame) Target GraphFrame. cat_column: (string) Categorical column to aggregate the boxplot computation. - tgt_gf: (ht.GraphFrame) Target GraphFrame. - bkg_gf: (ht.GraphFrame) Background GraphFrame. - group_by: (string) Column to identify the callsites (e.g., name, nid). metrics: (list) List of metrics to compute. Return: None @@ -32,10 +26,11 @@ def __init__( assert isinstance(metrics, list) self.df_index = list(multi_index_gf.dataframe.index.names) - print(self.df_index) + drop_indexes = ["node", cat_column] # Remove cat_column from the index, since we will aggregate by this column. - if cat_column in self.df_index: - self.df_index.remove(cat_column) + for index in drop_indexes: + if index in self.df_index: + self.df_index.remove(index) print(self.df_index) @@ -51,13 +46,14 @@ def __init__( else: self.metrics = metrics - groupby = "nid" - self.callsites = multi_index_gf.dataframe[groupby].unique().tolist() + self.input_index = ["nid", cat_column] + self.output_index = ["node", cat_column] + self.ht_columns = ["name", "node"] - tgt_dict = BoxPlot.df_groupby( + self.callsites, tgt_dict = BoxPlot.df_groupby( multi_index_gf.dataframe, - groupby=groupby, - cols=self.metrics + [self.cat_column] + self.df_index + ["name"], + groupby=self.input_index, + cols=self.metrics + self.ht_columns, ) self.result = {} @@ -80,10 +76,9 @@ def df_groupby(df, groupby, cols): Return: (dict): A dictionary of dataframes (columns) keyed by groups. """ - _df = df.set_index([groupby]) + _df = df.set_index(groupby) _levels = _df.index.unique().tolist() - - return {_: _df.xs(_)[cols] for _ in _levels} + return _levels, {_: _df.xs(_)[cols] for _ in _levels} @staticmethod def outliers(data, scale=1.5, side="both"): @@ -156,21 +151,23 @@ def compute(self, df): _skew = stats.skew(_data) _kurt = stats.kurtosis(_data) + # TODO: Outliers and their corresponding rank member is not being + # fetched accurately. + # _outliers = df[tv].to_numpy()[mask] + ret[tk] = { "q": q, - "ometric": df[tv].to_numpy()[mask], - "ocat": df[self.cat_column].to_numpy()[mask], + # "ometric": _outliers, + # "ocat": df.index[1] if len(_outliers) > 0 else -1, # not being used in the vis yet. "d": _data, "rng": (_min, _max), "uv": (_mean, _var), "imb": _imb, "ks": (_kurt, _skew), "name": df["name"].unique().tolist()[0], + "node": df["node"].unique().tolist()[0] } - for index in self.df_index: - ret[tk][index] = df[index].unique().tolist()[0], - return ret def to_json(self): @@ -204,8 +201,8 @@ def _unpack_callsite(self, callsite): ret (dict): { "metric": { "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), - "ocat": (array) outlier from cat_column, - "ometric": (array) outlier from metri, + "ocat": (array) outlier from cat_column, (TODO) + "ometric": (array) outlier from metri, (TODO) "min": (number) minimum, "max": (number) maximum, "mean": (number) mean, @@ -222,8 +219,8 @@ def _unpack_callsite(self, callsite): ret[metric] = { "name": box["name"], "q": box["q"].tolist(), - "ocat": box["ocat"].tolist(), - "ometric": box["ometric"].tolist(), + # "ocat": box["ocat"], # TODO + # "ometric": box["ometric"].tolist(), # TODO "min": box["rng"][0], "max": box["rng"][1], "mean": box["uv"][0], @@ -231,11 +228,9 @@ def _unpack_callsite(self, callsite): "imb": box["imb"], "kurt": box["ks"][0], "skew": box["ks"][1], + "node": box["node"] } - for index in self.df_index: - ret[metric][index] = box[index] - return ret def _to_gf_by_metric(self, gf, metric): @@ -254,8 +249,8 @@ def _to_gf_by_metric(self, gf, metric): _dtype = { "name": str, "q": object, - "ocat": object, - "ometric": object, + # "ocat": object, # TODO + # "ometric": object, # TODO "min": np.float64, "max": np.float64, "mean": np.float64, @@ -270,7 +265,9 @@ def _to_gf_by_metric(self, gf, metric): } tmp_df = pd.DataFrame.from_dict(data=_dict).T tmp_df = tmp_df.astype(_dtype) - tmp_df.set_index(self.df_index, inplace=True) + tmp_df.index.names = self.input_index + tmp_df.reset_index(inplace=True) + tmp_df.set_index(self.output_index, inplace=True) # TODO: Would we need to squash the graph. (Check in the to_gf() method.) # Call into the gf.groupby_aggregate() (in PR) before returning the gf. From 4fc32bd5a04324fbb1853e4c6b4c620136781883 Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 11:19:41 -0700 Subject: [PATCH 12/29] Modify function signatures --- .../performance_variability_boxplots.ipynb | 5259 ++++++++++------- hatchet/util/boxplot.py | 87 +- 2 files changed, 3133 insertions(+), 2213 deletions(-) diff --git a/docs/examples/tutorial/performance_variability_boxplots.ipynb b/docs/examples/tutorial/performance_variability_boxplots.ipynb index 3ba57cc3..a7e7f7b2 100644 --- a/docs/examples/tutorial/performance_variability_boxplots.ipynb +++ b/docs/examples/tutorial/performance_variability_boxplots.ipynb @@ -289,13 +289,6 @@ "execution_count": 4, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['dataset']\n" - ] - }, { "name": "stderr", "output_type": "stream", @@ -307,7 +300,7 @@ ], "source": [ "from pyinstrument import Profiler\n", - "bp = BoxPlot(cat_column='rank', multi_index_gf=gf_ensemble, metrics=[\"time\"])" + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"dataset\")" ] }, { @@ -344,8 +337,8 @@ " \n", " \n", " \n", - " nid\n", - " name\n", + " hatchet_nid\n", + " dataset\n", " q\n", " min\n", " max\n", @@ -354,6 +347,7 @@ " imb\n", " kurt\n", " skew\n", + " name\n", " \n", " \n", " node\n", @@ -368,6 +362,7 @@ " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -375,67 +370,72 @@ " {'name': 'main', 'type': 'region'}\n", " 0\n", " 0\n", + " dset9\n", + " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", + " 105528.0\n", + " 137098.0\n", + " 119373.50\n", + " 1.044980e+08\n", + " 0.148479\n", + " -0.942185\n", + " 0.543673\n", " main\n", - " [121489.0, 121489.0, 121489.0, 121489.0, 12148...\n", - " 121489.0\n", - " 121489.0\n", - " 121489.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", " 4\n", " 0\n", + " dset7\n", + " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", + " 105528.0\n", + " 137098.0\n", + " 119373.50\n", + " 1.044980e+08\n", + " 0.148479\n", + " -0.942185\n", + " 0.543673\n", " main\n", - " [118953.0, 118953.0, 118953.0, 118953.0, 11895...\n", - " 118953.0\n", - " 118953.0\n", - " 118953.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", - " 5\n", + " 7\n", " 0\n", + " dset1\n", + " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", + " 105528.0\n", + " 137098.0\n", + " 119373.50\n", + " 1.044980e+08\n", + " 0.148479\n", + " -0.942185\n", + " 0.543673\n", " main\n", - " [133256.0, 133256.0, 133256.0, 133256.0, 13325...\n", - " 133256.0\n", - " 133256.0\n", - " 133256.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", - " 6\n", + " 1\n", " 0\n", + " dset3\n", + " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", + " 105528.0\n", + " 137098.0\n", + " 119373.50\n", + " 1.044980e+08\n", + " 0.148479\n", + " -0.942185\n", + " 0.543673\n", " main\n", - " [114035.0, 114035.0, 114035.0, 114035.0, 11403...\n", - " 114035.0\n", - " 114035.0\n", - " 114035.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", - " 7\n", + " 0\n", " 0\n", - " main\n", - " [137098.0, 137098.0, 137098.0, 137098.0, 13709...\n", - " 137098.0\n", + " dset6\n", + " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", + " 105528.0\n", " 137098.0\n", - " 137098.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", + " 119373.50\n", + " 1.044980e+08\n", + " 0.148479\n", + " -0.942185\n", + " 0.543673\n", + " main\n", " \n", " \n", " ...\n", @@ -450,150 +450,170 @@ " ...\n", " ...\n", " ...\n", + " ...\n", " \n", " \n", " {'name': 'TimeIncrement', 'type': 'region'}\n", - " 2\n", - " 12\n", + " 7\n", + " 23\n", + " dset8\n", + " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", + " 540.0\n", + " 423809.0\n", + " 263538.75\n", + " 1.775294e+10\n", + " 0.608147\n", + " -0.558767\n", + " -0.563893\n", " TimeIncrement\n", - " [171635.0, 171635.0, 171635.0, 171635.0, 17163...\n", - " 171635.0\n", - " 171635.0\n", - " 171635.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", - " 1\n", - " 12\n", + " 0\n", + " 23\n", + " dset9\n", + " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", + " 540.0\n", + " 423809.0\n", + " 263538.75\n", + " 1.775294e+10\n", + " 0.608147\n", + " -0.558767\n", + " -0.563893\n", " TimeIncrement\n", - " [212402.0, 212402.0, 212402.0, 212402.0, 21240...\n", - " 212402.0\n", - " 212402.0\n", - " 212402.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", " 0\n", - " 12\n", + " 23\n", + " dset2\n", + " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", + " 540.0\n", + " 423809.0\n", + " 263538.75\n", + " 1.775294e+10\n", + " 0.608147\n", + " -0.558767\n", + " -0.563893\n", " TimeIncrement\n", - " [418469.0, 418469.0, 418469.0, 418469.0, 41846...\n", - " 418469.0\n", - " 418469.0\n", - " 418469.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", " \n", " \n", " 7\n", - " 12\n", - " TimeIncrement\n", - " [540.0, 540.0, 540.0, 540.0, 540.0]\n", - " 540.0\n", - " 540.0\n", + " 23\n", + " dset3\n", + " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", + " 423809.0\n", + " 263538.75\n", + " 1.775294e+10\n", + " 0.608147\n", + " -0.558767\n", + " -0.563893\n", + " TimeIncrement\n", " \n", " \n", - " 6\n", - " 12\n", - " TimeIncrement\n", - " [423809.0, 423809.0, 423809.0, 423809.0, 42380...\n", - " 423809.0\n", - " 423809.0\n", + " 0\n", + " 23\n", + " dset4\n", + " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", + " 540.0\n", " 423809.0\n", - " 0.0\n", - " 0.0\n", - " -3.0\n", - " 0.0\n", + " 263538.75\n", + " 1.775294e+10\n", + " 0.608147\n", + " -0.558767\n", + " -0.563893\n", + " TimeIncrement\n", " \n", " \n", "\n", - "

192 rows × 10 columns

\n", + "

240 rows × 11 columns

\n", "" ], "text/plain": [ - " nid name \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0 main \n", - " 4 0 main \n", - " 5 0 main \n", - " 6 0 main \n", - " 7 0 main \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 12 TimeIncrement \n", - " 1 12 TimeIncrement \n", - " 0 12 TimeIncrement \n", - " 7 12 TimeIncrement \n", - " 6 12 TimeIncrement \n", + " hatchet_nid dataset \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0 dset9 \n", + " 4 0 dset7 \n", + " 7 0 dset1 \n", + " 1 0 dset3 \n", + " 0 0 dset6 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 23 dset8 \n", + " 0 23 dset9 \n", + " 0 23 dset2 \n", + " 7 23 dset3 \n", + " 0 23 dset4 \n", "\n", " q \\\n", "node rank \n", - "{'name': 'main', 'type': 'region'} 0 [121489.0, 121489.0, 121489.0, 121489.0, 12148... \n", - " 4 [118953.0, 118953.0, 118953.0, 118953.0, 11895... \n", - " 5 [133256.0, 133256.0, 133256.0, 133256.0, 13325... \n", - " 6 [114035.0, 114035.0, 114035.0, 114035.0, 11403... \n", - " 7 [137098.0, 137098.0, 137098.0, 137098.0, 13709... \n", + "{'name': 'main', 'type': 'region'} 0 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " 4 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " 7 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " 1 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " 0 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", "... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 [171635.0, 171635.0, 171635.0, 171635.0, 17163... \n", - " 1 [212402.0, 212402.0, 212402.0, 212402.0, 21240... \n", - " 0 [418469.0, 418469.0, 418469.0, 418469.0, 41846... \n", - " 7 [540.0, 540.0, 540.0, 540.0, 540.0] \n", - " 6 [423809.0, 423809.0, 423809.0, 423809.0, 42380... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " 7 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", "\n", " min max \\\n", "node rank \n", - "{'name': 'main', 'type': 'region'} 0 121489.0 121489.0 \n", - " 4 118953.0 118953.0 \n", - " 5 133256.0 133256.0 \n", - " 6 114035.0 114035.0 \n", - " 7 137098.0 137098.0 \n", + "{'name': 'main', 'type': 'region'} 0 105528.0 137098.0 \n", + " 4 105528.0 137098.0 \n", + " 7 105528.0 137098.0 \n", + " 1 105528.0 137098.0 \n", + " 0 105528.0 137098.0 \n", "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 171635.0 \n", - " 1 212402.0 212402.0 \n", - " 0 418469.0 418469.0 \n", - " 7 540.0 540.0 \n", - " 6 423809.0 423809.0 \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 540.0 423809.0 \n", + " 0 540.0 423809.0 \n", + " 0 540.0 423809.0 \n", + " 7 540.0 423809.0 \n", + " 0 540.0 423809.0 \n", "\n", - " mean var imb kurt \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 121489.0 0.0 0.0 -3.0 \n", - " 4 118953.0 0.0 0.0 -3.0 \n", - " 5 133256.0 0.0 0.0 -3.0 \n", - " 6 114035.0 0.0 0.0 -3.0 \n", - " 7 137098.0 0.0 0.0 -3.0 \n", - "... ... ... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 0.0 0.0 -3.0 \n", - " 1 212402.0 0.0 0.0 -3.0 \n", - " 0 418469.0 0.0 0.0 -3.0 \n", - " 7 540.0 0.0 0.0 -3.0 \n", - " 6 423809.0 0.0 0.0 -3.0 \n", + " mean var \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 119373.50 1.044980e+08 \n", + " 4 119373.50 1.044980e+08 \n", + " 7 119373.50 1.044980e+08 \n", + " 1 119373.50 1.044980e+08 \n", + " 0 119373.50 1.044980e+08 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 263538.75 1.775294e+10 \n", + " 0 263538.75 1.775294e+10 \n", + " 0 263538.75 1.775294e+10 \n", + " 7 263538.75 1.775294e+10 \n", + " 0 263538.75 1.775294e+10 \n", + "\n", + " imb kurt \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0.148479 -0.942185 \n", + " 4 0.148479 -0.942185 \n", + " 7 0.148479 -0.942185 \n", + " 1 0.148479 -0.942185 \n", + " 0 0.148479 -0.942185 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 0.608147 -0.558767 \n", + " 0 0.608147 -0.558767 \n", + " 0 0.608147 -0.558767 \n", + " 7 0.608147 -0.558767 \n", + " 0 0.608147 -0.558767 \n", "\n", - " skew \n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0.0 \n", - " 4 0.0 \n", - " 5 0.0 \n", - " 6 0.0 \n", - " 7 0.0 \n", - "... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 0.0 \n", - " 1 0.0 \n", - " 0 0.0 \n", - " 7 0.0 \n", - " 6 0.0 \n", + " skew name \n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0.543673 main \n", + " 4 0.543673 main \n", + " 7 0.543673 main \n", + " 1 0.543673 main \n", + " 0 0.543673 main \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 7 -0.563893 TimeIncrement \n", + " 0 -0.563893 TimeIncrement \n", + " 0 -0.563893 TimeIncrement \n", + " 7 -0.563893 TimeIncrement \n", + " 0 -0.563893 TimeIncrement \n", "\n", - "[192 rows x 10 columns]" + "[240 rows x 11 columns]" ] }, "execution_count": 5, @@ -615,22 +635,23 @@ "output_type": "stream", "text": [ "\n", - "MultiIndex: 192 entries, (Node({'name': 'main', 'type': 'region'}), 0) to (Node({'name': 'TimeIncrement', 'type': 'region'}), 6)\n", - "Data columns (total 10 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 nid 192 non-null int64 \n", - " 1 name 192 non-null object \n", - " 2 q 192 non-null object \n", - " 3 min 192 non-null float64\n", - " 4 max 192 non-null float64\n", - " 5 mean 192 non-null float64\n", - " 6 var 192 non-null float64\n", - " 7 imb 192 non-null float64\n", - " 8 kurt 192 non-null float64\n", - " 9 skew 192 non-null float64\n", - "dtypes: float64(7), int64(1), object(2)\n", - "memory usage: 16.6+ KB\n" + "MultiIndex: 240 entries, (Node({'name': 'main', 'type': 'region'}), 0) to (Node({'name': 'TimeIncrement', 'type': 'region'}), 0)\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 hatchet_nid 240 non-null int64 \n", + " 1 dataset 240 non-null object \n", + " 2 q 240 non-null object \n", + " 3 min 240 non-null float64\n", + " 4 max 240 non-null float64\n", + " 5 mean 240 non-null float64\n", + " 6 var 240 non-null float64\n", + " 7 imb 240 non-null float64\n", + " 8 kurt 240 non-null float64\n", + " 9 skew 240 non-null float64\n", + " 10 name 240 non-null object \n", + "dtypes: float64(7), int64(1), object(3)\n", + "memory usage: 22.3+ KB\n" ] } ], @@ -707,2117 +728,2965 @@ "data": { "text/plain": [ "{(0,\n", - " 0): {'time': {'name': 'main',\n", - " 'q': [121489.0, 121489.0, 121489.0, 121489.0, 121489.0],\n", - " 'min': 121489.0,\n", - " 'max': 121489.0,\n", - " 'mean': 121489.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (0,\n", + " 'dset7'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (0,\n", + " 'dset1'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (0,\n", - " 4): {'time': {'name': 'main',\n", - " 'q': [118953.0, 118953.0, 118953.0, 118953.0, 118953.0],\n", - " 'min': 118953.0,\n", - " 'max': 118953.0,\n", - " 'mean': 118953.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (0,\n", - " 5): {'time': {'name': 'main',\n", - " 'q': [133256.0, 133256.0, 133256.0, 133256.0, 133256.0],\n", - " 'min': 133256.0,\n", - " 'max': 133256.0,\n", - " 'mean': 133256.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (0,\n", - " 6): {'time': {'name': 'main',\n", - " 'q': [114035.0, 114035.0, 114035.0, 114035.0, 114035.0],\n", - " 'min': 114035.0,\n", - " 'max': 114035.0,\n", - " 'mean': 114035.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (0,\n", - " 7): {'time': {'name': 'main',\n", - " 'q': [137098.0, 137098.0, 137098.0, 137098.0, 137098.0],\n", - " 'min': 137098.0,\n", + " 'dset0'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", " 'max': 137098.0,\n", - " 'mean': 137098.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (0,\n", - " 3): {'time': {'name': 'main',\n", - " 'q': [113830.0, 113830.0, 113830.0, 113830.0, 113830.0],\n", - " 'min': 113830.0,\n", - " 'max': 113830.0,\n", - " 'mean': 113830.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (0,\n", - " 2): {'time': {'name': 'main',\n", - " 'q': [110799.0, 110799.0, 110799.0, 110799.0, 110799.0],\n", - " 'min': 110799.0,\n", - " 'max': 110799.0,\n", - " 'mean': 110799.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", + " 'min': 105528.0,\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (0,\n", - " 1): {'time': {'name': 'main',\n", - " 'q': [105528.0, 105528.0, 105528.0, 105528.0, 105528.0],\n", + " 'dset5'): {'time': {'q': [105528.0,\n", + " 113072.25,\n", + " 116494.0,\n", + " 124430.75,\n", + " 137098.0],\n", " 'min': 105528.0,\n", - " 'max': 105528.0,\n", - " 'mean': 105528.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'main', 'type': 'region'})}},\n", + " 'max': 137098.0,\n", + " 'mean': 119373.5,\n", + " 'var': 104497970.25,\n", + " 'imb': 0.14847935262013764,\n", + " 'kurt': -0.9421848873183336,\n", + " 'skew': 0.5436725364039101,\n", + " 'name': 'main',\n", + " 'node': Node({'name': 'main', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (1,\n", + " 'dset9'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (1,\n", - " 7): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [543.0, 543.0, 543.0, 543.0, 543.0],\n", - " 'min': 543.0,\n", - " 'max': 543.0,\n", - " 'mean': 543.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (1,\n", + " 'dset0'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (1,\n", - " 0): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [528.0, 528.0, 528.0, 528.0, 528.0],\n", - " 'min': 528.0,\n", - " 'max': 528.0,\n", - " 'mean': 528.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (1,\n", - " 1): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [499.0, 499.0, 499.0, 499.0, 499.0],\n", + " 'dset1'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", " 'min': 499.0,\n", - " 'max': 499.0,\n", - " 'mean': 499.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (1,\n", - " 4): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [513.0, 513.0, 513.0, 513.0, 513.0],\n", - " 'min': 513.0,\n", - " 'max': 513.0,\n", - " 'mean': 513.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (1,\n", - " 3): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [511.0, 511.0, 511.0, 511.0, 511.0],\n", - " 'min': 511.0,\n", - " 'max': 511.0,\n", - " 'mean': 511.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (1,\n", - " 6): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [525.0, 525.0, 525.0, 525.0, 525.0],\n", - " 'min': 525.0,\n", - " 'max': 525.0,\n", - " 'mean': 525.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (1,\n", - " 5): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [517.0, 517.0, 517.0, 517.0, 517.0],\n", - " 'min': 517.0,\n", - " 'max': 517.0,\n", - " 'mean': 517.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", + " 'max': 3520.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (1,\n", - " 2): {'time': {'name': 'LagrangeLeapFrog',\n", - " 'q': [3520.0, 3520.0, 3520.0, 3520.0, 3520.0],\n", - " 'min': 3520.0,\n", + " 'dset5'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 'min': 499.0,\n", " 'max': 3520.0,\n", - " 'mean': 3520.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'})}},\n", - " (9,\n", - " 0): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [21493.0, 21493.0, 21493.0, 21493.0, 21493.0],\n", - " 'min': 21493.0,\n", + " 'mean': 894.5,\n", + " 'var': 984899.5,\n", + " 'imb': 2.935159306875349,\n", + " 'kurt': 3.1411221066037207,\n", + " 'skew': 2.2670991456043166,\n", + " 'name': 'LagrangeLeapFrog',\n", + " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (2,\n", + " 'dset2'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", " 'max': 21493.0,\n", - " 'mean': 21493.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 4): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [2321.0, 2321.0, 2321.0, 2321.0, 2321.0],\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (2,\n", + " 'dset1'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", " 'min': 2321.0,\n", - " 'max': 2321.0,\n", - " 'mean': 2321.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 6): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [14203.0, 14203.0, 14203.0, 14203.0, 14203.0],\n", - " 'min': 14203.0,\n", - " 'max': 14203.0,\n", - " 'mean': 14203.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 5): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [2828.0, 2828.0, 2828.0, 2828.0, 2828.0],\n", - " 'min': 2828.0,\n", - " 'max': 2828.0,\n", - " 'mean': 2828.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 3): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [10194.0, 10194.0, 10194.0, 10194.0, 10194.0],\n", - " 'min': 10194.0,\n", - " 'max': 10194.0,\n", - " 'mean': 10194.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 1): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [2745.0, 2745.0, 2745.0, 2745.0, 2745.0],\n", - " 'min': 2745.0,\n", - " 'max': 2745.0,\n", - " 'mean': 2745.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 2): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [2758.0, 2758.0, 2758.0, 2758.0, 2758.0],\n", - " 'min': 2758.0,\n", - " 'max': 2758.0,\n", - " 'mean': 2758.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (9,\n", - " 7): {'time': {'name': 'CalcTimeConstraintsForElems',\n", - " 'q': [2970.0, 2970.0, 2970.0, 2970.0, 2970.0],\n", - " 'min': 2970.0,\n", - " 'max': 2970.0,\n", - " 'mean': 2970.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'})}},\n", - " (10,\n", - " 2): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [16695.0, 16695.0, 16695.0, 16695.0, 16695.0],\n", - " 'min': 16695.0,\n", - " 'max': 16695.0,\n", - " 'mean': 16695.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 1): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [17558.0, 17558.0, 17558.0, 17558.0, 17558.0],\n", - " 'min': 17558.0,\n", - " 'max': 17558.0,\n", - " 'mean': 17558.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 0): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [85866.0, 85866.0, 85866.0, 85866.0, 85866.0],\n", - " 'min': 85866.0,\n", - " 'max': 85866.0,\n", - " 'mean': 85866.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 3): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [25658.0, 25658.0, 25658.0, 25658.0, 25658.0],\n", - " 'min': 25658.0,\n", - " 'max': 25658.0,\n", - " 'mean': 25658.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 4): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [17195.0, 17195.0, 17195.0, 17195.0, 17195.0],\n", - " 'min': 17195.0,\n", - " 'max': 17195.0,\n", - " 'mean': 17195.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 5): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [21244.0, 21244.0, 21244.0, 21244.0, 21244.0],\n", - " 'min': 21244.0,\n", - " 'max': 21244.0,\n", - " 'mean': 21244.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 6): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [30246.0, 30246.0, 30246.0, 30246.0, 30246.0],\n", - " 'min': 30246.0,\n", - " 'max': 30246.0,\n", - " 'mean': 30246.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (10,\n", - " 7): {'time': {'name': 'CalcCourantConstraintForElems',\n", - " 'q': [16865.0, 16865.0, 16865.0, 16865.0, 16865.0],\n", - " 'min': 16865.0,\n", - " 'max': 16865.0,\n", - " 'mean': 16865.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 7): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [4906.0, 4906.0, 4906.0, 4906.0, 4906.0],\n", - " 'min': 4906.0,\n", - " 'max': 4906.0,\n", - " 'mean': 4906.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 0): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [29653.0, 29653.0, 29653.0, 29653.0, 29653.0],\n", - " 'min': 29653.0,\n", - " 'max': 29653.0,\n", - " 'mean': 29653.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 5): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [5628.0, 5628.0, 5628.0, 5628.0, 5628.0],\n", - " 'min': 5628.0,\n", - " 'max': 5628.0,\n", - " 'mean': 5628.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 4): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [4600.0, 4600.0, 4600.0, 4600.0, 4600.0],\n", - " 'min': 4600.0,\n", - " 'max': 4600.0,\n", - " 'mean': 4600.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 3): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [4781.0, 4781.0, 4781.0, 4781.0, 4781.0],\n", - " 'min': 4781.0,\n", - " 'max': 4781.0,\n", - " 'mean': 4781.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 2): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [4658.0, 4658.0, 4658.0, 4658.0, 4658.0],\n", - " 'min': 4658.0,\n", - " 'max': 4658.0,\n", - " 'mean': 4658.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 1): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [4523.0, 4523.0, 4523.0, 4523.0, 4523.0],\n", - " 'min': 4523.0,\n", - " 'max': 4523.0,\n", - " 'mean': 4523.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", - " (11,\n", - " 6): {'time': {'name': 'CalcHydroConstraintForElems',\n", - " 'q': [23674.0, 23674.0, 23674.0, 23674.0, 23674.0],\n", - " 'min': 23674.0,\n", - " 'max': 23674.0,\n", - " 'mean': 23674.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'})}},\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", " (2,\n", - " 3): {'time': {'name': 'LagrangeElements',\n", - " 'q': [670.0, 670.0, 670.0, 670.0, 670.0],\n", - " 'min': 670.0,\n", - " 'max': 670.0,\n", - " 'mean': 670.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (2,\n", - " 2): {'time': {'name': 'LagrangeElements',\n", - " 'q': [923.0, 923.0, 923.0, 923.0, 923.0],\n", - " 'min': 923.0,\n", - " 'max': 923.0,\n", - " 'mean': 923.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (2,\n", - " 1): {'time': {'name': 'LagrangeElements',\n", - " 'q': [656.0, 656.0, 656.0, 656.0, 656.0],\n", - " 'min': 656.0,\n", - " 'max': 656.0,\n", - " 'mean': 656.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (2,\n", - " 0): {'time': {'name': 'LagrangeElements',\n", - " 'q': [663.0, 663.0, 663.0, 663.0, 663.0],\n", - " 'min': 663.0,\n", - " 'max': 663.0,\n", - " 'mean': 663.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (2,\n", - " 4): {'time': {'name': 'LagrangeElements',\n", - " 'q': [675.0, 675.0, 675.0, 675.0, 675.0],\n", - " 'min': 675.0,\n", - " 'max': 675.0,\n", - " 'mean': 675.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (2,\n", - " 5): {'time': {'name': 'LagrangeElements',\n", - " 'q': [664.0, 664.0, 664.0, 664.0, 664.0],\n", - " 'min': 664.0,\n", - " 'max': 664.0,\n", - " 'mean': 664.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (2,\n", - " 7): {'time': {'name': 'LagrangeElements',\n", - " 'q': [832.0, 832.0, 832.0, 832.0, 832.0],\n", - " 'min': 832.0,\n", - " 'max': 832.0,\n", - " 'mean': 832.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (2,\n", - " 6): {'time': {'name': 'LagrangeElements',\n", - " 'q': [628.0, 628.0, 628.0, 628.0, 628.0],\n", - " 'min': 628.0,\n", - " 'max': 628.0,\n", - " 'mean': 628.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 'min': 2321.0,\n", + " 'max': 21493.0,\n", + " 'mean': 7439.0,\n", + " 'var': 45278655.0,\n", + " 'imb': 1.8892324237128646,\n", + " 'kurt': -0.33766561568028663,\n", + " 'skew': 1.0580467322576932,\n", + " 'name': 'CalcTimeConstraintsForElems',\n", + " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (3,\n", - " 5): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [11505.0, 11505.0, 11505.0, 11505.0, 11505.0],\n", - " 'min': 11505.0,\n", - " 'max': 11505.0,\n", - " 'mean': 11505.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.646809916397041,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (3,\n", - " 6): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [22583.0, 22583.0, 22583.0, 22583.0, 22583.0],\n", - " 'min': 22583.0,\n", - " 'max': 22583.0,\n", - " 'mean': 22583.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.64680991639704,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (3,\n", + " 'dset7'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.646809916397041,\n", + " 'skew': 2.0817480954465406,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", " (3,\n", - " 7): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [13609.0, 13609.0, 13609.0, 13609.0, 13609.0],\n", - " 'min': 13609.0,\n", - " 'max': 13609.0,\n", - " 'mean': 13609.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.64680991639704,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (3,\n", + " 'dset5'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.646809916397041,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (3,\n", - " 0): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [14072.0, 14072.0, 14072.0, 14072.0, 14072.0],\n", - " 'min': 14072.0,\n", - " 'max': 14072.0,\n", - " 'mean': 14072.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.646809916397041,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (3,\n", - " 2): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [13643.0, 13643.0, 13643.0, 13643.0, 13643.0],\n", - " 'min': 13643.0,\n", - " 'max': 13643.0,\n", - " 'mean': 13643.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.646809916397041,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (3,\n", - " 3): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [13171.0, 13171.0, 13171.0, 13171.0, 13171.0],\n", - " 'min': 13171.0,\n", - " 'max': 13171.0,\n", - " 'mean': 13171.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.64680991639704,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (3,\n", - " 4): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [12643.0, 12643.0, 12643.0, 12643.0, 12643.0],\n", - " 'min': 12643.0,\n", - " 'max': 12643.0,\n", - " 'mean': 12643.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.64680991639704,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (3,\n", - " 1): {'time': {'name': 'ApplyMaterialPropertiesForElems',\n", - " 'q': [12107.0, 12107.0, 12107.0, 12107.0, 12107.0],\n", - " 'min': 12107.0,\n", - " 'max': 12107.0,\n", - " 'mean': 12107.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 'min': 16695.0,\n", + " 'max': 85866.0,\n", + " 'mean': 28915.875,\n", + " 'var': 484438874.359375,\n", + " 'imb': 1.9695106926558508,\n", + " 'kurt': 2.64680991639704,\n", + " 'skew': 2.08174809544654,\n", + " 'name': 'CalcCourantConstraintForElems',\n", + " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (4,\n", - " 6): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [162868.0, 162868.0, 162868.0, 162868.0, 162868.0],\n", - " 'min': 162868.0,\n", - " 'max': 162868.0,\n", - " 'mean': 162868.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (4,\n", + " 'dset7'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (4,\n", + " 'dset2'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936242,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (4,\n", - " 7): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [244580.0, 244580.0, 244580.0, 244580.0, 244580.0],\n", - " 'min': 244580.0,\n", - " 'max': 244580.0,\n", - " 'mean': 244580.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", " (4,\n", - " 5): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [190093.0, 190093.0, 190093.0, 190093.0, 190093.0],\n", - " 'min': 190093.0,\n", - " 'max': 190093.0,\n", - " 'mean': 190093.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (4,\n", - " 0): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [244008.0, 244008.0, 244008.0, 244008.0, 244008.0],\n", - " 'min': 244008.0,\n", - " 'max': 244008.0,\n", - " 'mean': 244008.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936242,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (4,\n", - " 3): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [235964.0, 235964.0, 235964.0, 235964.0, 235964.0],\n", - " 'min': 235964.0,\n", - " 'max': 235964.0,\n", - " 'mean': 235964.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (4,\n", - " 2): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [305500.0, 305500.0, 305500.0, 305500.0, 305500.0],\n", - " 'min': 305500.0,\n", - " 'max': 305500.0,\n", - " 'mean': 305500.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (4,\n", - " 1): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [261646.0, 261646.0, 261646.0, 261646.0, 261646.0],\n", - " 'min': 261646.0,\n", - " 'max': 261646.0,\n", - " 'mean': 261646.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (4,\n", - " 4): {'time': {'name': 'EvalEOSForElems',\n", - " 'q': [393451.0, 393451.0, 393451.0, 393451.0, 393451.0],\n", - " 'min': 393451.0,\n", - " 'max': 393451.0,\n", - " 'mean': 393451.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 'min': 4523.0,\n", + " 'max': 29653.0,\n", + " 'mean': 10302.875,\n", + " 'var': 91560061.609375,\n", + " 'imb': 1.8781286776749209,\n", + " 'kurt': -0.35178035936241914,\n", + " 'skew': 1.2340959674396927,\n", + " 'name': 'CalcHydroConstraintForElems',\n", + " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (5,\n", + " 'dset3'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (5,\n", + " 'dset1'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (5,\n", - " 3): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [229266.0, 229266.0, 229266.0, 229266.0, 229266.0],\n", - " 'min': 229266.0,\n", - " 'max': 229266.0,\n", - " 'mean': 229266.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (5,\n", - " 4): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [340746.0, 340746.0, 340746.0, 340746.0, 340746.0],\n", - " 'min': 340746.0,\n", - " 'max': 340746.0,\n", - " 'mean': 340746.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (5,\n", - " 5): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [214592.0, 214592.0, 214592.0, 214592.0, 214592.0],\n", - " 'min': 214592.0,\n", - " 'max': 214592.0,\n", - " 'mean': 214592.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (5,\n", - " 6): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [148668.0, 148668.0, 148668.0, 148668.0, 148668.0],\n", - " 'min': 148668.0,\n", - " 'max': 148668.0,\n", - " 'mean': 148668.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (5,\n", - " 2): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [352694.0, 352694.0, 352694.0, 352694.0, 352694.0],\n", - " 'min': 352694.0,\n", - " 'max': 352694.0,\n", - " 'mean': 352694.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 3}},\n", " (5,\n", - " 7): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [426729.0, 426729.0, 426729.0, 426729.0, 426729.0],\n", - " 'min': 426729.0,\n", - " 'max': 426729.0,\n", - " 'mean': 426729.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (5,\n", - " 1): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [365612.0, 365612.0, 365612.0, 365612.0, 365612.0],\n", - " 'min': 365612.0,\n", - " 'max': 365612.0,\n", - " 'mean': 365612.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (5,\n", - " 0): {'time': {'name': 'CalcEnergyForElems',\n", - " 'q': [222116.0, 222116.0, 222116.0, 222116.0, 222116.0],\n", - " 'min': 222116.0,\n", - " 'max': 222116.0,\n", - " 'mean': 222116.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'})}},\n", - " (6,\n", - " 1): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [218047.0, 218047.0, 218047.0, 218047.0, 218047.0],\n", - " 'min': 218047.0,\n", - " 'max': 218047.0,\n", - " 'mean': 218047.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 'min': 628.0,\n", + " 'max': 923.0,\n", + " 'mean': 713.875,\n", + " 'var': 9615.359375,\n", + " 'imb': 0.29294344247942566,\n", + " 'kurt': -0.03670015672591376,\n", + " 'skew': 1.2684626472863603,\n", + " 'name': 'LagrangeElements',\n", + " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (6,\n", - " 0): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [188615.0, 188615.0, 188615.0, 188615.0, 188615.0],\n", - " 'min': 188615.0,\n", - " 'max': 188615.0,\n", - " 'mean': 188615.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (6,\n", - " 6): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [122300.0, 122300.0, 122300.0, 122300.0, 122300.0],\n", - " 'min': 122300.0,\n", - " 'max': 122300.0,\n", - " 'mean': 122300.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (6,\n", - " 7): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [127732.0, 127732.0, 127732.0, 127732.0, 127732.0],\n", - " 'min': 127732.0,\n", - " 'max': 127732.0,\n", - " 'mean': 127732.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (6,\n", - " 5): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [152655.0, 152655.0, 152655.0, 152655.0, 152655.0],\n", - " 'min': 152655.0,\n", - " 'max': 152655.0,\n", - " 'mean': 152655.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.49948859941059,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (6,\n", - " 2): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [294780.0, 294780.0, 294780.0, 294780.0, 294780.0],\n", - " 'min': 294780.0,\n", - " 'max': 294780.0,\n", - " 'mean': 294780.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.49948859941059,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (6,\n", - " 3): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [157734.0, 157734.0, 157734.0, 157734.0, 157734.0],\n", - " 'min': 157734.0,\n", - " 'max': 157734.0,\n", - " 'mean': 157734.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (6,\n", + " 'dset4'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.49948859941059,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (6,\n", + " 'dset7'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (6,\n", + " 'dset2'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (6,\n", - " 4): {'time': {'name': 'CalcPressureForElems',\n", - " 'q': [157776.0, 157776.0, 157776.0, 157776.0, 157776.0],\n", - " 'min': 157776.0,\n", - " 'max': 157776.0,\n", - " 'mean': 157776.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 'min': 11505.0,\n", + " 'max': 22583.0,\n", + " 'mean': 14166.625,\n", + " 'var': 10758556.984375,\n", + " 'imb': 0.5940988061729593,\n", + " 'kurt': 2.4994885994105918,\n", + " 'skew': 1.9969162776908462,\n", + " 'name': 'ApplyMaterialPropertiesForElems',\n", + " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (7,\n", - " 0): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [7973.0, 7973.0, 7973.0, 7973.0, 7973.0],\n", - " 'min': 7973.0,\n", - " 'max': 7973.0,\n", - " 'mean': 7973.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (7,\n", - " 2): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [9894.0, 9894.0, 9894.0, 9894.0, 9894.0],\n", - " 'min': 9894.0,\n", - " 'max': 9894.0,\n", - " 'mean': 9894.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (7,\n", - " 7): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [11973.0, 11973.0, 11973.0, 11973.0, 11973.0],\n", - " 'min': 11973.0,\n", - " 'max': 11973.0,\n", - " 'mean': 11973.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (7,\n", - " 6): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [7979.0, 7979.0, 7979.0, 7979.0, 7979.0],\n", - " 'min': 7979.0,\n", - " 'max': 7979.0,\n", - " 'mean': 7979.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701218,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (7,\n", - " 5): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [7737.0, 7737.0, 7737.0, 7737.0, 7737.0],\n", - " 'min': 7737.0,\n", - " 'max': 7737.0,\n", - " 'mean': 7737.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (7,\n", + " 'dset7'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (7,\n", + " 'dset8'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701218,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (7,\n", - " 4): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [9177.0, 9177.0, 9177.0, 9177.0, 9177.0],\n", - " 'min': 9177.0,\n", - " 'max': 9177.0,\n", - " 'mean': 9177.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (7,\n", - " 1): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [8127.0, 8127.0, 8127.0, 8127.0, 8127.0],\n", - " 'min': 8127.0,\n", - " 'max': 8127.0,\n", - " 'mean': 8127.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (7,\n", - " 3): {'time': {'name': 'CalcSoundSpeedForElems',\n", - " 'q': [8070.0, 8070.0, 8070.0, 8070.0, 8070.0],\n", - " 'min': 8070.0,\n", - " 'max': 8070.0,\n", - " 'mean': 8070.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 'min': 162868.0,\n", + " 'max': 393451.0,\n", + " 'mean': 254763.75,\n", + " 'var': 4381955754.6875,\n", + " 'imb': 0.5443759169034056,\n", + " 'kurt': 0.030598025872087042,\n", + " 'skew': 0.7511131583701219,\n", + " 'name': 'EvalEOSForElems',\n", + " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (8,\n", + " 'dset7'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473935,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (8,\n", + " 'dset4'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473928,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (8,\n", + " 'dset8'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.346528909785267,\n", + " 'skew': 0.009053879754739286,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (8,\n", + " 'dset9'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.009053879754739345,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (8,\n", + " 'dset2'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473928,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (8,\n", + " 'dset0'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473928,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (8,\n", + " 'dset5'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.009053879754739345,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (8,\n", + " 'dset6'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473928,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (8,\n", + " 'dset1'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.00905387975473928,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (8,\n", + " 'dset3'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 'min': 148668.0,\n", + " 'max': 426729.0,\n", + " 'mean': 287552.875,\n", + " 'var': 8103467208.859375,\n", + " 'imb': 0.484001855310958,\n", + " 'kurt': -1.3465289097852673,\n", + " 'skew': 0.009053879754739286,\n", + " 'name': 'CalcEnergyForElems',\n", + " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (9,\n", + " 'dset4'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.30768836950483003,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (9,\n", + " 'dset3'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (9,\n", + " 'dset5'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (9,\n", + " 'dset9'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (9,\n", + " 'dset2'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.30768836950483003,\n", + " 'skew': 1.1457855240980563,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (9,\n", + " 'dset0'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (9,\n", + " 'dset1'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.30768836950483003,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (9,\n", + " 'dset6'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (9,\n", + " 'dset8'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.30768836950483003,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (9,\n", + " 'dset7'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 'min': 122300.0,\n", + " 'max': 294780.0,\n", + " 'mean': 177454.875,\n", + " 'var': 2805385415.609375,\n", + " 'imb': 0.6611547020052281,\n", + " 'kurt': 0.3076883695048296,\n", + " 'skew': 1.1457855240980566,\n", + " 'name': 'CalcPressureForElems',\n", + " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (10,\n", + " 'dset5'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (10,\n", + " 'dset9'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (10,\n", + " 'dset7'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (10,\n", + " 'dset2'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (10,\n", + " 'dset3'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (10,\n", + " 'dset8'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (10,\n", + " 'dset4'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (10,\n", + " 'dset1'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (10,\n", + " 'dset0'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (10,\n", + " 'dset6'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 'min': 7737.0,\n", + " 'max': 11973.0,\n", + " 'mean': 8866.25,\n", + " 'var': 1855693.6875,\n", + " 'imb': 0.35040180459608067,\n", + " 'kurt': 0.5525054414458981,\n", + " 'skew': 1.351992620335799,\n", + " 'name': 'CalcSoundSpeedForElems',\n", + " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (11,\n", + " 'dset3'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (11,\n", + " 'dset0'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (11,\n", + " 'dset1'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (11,\n", + " 'dset9'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (11,\n", + " 'dset4'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (11,\n", + " 'dset8'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (11,\n", + " 'dset6'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (11,\n", + " 'dset7'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (11,\n", + " 'dset5'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (11,\n", + " 'dset2'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 'min': 21891.0,\n", + " 'max': 33090.0,\n", + " 'mean': 24217.5,\n", + " 'var': 12339643.75,\n", + " 'imb': 0.36636729637658716,\n", + " 'kurt': 2.1485399802055323,\n", + " 'skew': 1.9162212500008973,\n", + " 'name': 'CalcLagrangeElements',\n", + " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (12,\n", + " 'dset8'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.3230301185739883,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (12,\n", + " 'dset6'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.30425301539189464,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (12,\n", + " 'dset0'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.3230301185739883,\n", + " 'skew': -0.30425301539189464,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (12,\n", + " 'dset5'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (12,\n", + " 'dset7'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (12,\n", + " 'dset4'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (12,\n", + " 'dset2'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.3230301185739883,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (12,\n", + " 'dset3'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (12,\n", + " 'dset1'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.3230301185739883,\n", + " 'skew': -0.3042530153918946,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (12,\n", + " 'dset9'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 'min': 493338.0,\n", + " 'max': 907675.0,\n", + " 'mean': 740734.0,\n", + " 'var': 20585329027.5,\n", + " 'imb': 0.22537240088884808,\n", + " 'kurt': -1.323030118573988,\n", + " 'skew': -0.30425301539189453,\n", + " 'name': 'CalcKinematicsForElems',\n", + " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (13,\n", + " 'dset6'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.4367859406328691,\n", + " 'skew': 0.05525027565125145,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (13,\n", + " 'dset3'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.0552502756512514,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (13,\n", + " 'dset2'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.0552502756512514,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (13,\n", + " 'dset9'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.055250275651251374,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (13,\n", + " 'dset0'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.05525027565125135,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (13,\n", + " 'dset7'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.4367859406328691,\n", + " 'skew': 0.0552502756512514,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (13,\n", + " 'dset4'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.055250275651251374,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (13,\n", + " 'dset8'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.0552502756512514,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (13,\n", + " 'dset1'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.055250275651251374,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (13,\n", + " 'dset5'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 'min': 91947.0,\n", + " 'max': 480632.0,\n", + " 'mean': 281926.625,\n", + " 'var': 18846403589.734375,\n", + " 'imb': 0.7048123780434005,\n", + " 'kurt': -1.436785940632869,\n", + " 'skew': 0.05525027565125135,\n", + " 'name': 'CalcQForElems',\n", + " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (14,\n", + " 'dset3'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.526549192422504,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (14,\n", + " 'dset0'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.526549192422504,\n", + " 'skew': -0.08914394549811258,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (14,\n", + " 'dset2'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (14,\n", + " 'dset1'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (14,\n", + " 'dset4'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.526549192422504,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (14,\n", + " 'dset5'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811255,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (14,\n", + " 'dset7'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.526549192422504,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (14,\n", + " 'dset6'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (14,\n", + " 'dset8'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811265,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (14,\n", + " 'dset9'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 'min': 326522.0,\n", + " 'max': 448753.0,\n", + " 'mean': 393558.125,\n", + " 'var': 1927822359.609375,\n", + " 'imb': 0.140245802319543,\n", + " 'kurt': -1.5265491924225043,\n", + " 'skew': -0.08914394549811255,\n", + " 'name': 'CalcMonotonicQGradientsForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (15,\n", + " 'dset6'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (15,\n", + " 'dset0'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.3569959444006815,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (15,\n", + " 'dset8'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (15,\n", + " 'dset5'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.457723855952867,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (15,\n", + " 'dset9'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.3569959444006816,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (15,\n", + " 'dset2'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.3569959444006816,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (15,\n", + " 'dset3'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (15,\n", + " 'dset4'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.457723855952867,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (15,\n", + " 'dset7'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.457723855952867,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (15,\n", + " 'dset1'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 'min': 155072.0,\n", + " 'max': 262458.0,\n", + " 'mean': 200505.625,\n", + " 'var': 1493866318.484375,\n", + " 'imb': 0.30898073308417157,\n", + " 'kurt': -1.4577238559528671,\n", + " 'skew': 0.35699594440068155,\n", + " 'name': 'CalcMonotonicQRegionForElems',\n", + " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (16,\n", + " 'dset0'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (16,\n", + " 'dset1'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (16,\n", + " 'dset6'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (16,\n", + " 'dset8'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (16,\n", + " 'dset5'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (16,\n", + " 'dset2'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (16,\n", + " 'dset7'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", + " (16,\n", + " 'dset9'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (16,\n", + " 'dset4'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (16,\n", + " 'dset3'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 'min': 6171.0,\n", + " 'max': 42609.0,\n", + " 'mean': 12432.125,\n", + " 'var': 141456796.109375,\n", + " 'imb': 2.427330404094232,\n", + " 'kurt': 2.225680620019963,\n", + " 'skew': 1.9613090112119398,\n", + " 'name': 'UpdateVolumesForElems',\n", + " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (17,\n", + " 'dset1'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (17,\n", + " 'dset0'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (17,\n", + " 'dset6'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007594,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (17,\n", + " 'dset7'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (17,\n", + " 'dset2'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (17,\n", + " 'dset5'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (17,\n", + " 'dset3'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (17,\n", + " 'dset8'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (17,\n", + " 'dset9'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007599,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (17,\n", + " 'dset4'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 'min': 204412.0,\n", + " 'max': 340105.0,\n", + " 'mean': 259490.0,\n", + " 'var': 1952092187.0,\n", + " 'imb': 0.3106670777293923,\n", + " 'kurt': -0.8738686892007594,\n", + " 'skew': 0.44321930188902114,\n", + " 'name': 'LagrangeNodal',\n", + " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (18,\n", + " 'dset5'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (18,\n", + " 'dset4'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (18,\n", + " 'dset0'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (18,\n", + " 'dset9'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (18,\n", + " 'dset2'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (18,\n", + " 'dset7'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (18,\n", + " 'dset1'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (18,\n", + " 'dset3'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.473635133466217,\n", + " 'skew': 0.24309476425208215,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (18,\n", + " 'dset6'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.24309476425208212,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (18,\n", + " 'dset8'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 'min': 126085.0,\n", + " 'max': 537984.0,\n", + " 'mean': 295260.0,\n", + " 'var': 21499247091.0,\n", + " 'imb': 0.8220686852265799,\n", + " 'kurt': -1.4736351334662172,\n", + " 'skew': 0.2430947642520821,\n", + " 'name': 'CalcForceForNodes',\n", + " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", + " 'rank': 6}},\n", + " (19,\n", + " 'dset9'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", + " (19,\n", + " 'dset1'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (19,\n", - " 1): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [25449.0, 25449.0, 25449.0, 25449.0, 25449.0],\n", - " 'min': 25449.0,\n", - " 'max': 25449.0,\n", - " 'mean': 25449.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (19,\n", - " 4): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [23064.0, 23064.0, 23064.0, 23064.0, 23064.0],\n", - " 'min': 23064.0,\n", - " 'max': 23064.0,\n", - " 'mean': 23064.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (19,\n", - " 5): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [23281.0, 23281.0, 23281.0, 23281.0, 23281.0],\n", - " 'min': 23281.0,\n", - " 'max': 23281.0,\n", - " 'mean': 23281.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (19,\n", - " 0): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [21891.0, 21891.0, 21891.0, 21891.0, 21891.0],\n", - " 'min': 21891.0,\n", - " 'max': 21891.0,\n", - " 'mean': 21891.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (19,\n", - " 3): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [22109.0, 22109.0, 22109.0, 22109.0, 22109.0],\n", - " 'min': 22109.0,\n", - " 'max': 22109.0,\n", - " 'mean': 22109.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (19,\n", - " 6): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [22362.0, 22362.0, 22362.0, 22362.0, 22362.0],\n", - " 'min': 22362.0,\n", - " 'max': 22362.0,\n", - " 'mean': 22362.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", " (19,\n", - " 7): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [22494.0, 22494.0, 22494.0, 22494.0, 22494.0],\n", - " 'min': 22494.0,\n", - " 'max': 22494.0,\n", - " 'mean': 22494.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (19,\n", - " 2): {'time': {'name': 'CalcLagrangeElements',\n", - " 'q': [33090.0, 33090.0, 33090.0, 33090.0, 33090.0],\n", - " 'min': 33090.0,\n", - " 'max': 33090.0,\n", - " 'mean': 33090.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 'min': 8339.0,\n", + " 'max': 18019.0,\n", + " 'mean': 10871.0,\n", + " 'var': 10316001.25,\n", + " 'imb': 0.6575292061447889,\n", + " 'kurt': 0.25133425219326355,\n", + " 'skew': 1.2354889222500354,\n", + " 'name': 'CalcVolumeForceForElems',\n", + " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (20,\n", + " 'dset6'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (20,\n", - " 2): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [853294.0, 853294.0, 853294.0, 853294.0, 853294.0],\n", - " 'min': 853294.0,\n", - " 'max': 853294.0,\n", - " 'mean': 853294.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (20,\n", - " 4): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [907675.0, 907675.0, 907675.0, 907675.0, 907675.0],\n", - " 'min': 907675.0,\n", - " 'max': 907675.0,\n", - " 'mean': 907675.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (20,\n", + " 'dset0'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (20,\n", - " 5): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [623934.0, 623934.0, 623934.0, 623934.0, 623934.0],\n", - " 'min': 623934.0,\n", - " 'max': 623934.0,\n", - " 'mean': 623934.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (20,\n", - " 1): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [896981.0, 896981.0, 896981.0, 896981.0, 896981.0],\n", - " 'min': 896981.0,\n", - " 'max': 896981.0,\n", - " 'mean': 896981.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (20,\n", - " 0): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [642566.0, 642566.0, 642566.0, 642566.0, 642566.0],\n", - " 'min': 642566.0,\n", - " 'max': 642566.0,\n", - " 'mean': 642566.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (20,\n", - " 3): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [667751.0, 667751.0, 667751.0, 667751.0, 667751.0],\n", - " 'min': 667751.0,\n", - " 'max': 667751.0,\n", - " 'mean': 667751.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (20,\n", - " 7): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [840333.0, 840333.0, 840333.0, 840333.0, 840333.0],\n", - " 'min': 840333.0,\n", - " 'max': 840333.0,\n", - " 'mean': 840333.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (20,\n", - " 6): {'time': {'name': 'CalcKinematicsForElems',\n", - " 'q': [493338.0, 493338.0, 493338.0, 493338.0, 493338.0],\n", - " 'min': 493338.0,\n", - " 'max': 493338.0,\n", - " 'mean': 493338.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 'min': 494580.0,\n", + " 'max': 599077.0,\n", + " 'mean': 574309.0,\n", + " 'var': 982583388.75,\n", + " 'imb': 0.04312660954294639,\n", + " 'kurt': 2.322254192176139,\n", + " 'skew': -1.930747431397297,\n", + " 'name': 'CalcHourglassControlForElems',\n", + " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (21,\n", - " 4): {'time': {'name': 'CalcQForElems',\n", - " 'q': [91947.0, 91947.0, 91947.0, 91947.0, 91947.0],\n", - " 'min': 91947.0,\n", - " 'max': 91947.0,\n", - " 'mean': 91947.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", + " (21,\n", + " 'dset9'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (21,\n", - " 3): {'time': {'name': 'CalcQForElems',\n", - " 'q': [345305.0, 345305.0, 345305.0, 345305.0, 345305.0],\n", - " 'min': 345305.0,\n", - " 'max': 345305.0,\n", - " 'mean': 345305.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset2'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.3367703510625381,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (21,\n", - " 2): {'time': {'name': 'CalcQForElems',\n", - " 'q': [119519.0, 119519.0, 119519.0, 119519.0, 119519.0],\n", - " 'min': 119519.0,\n", - " 'max': 119519.0,\n", - " 'mean': 119519.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (21,\n", - " 1): {'time': {'name': 'CalcQForElems',\n", - " 'q': [207886.0, 207886.0, 207886.0, 207886.0, 207886.0],\n", - " 'min': 207886.0,\n", - " 'max': 207886.0,\n", - " 'mean': 207886.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (21,\n", - " 6): {'time': {'name': 'CalcQForElems',\n", - " 'q': [480632.0, 480632.0, 480632.0, 480632.0, 480632.0],\n", - " 'min': 480632.0,\n", - " 'max': 480632.0,\n", - " 'mean': 480632.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", + " (21,\n", + " 'dset3'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.33677035106253794,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (21,\n", - " 0): {'time': {'name': 'CalcQForElems',\n", - " 'q': [356717.0, 356717.0, 356717.0, 356717.0, 356717.0],\n", - " 'min': 356717.0,\n", - " 'max': 356717.0,\n", - " 'mean': 356717.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919688,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (21,\n", - " 5): {'time': {'name': 'CalcQForElems',\n", - " 'q': [448598.0, 448598.0, 448598.0, 448598.0, 448598.0],\n", - " 'min': 448598.0,\n", - " 'max': 448598.0,\n", - " 'mean': 448598.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919692,\n", + " 'skew': -0.336770351062538,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 4}},\n", " (21,\n", - " 7): {'time': {'name': 'CalcQForElems',\n", - " 'q': [204809.0, 204809.0, 204809.0, 204809.0, 204809.0],\n", - " 'min': 204809.0,\n", - " 'max': 204809.0,\n", - " 'mean': 204809.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [1088315.0,\n", + " 1160725.0,\n", + " 1205376.5,\n", + " 1234738.25,\n", + " 1276744.0],\n", + " 'min': 1088315.0,\n", + " 'max': 1276744.0,\n", + " 'mean': 1197360.375,\n", + " 'var': 3561043884.734375,\n", + " 'imb': 0.066298857601664,\n", + " 'kurt': -0.8618185329919688,\n", + " 'skew': -0.3367703510625381,\n", + " 'name': 'CalcFBHourglassForceForElems',\n", + " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (22,\n", - " 7): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [371161.0, 371161.0, 371161.0, 371161.0, 371161.0],\n", - " 'min': 371161.0,\n", - " 'max': 371161.0,\n", - " 'mean': 371161.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 3}},\n", " (22,\n", - " 6): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [445067.0, 445067.0, 445067.0, 445067.0, 445067.0],\n", - " 'min': 445067.0,\n", - " 'max': 445067.0,\n", - " 'mean': 445067.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (22,\n", - " 5): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [448753.0, 448753.0, 448753.0, 448753.0, 448753.0],\n", - " 'min': 448753.0,\n", - " 'max': 448753.0,\n", - " 'mean': 448753.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 2}},\n", " (22,\n", - " 4): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [363349.0, 363349.0, 363349.0, 363349.0, 363349.0],\n", - " 'min': 363349.0,\n", - " 'max': 363349.0,\n", - " 'mean': 363349.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset4'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (22,\n", - " 3): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [412746.0, 412746.0, 412746.0, 412746.0, 412746.0],\n", - " 'min': 412746.0,\n", - " 'max': 412746.0,\n", - " 'mean': 412746.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.26583833582917,\n", + " 'skew': -0.10383663574787437,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (22,\n", - " 1): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [326522.0, 326522.0, 326522.0, 326522.0, 326522.0],\n", - " 'min': 326522.0,\n", - " 'max': 326522.0,\n", - " 'mean': 326522.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset3'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (22,\n", - " 0): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [431829.0, 431829.0, 431829.0, 431829.0, 431829.0],\n", - " 'min': 431829.0,\n", - " 'max': 431829.0,\n", - " 'mean': 431829.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478743,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (22,\n", + " 'dset2'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.1038366357478744,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 5}},\n", + " (22,\n", + " 'dset1'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.10383663574787444,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (22,\n", - " 2): {'time': {'name': 'CalcMonotonicQGradientsForElems',\n", - " 'q': [349038.0, 349038.0, 349038.0, 349038.0, 349038.0],\n", - " 'min': 349038.0,\n", - " 'max': 349038.0,\n", - " 'mean': 349038.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 'min': 448597.0,\n", + " 'max': 987804.0,\n", + " 'mean': 725254.375,\n", + " 'var': 29868514054.234375,\n", + " 'imb': 0.3620103980758475,\n", + " 'kurt': -1.2658383358291696,\n", + " 'skew': -0.10383663574787444,\n", + " 'name': 'IntegrateStressForElems',\n", + " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", + " 'rank': 1}},\n", " (23,\n", - " 6): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [155072.0, 155072.0, 155072.0, 155072.0, 155072.0],\n", - " 'min': 155072.0,\n", - " 'max': 155072.0,\n", - " 'mean': 155072.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset0'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215101,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 5}},\n", " (23,\n", - " 0): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [162256.0, 162256.0, 162256.0, 162256.0, 162256.0],\n", - " 'min': 162256.0,\n", - " 'max': 162256.0,\n", - " 'mean': 162256.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset5'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (23,\n", - " 1): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [238276.0, 238276.0, 238276.0, 238276.0, 238276.0],\n", - " 'min': 238276.0,\n", - " 'max': 238276.0,\n", - " 'mean': 238276.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset1'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215101,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 6}},\n", " (23,\n", - " 7): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [262458.0, 262458.0, 262458.0, 262458.0, 262458.0],\n", - " 'min': 262458.0,\n", - " 'max': 262458.0,\n", - " 'mean': 262458.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset7'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 3}},\n", " (23,\n", - " 5): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [165478.0, 165478.0, 165478.0, 165478.0, 165478.0],\n", - " 'min': 165478.0,\n", - " 'max': 165478.0,\n", - " 'mean': 165478.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset6'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (23,\n", - " 4): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [241505.0, 241505.0, 241505.0, 241505.0, 241505.0],\n", - " 'min': 241505.0,\n", - " 'max': 241505.0,\n", - " 'mean': 241505.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset8'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 7}},\n", " (23,\n", - " 3): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [187396.0, 187396.0, 187396.0, 187396.0, 187396.0],\n", - " 'min': 187396.0,\n", - " 'max': 187396.0,\n", - " 'mean': 187396.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", + " 'dset9'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 0}},\n", " (23,\n", - " 2): {'time': {'name': 'CalcMonotonicQRegionForElems',\n", - " 'q': [191604.0, 191604.0, 191604.0, 191604.0, 191604.0],\n", - " 'min': 191604.0,\n", - " 'max': 191604.0,\n", - " 'mean': 191604.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'})}},\n", - " (8,\n", - " 7): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [6171.0, 6171.0, 6171.0, 6171.0, 6171.0],\n", - " 'min': 6171.0,\n", - " 'max': 6171.0,\n", - " 'mean': 6171.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 2): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [6591.0, 6591.0, 6591.0, 6591.0, 6591.0],\n", - " 'min': 6591.0,\n", - " 'max': 6591.0,\n", - " 'mean': 6591.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 1): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [6445.0, 6445.0, 6445.0, 6445.0, 6445.0],\n", - " 'min': 6445.0,\n", - " 'max': 6445.0,\n", - " 'mean': 6445.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 6): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [42609.0, 42609.0, 42609.0, 42609.0, 42609.0],\n", - " 'min': 42609.0,\n", - " 'max': 42609.0,\n", - " 'mean': 42609.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 5): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [7431.0, 7431.0, 7431.0, 7431.0, 7431.0],\n", - " 'min': 7431.0,\n", - " 'max': 7431.0,\n", - " 'mean': 7431.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 4): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [6854.0, 6854.0, 6854.0, 6854.0, 6854.0],\n", - " 'min': 6854.0,\n", - " 'max': 6854.0,\n", - " 'mean': 6854.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 0): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [16902.0, 16902.0, 16902.0, 16902.0, 16902.0],\n", - " 'min': 16902.0,\n", - " 'max': 16902.0,\n", - " 'mean': 16902.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (8,\n", - " 3): {'time': {'name': 'UpdateVolumesForElems',\n", - " 'q': [6454.0, 6454.0, 6454.0, 6454.0, 6454.0],\n", - " 'min': 6454.0,\n", - " 'max': 6454.0,\n", - " 'mean': 6454.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'})}},\n", - " (13,\n", - " 1): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [252178.0, 252178.0, 252178.0, 252178.0, 252178.0],\n", - " 'min': 252178.0,\n", - " 'max': 252178.0,\n", - " 'mean': 252178.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 0): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [206007.0, 206007.0, 206007.0, 206007.0, 206007.0],\n", - " 'min': 206007.0,\n", - " 'max': 206007.0,\n", - " 'mean': 206007.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 2): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [306392.0, 306392.0, 306392.0, 306392.0, 306392.0],\n", - " 'min': 306392.0,\n", - " 'max': 306392.0,\n", - " 'mean': 306392.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 6): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [280120.0, 280120.0, 280120.0, 280120.0, 280120.0],\n", - " 'min': 280120.0,\n", - " 'max': 280120.0,\n", - " 'mean': 280120.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 7): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [340105.0, 340105.0, 340105.0, 340105.0, 340105.0],\n", - " 'min': 340105.0,\n", - " 'max': 340105.0,\n", - " 'mean': 340105.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 5): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [204412.0, 204412.0, 204412.0, 204412.0, 204412.0],\n", - " 'min': 204412.0,\n", - " 'max': 204412.0,\n", - " 'mean': 204412.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 4): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [239869.0, 239869.0, 239869.0, 239869.0, 239869.0],\n", - " 'min': 239869.0,\n", - " 'max': 239869.0,\n", - " 'mean': 239869.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (13,\n", - " 3): {'time': {'name': 'LagrangeNodal',\n", - " 'q': [246837.0, 246837.0, 246837.0, 246837.0, 246837.0],\n", - " 'min': 246837.0,\n", - " 'max': 246837.0,\n", - " 'mean': 246837.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'})}},\n", - " (14,\n", - " 4): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [168395.0, 168395.0, 168395.0, 168395.0, 168395.0],\n", - " 'min': 168395.0,\n", - " 'max': 168395.0,\n", - " 'mean': 168395.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 0): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [411190.0, 411190.0, 411190.0, 411190.0, 411190.0],\n", - " 'min': 411190.0,\n", - " 'max': 411190.0,\n", - " 'mean': 411190.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 6): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [537984.0, 537984.0, 537984.0, 537984.0, 537984.0],\n", - " 'min': 537984.0,\n", - " 'max': 537984.0,\n", - " 'mean': 537984.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 7): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [190604.0, 190604.0, 190604.0, 190604.0, 190604.0],\n", - " 'min': 190604.0,\n", - " 'max': 190604.0,\n", - " 'mean': 190604.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 1): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [140031.0, 140031.0, 140031.0, 140031.0, 140031.0],\n", - " 'min': 140031.0,\n", - " 'max': 140031.0,\n", - " 'mean': 140031.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 2): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [126085.0, 126085.0, 126085.0, 126085.0, 126085.0],\n", - " 'min': 126085.0,\n", - " 'max': 126085.0,\n", - " 'mean': 126085.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 3): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [379447.0, 379447.0, 379447.0, 379447.0, 379447.0],\n", - " 'min': 379447.0,\n", - " 'max': 379447.0,\n", - " 'mean': 379447.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (14,\n", - " 5): {'time': {'name': 'CalcForceForNodes',\n", - " 'q': [408344.0, 408344.0, 408344.0, 408344.0, 408344.0],\n", - " 'min': 408344.0,\n", - " 'max': 408344.0,\n", - " 'mean': 408344.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'})}},\n", - " (15,\n", - " 1): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [8339.0, 8339.0, 8339.0, 8339.0, 8339.0],\n", - " 'min': 8339.0,\n", - " 'max': 8339.0,\n", - " 'mean': 8339.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 0): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [8780.0, 8780.0, 8780.0, 8780.0, 8780.0],\n", - " 'min': 8780.0,\n", - " 'max': 8780.0,\n", - " 'mean': 8780.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 3): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [9174.0, 9174.0, 9174.0, 9174.0, 9174.0],\n", - " 'min': 9174.0,\n", - " 'max': 9174.0,\n", - " 'mean': 9174.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 2): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [13261.0, 13261.0, 13261.0, 13261.0, 13261.0],\n", - " 'min': 13261.0,\n", - " 'max': 13261.0,\n", - " 'mean': 13261.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 4): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [18019.0, 18019.0, 18019.0, 18019.0, 18019.0],\n", - " 'min': 18019.0,\n", - " 'max': 18019.0,\n", - " 'mean': 18019.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 5): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [8653.0, 8653.0, 8653.0, 8653.0, 8653.0],\n", - " 'min': 8653.0,\n", - " 'max': 8653.0,\n", - " 'mean': 8653.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 6): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [8549.0, 8549.0, 8549.0, 8549.0, 8549.0],\n", - " 'min': 8549.0,\n", - " 'max': 8549.0,\n", - " 'mean': 8549.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (15,\n", - " 7): {'time': {'name': 'CalcVolumeForceForElems',\n", - " 'q': [12193.0, 12193.0, 12193.0, 12193.0, 12193.0],\n", - " 'min': 12193.0,\n", - " 'max': 12193.0,\n", - " 'mean': 12193.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'})}},\n", - " (17,\n", - " 6): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [494580.0, 494580.0, 494580.0, 494580.0, 494580.0],\n", - " 'min': 494580.0,\n", - " 'max': 494580.0,\n", - " 'mean': 494580.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 0): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [597414.0, 597414.0, 597414.0, 597414.0, 597414.0],\n", - " 'min': 597414.0,\n", - " 'max': 597414.0,\n", - " 'mean': 597414.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 1): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [570912.0, 570912.0, 570912.0, 570912.0, 570912.0],\n", - " 'min': 570912.0,\n", - " 'max': 570912.0,\n", - " 'mean': 570912.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 2): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [578433.0, 578433.0, 578433.0, 578433.0, 578433.0],\n", - " 'min': 578433.0,\n", - " 'max': 578433.0,\n", - " 'mean': 578433.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 3): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [586524.0, 586524.0, 586524.0, 586524.0, 586524.0],\n", - " 'min': 586524.0,\n", - " 'max': 586524.0,\n", - " 'mean': 586524.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 4): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [583632.0, 583632.0, 583632.0, 583632.0, 583632.0],\n", - " 'min': 583632.0,\n", - " 'max': 583632.0,\n", - " 'mean': 583632.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 5): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [599077.0, 599077.0, 599077.0, 599077.0, 599077.0],\n", - " 'min': 599077.0,\n", - " 'max': 599077.0,\n", - " 'mean': 599077.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (17,\n", - " 7): {'time': {'name': 'CalcHourglassControlForElems',\n", - " 'q': [583900.0, 583900.0, 583900.0, 583900.0, 583900.0],\n", - " 'min': 583900.0,\n", - " 'max': 583900.0,\n", - " 'mean': 583900.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'})}},\n", - " (18,\n", - " 4): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1144720.0, 1144720.0, 1144720.0, 1144720.0, 1144720.0],\n", - " 'min': 1144720.0,\n", - " 'max': 1144720.0,\n", - " 'mean': 1144720.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 5): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1276744.0, 1276744.0, 1276744.0, 1276744.0, 1276744.0],\n", - " 'min': 1276744.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1276744.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 7): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1088315.0, 1088315.0, 1088315.0, 1088315.0, 1088315.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1088315.0,\n", - " 'mean': 1088315.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 2): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1166060.0, 1166060.0, 1166060.0, 1166060.0, 1166060.0],\n", - " 'min': 1166060.0,\n", - " 'max': 1166060.0,\n", - " 'mean': 1166060.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 1): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1187834.0, 1187834.0, 1187834.0, 1187834.0, 1187834.0],\n", - " 'min': 1187834.0,\n", - " 'max': 1187834.0,\n", - " 'mean': 1187834.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 3): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1222919.0, 1222919.0, 1222919.0, 1222919.0, 1222919.0],\n", - " 'min': 1222919.0,\n", - " 'max': 1222919.0,\n", - " 'mean': 1222919.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 0): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1223331.0, 1223331.0, 1223331.0, 1223331.0, 1223331.0],\n", - " 'min': 1223331.0,\n", - " 'max': 1223331.0,\n", - " 'mean': 1223331.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (18,\n", - " 6): {'time': {'name': 'CalcFBHourglassForceForElems',\n", - " 'q': [1268960.0, 1268960.0, 1268960.0, 1268960.0, 1268960.0],\n", - " 'min': 1268960.0,\n", - " 'max': 1268960.0,\n", - " 'mean': 1268960.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'})}},\n", - " (16,\n", - " 3): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [672966.0, 672966.0, 672966.0, 672966.0, 672966.0],\n", - " 'min': 672966.0,\n", - " 'max': 672966.0,\n", - " 'mean': 672966.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 0): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [448597.0, 448597.0, 448597.0, 448597.0, 448597.0],\n", - " 'min': 448597.0,\n", - " 'max': 448597.0,\n", - " 'mean': 448597.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 1): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [832046.0, 832046.0, 832046.0, 832046.0, 832046.0],\n", - " 'min': 832046.0,\n", - " 'max': 832046.0,\n", - " 'mean': 832046.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 2): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [867711.0, 867711.0, 867711.0, 867711.0, 867711.0],\n", - " 'min': 867711.0,\n", - " 'max': 867711.0,\n", - " 'mean': 867711.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 5): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [579856.0, 579856.0, 579856.0, 579856.0, 579856.0],\n", - " 'min': 579856.0,\n", - " 'max': 579856.0,\n", - " 'mean': 579856.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 7): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [987804.0, 987804.0, 987804.0, 987804.0, 987804.0],\n", - " 'min': 987804.0,\n", - " 'max': 987804.0,\n", - " 'mean': 987804.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 4): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [842913.0, 842913.0, 842913.0, 842913.0, 842913.0],\n", - " 'min': 842913.0,\n", - " 'max': 842913.0,\n", - " 'mean': 842913.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (16,\n", - " 6): {'time': {'name': 'IntegrateStressForElems',\n", - " 'q': [570142.0, 570142.0, 570142.0, 570142.0, 570142.0],\n", - " 'min': 570142.0,\n", - " 'max': 570142.0,\n", - " 'mean': 570142.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'})}},\n", - " (12,\n", - " 5): {'time': {'name': 'TimeIncrement',\n", - " 'q': [342333.0, 342333.0, 342333.0, 342333.0, 342333.0],\n", - " 'min': 342333.0,\n", - " 'max': 342333.0,\n", - " 'mean': 342333.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 4): {'time': {'name': 'TimeIncrement',\n", - " 'q': [215603.0, 215603.0, 215603.0, 215603.0, 215603.0],\n", - " 'min': 215603.0,\n", - " 'max': 215603.0,\n", - " 'mean': 215603.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 3): {'time': {'name': 'TimeIncrement',\n", - " 'q': [323519.0, 323519.0, 323519.0, 323519.0, 323519.0],\n", - " 'min': 323519.0,\n", - " 'max': 323519.0,\n", - " 'mean': 323519.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 2): {'time': {'name': 'TimeIncrement',\n", - " 'q': [171635.0, 171635.0, 171635.0, 171635.0, 171635.0],\n", - " 'min': 171635.0,\n", - " 'max': 171635.0,\n", - " 'mean': 171635.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 1): {'time': {'name': 'TimeIncrement',\n", - " 'q': [212402.0, 212402.0, 212402.0, 212402.0, 212402.0],\n", - " 'min': 212402.0,\n", - " 'max': 212402.0,\n", - " 'mean': 212402.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 0): {'time': {'name': 'TimeIncrement',\n", - " 'q': [418469.0, 418469.0, 418469.0, 418469.0, 418469.0],\n", - " 'min': 418469.0,\n", - " 'max': 418469.0,\n", - " 'mean': 418469.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 7): {'time': {'name': 'TimeIncrement',\n", - " 'q': [540.0, 540.0, 540.0, 540.0, 540.0],\n", + " 'dset2'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", " 'min': 540.0,\n", - " 'max': 540.0,\n", - " 'mean': 540.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}},\n", - " (12,\n", - " 6): {'time': {'name': 'TimeIncrement',\n", - " 'q': [423809.0, 423809.0, 423809.0, 423809.0, 423809.0],\n", - " 'min': 423809.0,\n", " 'max': 423809.0,\n", - " 'mean': 423809.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'})}}}" + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 0}},\n", + " (23,\n", + " 'dset3'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 7}},\n", + " (23,\n", + " 'dset4'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 'min': 540.0,\n", + " 'max': 423809.0,\n", + " 'mean': 263538.75,\n", + " 'var': 17752943089.6875,\n", + " 'imb': 0.6081468095299079,\n", + " 'kurt': -0.5587672106468693,\n", + " 'skew': -0.5638928119215102,\n", + " 'name': 'TimeIncrement',\n", + " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", + " 'rank': 0}}}" ] }, "execution_count": 9, @@ -2844,11 +3713,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "KeyError", + "evalue": "'\"boxplot\"'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/rv/jkb6mxgd0mbgz87qvq9356zw0000gn/T/ipykernel_70357/1134765071.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'loadVisualization'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'roundtrip_path \"boxplot\" bp_json'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m 2346\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_local_scope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2347\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2348\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2349\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2350\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/decorator.py\u001b[0m in \u001b[0;36mfun\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mkwsyntax\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcaller\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextras\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0mfun\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mfun\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 188\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Work/llnl/hatchet/hatchet/external/roundtrip/roundtrip.py\u001b[0m in \u001b[0;36mloadVisualization\u001b[0;34m(self, line)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mdisplayObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHTML\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margList\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay_id\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 64\u001b[0;31m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_ns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 65\u001b[0m \u001b[0mdisplayObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mJavascript\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'argList.push(\"'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'\")'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: '\"boxplot\"'" + ] + } + ], "source": [ "%loadVisualization roundtrip_path \"boxplot\" bp_json" ] diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index ba960972..475ac0a6 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -8,7 +8,7 @@ class BoxPlot: def __init__( self, multi_index_gf, - cat_column="rank", + drop_index="", metrics=[], ): """ @@ -17,50 +17,71 @@ def __init__( Arguments: multi_index_gf: (ht.GraphFrame) Target GraphFrame. - cat_column: (string) Categorical column to aggregate the boxplot computation. + drop_index: (string) Categorical column to aggregate the boxplot + computation. (Optional, as long as there is only 2 indexes in the + ht.GraphFrame) metrics: (list) List of metrics to compute. Return: None """ assert isinstance(multi_index_gf, ht.GraphFrame) + assert isinstance(drop_index, str) assert isinstance(metrics, list) self.df_index = list(multi_index_gf.dataframe.index.names) - drop_indexes = ["node", cat_column] - # Remove cat_column from the index, since we will aggregate by this column. - for index in drop_indexes: - if index in self.df_index: - self.df_index.remove(index) - - print(self.df_index) + # Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`. + if len(self.df_index) > 2 and not drop_index: + raise Exception(f"multi_index_gf contains len(self.df_index) indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity.") + + # Validate primary index is 'node'. + if "node" not in self.df_index: + raise Exception(f"BoxPlot expects 'node' to be a primary index of 'multi_index_gf'.") + + # Validate drop_index in the dataframe, if provided. + if drop_index and drop_index not in self.df_index: + raise Exception(f"'drop_index: {drop_index}' is not a valid index of 'multi_index_gf'.") + + # Validate metrics are columns in the dataframe, if provided. + if len(metrics) > 0: + for metric in metrics: + if metric not in multi_index_gf.dataframe.columns: + raise Exception(f"{metric} not found in the gf.dataframe.") + + # Set drop_index as the secondary index. + if len(self.df_index) == 2: + drop_index = multi_index_gf.dataframe.names[1] + + # Reset the indexes in the dataframe. multi_index_gf.dataframe = multi_index_gf.dataframe.reset_index() - if cat_column not in multi_index_gf.dataframe.columns: - raise Exception(f"{cat_column} not found in tgt_gf.") - - self.iqr_scale = 1.5 - self.cat_column = cat_column - + + # Set the metrics for computation. if len(metrics) == 0: self.metrics = multi_index_gf.inc_metrics + multi_index_gf.exc_metrics else: self.metrics = metrics - self.input_index = ["nid", cat_column] - self.output_index = ["node", cat_column] + # BoxPlot API will aggregate considering the `hatchet_nid` and the `drop_index`. + self.group_by = ["hatchet_nid", drop_index] + + # Drop the 'node' and `drop_index` from the ht.GraphFrame.DataFrame's indexes. + self.df_index.remove("node") + self.df_index.remove(drop_index) + + # Hatchet columns that are required by BoxPlot API for computation. self.ht_columns = ["name", "node"] - self.callsites, tgt_dict = BoxPlot.df_groupby( + # Group the dataframe by the provided group_by columns. + self.callsites, callsites_dict = BoxPlot.df_groupby( multi_index_gf.dataframe, - groupby=self.input_index, - cols=self.metrics + self.ht_columns, + groupby=self.group_by, + cols=self.metrics + self.ht_columns + self.df_index, ) - self.result = {} - for callsite in self.callsites: - tgt_df = tgt_dict[callsite] - self.result[callsite] = self.compute(tgt_df) - + # Dump the computation result for each callsite. + self.result = { callsite: self.compute(callsites_dict[callsite]) for callsite in self.callsites} + + # Convert it to a GraphFrame. self.gf = self.to_gf(multi_index_gf) @staticmethod @@ -141,7 +162,7 @@ def compute(self, df): ret = {_: {} for _ in self.metrics} for tk, tv in zip(self.metrics, self.metrics): q = np.percentile(df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) - mask = BoxPlot.outliers(df[tv], scale=self.iqr_scale) + mask = BoxPlot.outliers(df[tv], scale=1.5) mask = np.where(mask)[0] _data = df[tv].to_numpy() @@ -164,10 +185,11 @@ def compute(self, df): "uv": (_mean, _var), "imb": _imb, "ks": (_kurt, _skew), - "name": df["name"].unique().tolist()[0], - "node": df["node"].unique().tolist()[0] } + for ht_column in self.ht_columns + self.df_index: + ret[tk][ht_column] = df[ht_column].iloc[0] + return ret def to_json(self): @@ -217,7 +239,6 @@ def _unpack_callsite(self, callsite): for metric in self.metrics: box = self.result[callsite][metric] ret[metric] = { - "name": box["name"], "q": box["q"].tolist(), # "ocat": box["ocat"], # TODO # "ometric": box["ometric"].tolist(), # TODO @@ -228,9 +249,11 @@ def _unpack_callsite(self, callsite): "imb": box["imb"], "kurt": box["ks"][0], "skew": box["ks"][1], - "node": box["node"] } + for ht_column in self.ht_columns + self.df_index: + ret[metric][ht_column] = box[ht_column] + return ret def _to_gf_by_metric(self, gf, metric): @@ -265,9 +288,9 @@ def _to_gf_by_metric(self, gf, metric): } tmp_df = pd.DataFrame.from_dict(data=_dict).T tmp_df = tmp_df.astype(_dtype) - tmp_df.index.names = self.input_index + tmp_df.index.names = self.group_by tmp_df.reset_index(inplace=True) - tmp_df.set_index(self.output_index, inplace=True) + tmp_df.set_index(["node"] + self.df_index, inplace=True) # TODO: Would we need to squash the graph. (Check in the to_gf() method.) # Call into the gf.groupby_aggregate() (in PR) before returning the gf. From c4ded4cbd07df20fc0215110a64af61f37f9013d Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 11:46:56 -0700 Subject: [PATCH 13/29] Fix group_by bug --- .../performance_variability_boxplots.ipynb | 649 +++++++++++------- hatchet/util/boxplot.py | 46 +- 2 files changed, 424 insertions(+), 271 deletions(-) diff --git a/docs/examples/tutorial/performance_variability_boxplots.ipynb b/docs/examples/tutorial/performance_variability_boxplots.ipynb index a7e7f7b2..76e08814 100644 --- a/docs/examples/tutorial/performance_variability_boxplots.ipynb +++ b/docs/examples/tutorial/performance_variability_boxplots.ipynb @@ -286,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -299,8 +299,7 @@ } ], "source": [ - "from pyinstrument import Profiler\n", - "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"dataset\")" + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"rank\")" ] }, { @@ -312,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -338,7 +337,6 @@ " \n", " \n", " hatchet_nid\n", - " dataset\n", " q\n", " min\n", " max\n", @@ -351,8 +349,7 @@ " \n", " \n", " node\n", - " rank\n", - " \n", + " dataset\n", " \n", " \n", " \n", @@ -368,9 +365,8 @@ " \n", " \n", " {'name': 'main', 'type': 'region'}\n", - " 0\n", + " dset9\n", " 0\n", - " dset9\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -382,9 +378,8 @@ " main\n", " \n", " \n", - " 4\n", + " dset7\n", " 0\n", - " dset7\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -396,9 +391,8 @@ " main\n", " \n", " \n", - " 7\n", + " dset1\n", " 0\n", - " dset1\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -410,9 +404,8 @@ " main\n", " \n", " \n", - " 1\n", + " dset3\n", " 0\n", - " dset3\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -424,9 +417,8 @@ " main\n", " \n", " \n", - " 0\n", + " dset6\n", " 0\n", - " dset6\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -450,13 +442,11 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " {'name': 'TimeIncrement', 'type': 'region'}\n", - " 7\n", + " dset8\n", " 23\n", - " dset8\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -468,9 +458,8 @@ " TimeIncrement\n", " \n", " \n", - " 0\n", + " dset9\n", " 23\n", - " dset9\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -482,9 +471,8 @@ " TimeIncrement\n", " \n", " \n", - " 0\n", + " dset2\n", " 23\n", - " dset2\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -496,9 +484,8 @@ " TimeIncrement\n", " \n", " \n", - " 7\n", + " dset3\n", " 23\n", - " dset3\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -510,9 +497,8 @@ " TimeIncrement\n", " \n", " \n", - " 0\n", + " dset4\n", " 23\n", - " dset4\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -525,98 +511,98 @@ " \n", " \n", "\n", - "

240 rows × 11 columns

\n", + "

240 rows × 10 columns

\n", "" ], "text/plain": [ - " hatchet_nid dataset \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0 dset9 \n", - " 4 0 dset7 \n", - " 7 0 dset1 \n", - " 1 0 dset3 \n", - " 0 0 dset6 \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 23 dset8 \n", - " 0 23 dset9 \n", - " 0 23 dset2 \n", - " 7 23 dset3 \n", - " 0 23 dset4 \n", + " hatchet_nid \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 0 \n", + " dset7 0 \n", + " dset1 0 \n", + " dset3 0 \n", + " dset6 0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 23 \n", + " dset9 23 \n", + " dset2 23 \n", + " dset3 23 \n", + " dset4 23 \n", "\n", - " q \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", - " 4 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", - " 7 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", - " 1 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", - " 0 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", - "... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", - " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", - " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", - " 7 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", - " 0 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " q \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " dset7 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " dset1 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " dset3 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + " dset6 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " dset9 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " dset2 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " dset3 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", + " dset4 [540.0, 202210.25, 269561.0, 361367.0, 423809.0] \n", "\n", - " min max \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 105528.0 137098.0 \n", - " 4 105528.0 137098.0 \n", - " 7 105528.0 137098.0 \n", - " 1 105528.0 137098.0 \n", - " 0 105528.0 137098.0 \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 540.0 423809.0 \n", - " 0 540.0 423809.0 \n", - " 0 540.0 423809.0 \n", - " 7 540.0 423809.0 \n", - " 0 540.0 423809.0 \n", + " min max \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 105528.0 137098.0 \n", + " dset7 105528.0 137098.0 \n", + " dset1 105528.0 137098.0 \n", + " dset3 105528.0 137098.0 \n", + " dset6 105528.0 137098.0 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 540.0 423809.0 \n", + " dset9 540.0 423809.0 \n", + " dset2 540.0 423809.0 \n", + " dset3 540.0 423809.0 \n", + " dset4 540.0 423809.0 \n", "\n", - " mean var \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 119373.50 1.044980e+08 \n", - " 4 119373.50 1.044980e+08 \n", - " 7 119373.50 1.044980e+08 \n", - " 1 119373.50 1.044980e+08 \n", - " 0 119373.50 1.044980e+08 \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 263538.75 1.775294e+10 \n", - " 0 263538.75 1.775294e+10 \n", - " 0 263538.75 1.775294e+10 \n", - " 7 263538.75 1.775294e+10 \n", - " 0 263538.75 1.775294e+10 \n", + " mean var \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 119373.50 1.044980e+08 \n", + " dset7 119373.50 1.044980e+08 \n", + " dset1 119373.50 1.044980e+08 \n", + " dset3 119373.50 1.044980e+08 \n", + " dset6 119373.50 1.044980e+08 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 263538.75 1.775294e+10 \n", + " dset9 263538.75 1.775294e+10 \n", + " dset2 263538.75 1.775294e+10 \n", + " dset3 263538.75 1.775294e+10 \n", + " dset4 263538.75 1.775294e+10 \n", "\n", - " imb kurt \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0.148479 -0.942185 \n", - " 4 0.148479 -0.942185 \n", - " 7 0.148479 -0.942185 \n", - " 1 0.148479 -0.942185 \n", - " 0 0.148479 -0.942185 \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 0.608147 -0.558767 \n", - " 0 0.608147 -0.558767 \n", - " 0 0.608147 -0.558767 \n", - " 7 0.608147 -0.558767 \n", - " 0 0.608147 -0.558767 \n", + " imb kurt \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 0.148479 -0.942185 \n", + " dset7 0.148479 -0.942185 \n", + " dset1 0.148479 -0.942185 \n", + " dset3 0.148479 -0.942185 \n", + " dset6 0.148479 -0.942185 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 0.608147 -0.558767 \n", + " dset9 0.608147 -0.558767 \n", + " dset2 0.608147 -0.558767 \n", + " dset3 0.608147 -0.558767 \n", + " dset4 0.608147 -0.558767 \n", "\n", - " skew name \n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0.543673 main \n", - " 4 0.543673 main \n", - " 7 0.543673 main \n", - " 1 0.543673 main \n", - " 0 0.543673 main \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 7 -0.563893 TimeIncrement \n", - " 0 -0.563893 TimeIncrement \n", - " 0 -0.563893 TimeIncrement \n", - " 7 -0.563893 TimeIncrement \n", - " 0 -0.563893 TimeIncrement \n", + " skew name \n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 0.543673 main \n", + " dset7 0.543673 main \n", + " dset1 0.543673 main \n", + " dset3 0.543673 main \n", + " dset6 0.543673 main \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 -0.563893 TimeIncrement \n", + " dset9 -0.563893 TimeIncrement \n", + " dset2 -0.563893 TimeIncrement \n", + " dset3 -0.563893 TimeIncrement \n", + " dset4 -0.563893 TimeIncrement \n", "\n", - "[240 rows x 11 columns]" + "[240 rows x 10 columns]" ] }, - "execution_count": 5, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -628,30 +614,31 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "MultiIndex: 240 entries, (Node({'name': 'main', 'type': 'region'}), 0) to (Node({'name': 'TimeIncrement', 'type': 'region'}), 0)\n", - "Data columns (total 11 columns):\n", + "MultiIndex: 240 entries, (Node({'name': 'main', 'type': 'region'}), 'dset9') to (Node({'name': 'TimeIncrement', 'type': 'region'}), 'dset4')\n", + "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 hatchet_nid 240 non-null int64 \n", - " 1 dataset 240 non-null object \n", - " 2 q 240 non-null object \n", - " 3 min 240 non-null float64\n", - " 4 max 240 non-null float64\n", - " 5 mean 240 non-null float64\n", - " 6 var 240 non-null float64\n", - " 7 imb 240 non-null float64\n", - " 8 kurt 240 non-null float64\n", - " 9 skew 240 non-null float64\n", - " 10 name 240 non-null object \n", - "dtypes: float64(7), int64(1), object(3)\n", - "memory usage: 22.3+ KB\n" + " 1 q 240 non-null object \n", + " 2 min 240 non-null float64\n", + " 3 max 240 non-null float64\n", + " 4 mean 240 non-null float64\n", + " 5 var 240 non-null float64\n", + " 6 imb 240 non-null float64\n", + " 7 kurt 240 non-null float64\n", + " 8 skew 240 non-null float64\n", + " 9 name 240 non-null object \n", + "dtypes: float64(7), int64(1), object(2)\n", + "memory usage: 20.4+ KB\n" ] } ], @@ -660,54 +647,316 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 15, "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3361: PerformanceWarning: indexing past lexsort depth may impact performance.\n", + " if (await self.run_code(code, result, async_=asy)):\n" + ] + } + ], "source": [ - "Using the **roundtrip** interface, we can then visualize the compute boxplot information. Below, we load the roundtrip interface that allows users to visualize plots on jupyter notebook cells directly. " + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"dataset\")" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "" + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hatchet_nidqminmaxmeanvarimbkurtskewname
noderank
{'name': 'main', 'type': 'region'}00[121489.0, 121489.0, 121489.0, 121489.0, 12148...121489.0121489.0121489.00.00.0-3.00.0main
40[118953.0, 118953.0, 118953.0, 118953.0, 11895...118953.0118953.0118953.00.00.0-3.00.0main
50[133256.0, 133256.0, 133256.0, 133256.0, 13325...133256.0133256.0133256.00.00.0-3.00.0main
60[114035.0, 114035.0, 114035.0, 114035.0, 11403...114035.0114035.0114035.00.00.0-3.00.0main
70[137098.0, 137098.0, 137098.0, 137098.0, 13709...137098.0137098.0137098.00.00.0-3.00.0main
....................................
{'name': 'TimeIncrement', 'type': 'region'}223[171635.0, 171635.0, 171635.0, 171635.0, 17163...171635.0171635.0171635.00.00.0-3.00.0TimeIncrement
123[212402.0, 212402.0, 212402.0, 212402.0, 21240...212402.0212402.0212402.00.00.0-3.00.0TimeIncrement
023[418469.0, 418469.0, 418469.0, 418469.0, 41846...418469.0418469.0418469.00.00.0-3.00.0TimeIncrement
723[540.0, 540.0, 540.0, 540.0, 540.0]540.0540.0540.00.00.0-3.00.0TimeIncrement
623[423809.0, 423809.0, 423809.0, 423809.0, 42380...423809.0423809.0423809.00.00.0-3.00.0TimeIncrement
\n", + "

192 rows × 10 columns

\n", + "
" ], "text/plain": [ - "" + " hatchet_nid \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0 \n", + " 4 0 \n", + " 5 0 \n", + " 6 0 \n", + " 7 0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 23 \n", + " 1 23 \n", + " 0 23 \n", + " 7 23 \n", + " 6 23 \n", + "\n", + " q \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 [121489.0, 121489.0, 121489.0, 121489.0, 12148... \n", + " 4 [118953.0, 118953.0, 118953.0, 118953.0, 11895... \n", + " 5 [133256.0, 133256.0, 133256.0, 133256.0, 13325... \n", + " 6 [114035.0, 114035.0, 114035.0, 114035.0, 11403... \n", + " 7 [137098.0, 137098.0, 137098.0, 137098.0, 13709... \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 [171635.0, 171635.0, 171635.0, 171635.0, 17163... \n", + " 1 [212402.0, 212402.0, 212402.0, 212402.0, 21240... \n", + " 0 [418469.0, 418469.0, 418469.0, 418469.0, 41846... \n", + " 7 [540.0, 540.0, 540.0, 540.0, 540.0] \n", + " 6 [423809.0, 423809.0, 423809.0, 423809.0, 42380... \n", + "\n", + " min max \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 121489.0 121489.0 \n", + " 4 118953.0 118953.0 \n", + " 5 133256.0 133256.0 \n", + " 6 114035.0 114035.0 \n", + " 7 137098.0 137098.0 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 171635.0 \n", + " 1 212402.0 212402.0 \n", + " 0 418469.0 418469.0 \n", + " 7 540.0 540.0 \n", + " 6 423809.0 423809.0 \n", + "\n", + " mean var imb kurt \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 121489.0 0.0 0.0 -3.0 \n", + " 4 118953.0 0.0 0.0 -3.0 \n", + " 5 133256.0 0.0 0.0 -3.0 \n", + " 6 114035.0 0.0 0.0 -3.0 \n", + " 7 137098.0 0.0 0.0 -3.0 \n", + "... ... ... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 171635.0 0.0 0.0 -3.0 \n", + " 1 212402.0 0.0 0.0 -3.0 \n", + " 0 418469.0 0.0 0.0 -3.0 \n", + " 7 540.0 0.0 0.0 -3.0 \n", + " 6 423809.0 0.0 0.0 -3.0 \n", + "\n", + " skew name \n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0.0 main \n", + " 4 0.0 main \n", + " 5 0.0 main \n", + " 6 0.0 main \n", + " 7 0.0 main \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 0.0 TimeIncrement \n", + " 1 0.0 TimeIncrement \n", + " 0 0.0 TimeIncrement \n", + " 7 0.0 TimeIncrement \n", + " 6 0.0 TimeIncrement \n", + "\n", + "[192 rows x 10 columns]" ] }, + "execution_count": 16, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "# This is the relative path from the notebook to Roundtrip files in hatchet/external/roundtrip/\n", - "roundtrip_path = '../../../hatchet/external/roundtrip/'\n", - "hatchet_path = \".\"\n", - "\n", - "# Add the path so that the notebook can find the Roundtrip extension\n", - "module_path = os.path.abspath(os.path.join(roundtrip_path)) \n", - "if module_path not in sys.path:\n", - " sys.path.append(module_path)\n", - " sys.path.append(hatchet_path)\n", - "\n", - " \n", - "# Uncomment this line to widen the cells to handle large trees \n", - "#display(HTML(\"\"))\n", - "\n", - "# Load the Roundtrip extension. This only needs to be loaded once.\n", - "%load_ext roundtrip" + "bp.gf['time'].dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Since **roundtrip** excepts the data in JSON format, **Boxplot** API exposes a method, `to_json()` which will dump the boxplot's graphframes (i.e., `tgt` and `bkg`) in JSON." + "Using the **roundtrip** interface, we can then visualize the compute boxplot information. Below, we load the roundtrip interface that allows users to visualize plots on jupyter notebook cells directly. " ] }, { @@ -3697,112 +3946,6 @@ "source": [ "bp_json" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can trigger the visualization using **roundtrip** magic command, `%loadVisualization`. `%loadVisualization` expects the `roundtrip_path` (path in which roundtrip resides), `\"boxplot\"` (identifier to the visualization type) and variable containing the data for the boxplots (here it is bp_json).\n", - "\n", - "Interactions on the boxplot visualization:\n", - "1. Users can select the metric of interest to visualize the corresponding runtime information.\n", - "2. Users can sort the callsites by their statistical attributes (i.e., mean, min, max, variance, imbalance, kurtosis and skewness).\n", - "3. Users can select the sorting order (i.e., ascending or descending).\n", - "4. Users can select the number of callsites that would be visualized." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "ename": "KeyError", - "evalue": "'\"boxplot\"'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/rv/jkb6mxgd0mbgz87qvq9356zw0000gn/T/ipykernel_70357/1134765071.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'loadVisualization'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'roundtrip_path \"boxplot\" bp_json'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m 2346\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_local_scope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2347\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2348\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2349\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2350\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/decorator.py\u001b[0m in \u001b[0;36mfun\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mkwsyntax\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcaller\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextras\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0mfun\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mfun\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 188\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Work/llnl/hatchet/hatchet/external/roundtrip/roundtrip.py\u001b[0m in \u001b[0;36mloadVisualization\u001b[0;34m(self, line)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mdisplayObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHTML\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margList\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay_id\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 64\u001b[0;31m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_ns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 65\u001b[0m \u001b[0mdisplayObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mJavascript\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'argList.push(\"'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'\")'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: '\"boxplot\"'" - ] - } - ], - "source": [ - "%loadVisualization roundtrip_path \"boxplot\" bp_json" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the exploration of the variability is done. Users can get the corresponding data in their visualization using the `%fetchData` magic command. Similar to the `%loadVisualization`, we will have to specify `\"boxplot\"` to identify the corresponding visualization type. The results will be stored in the following variable (here it is `result_csv` ) in the `.csv` format." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%fetchData \"boxplot\" result_csv" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(result_csv)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `.csv` formatted output can be converted to a dataframe as shown below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "columns = result_csv.split(';')[0].split(',')\n", - "data = [x.split(',') for x in result_csv.split(';')[1:]]\n", - "df = pd.DataFrame(data, columns=columns).set_index('name')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df" - ] } ], "metadata": { diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 475ac0a6..142cdbf3 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -28,18 +28,18 @@ def __init__( assert isinstance(drop_index, str) assert isinstance(metrics, list) - self.df_index = list(multi_index_gf.dataframe.index.names) + df_index = list(multi_index_gf.dataframe.index.names) # Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`. - if len(self.df_index) > 2 and not drop_index: + if len(df_index) > 2 and not drop_index: raise Exception(f"multi_index_gf contains len(self.df_index) indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity.") # Validate primary index is 'node'. - if "node" not in self.df_index: + if "node" not in df_index: raise Exception(f"BoxPlot expects 'node' to be a primary index of 'multi_index_gf'.") # Validate drop_index in the dataframe, if provided. - if drop_index and drop_index not in self.df_index: + if drop_index and drop_index not in df_index: raise Exception(f"'drop_index: {drop_index}' is not a valid index of 'multi_index_gf'.") # Validate metrics are columns in the dataframe, if provided. @@ -49,40 +49,48 @@ def __init__( raise Exception(f"{metric} not found in the gf.dataframe.") # Set drop_index as the secondary index. - if len(self.df_index) == 2: - drop_index = multi_index_gf.dataframe.names[1] + if len(df_index) == 2: + self.drop_index = multi_index_gf.dataframe.names[1] + else: + self.drop_index = drop_index # Reset the indexes in the dataframe. - multi_index_gf.dataframe = multi_index_gf.dataframe.reset_index() + multi_index_gf_copy = multi_index_gf.copy() + multi_index_gf_copy.dataframe = multi_index_gf.dataframe.reset_index() # Set the metrics for computation. if len(metrics) == 0: - self.metrics = multi_index_gf.inc_metrics + multi_index_gf.exc_metrics + self.metrics = multi_index_gf_copy.inc_metrics + multi_index_gf_copy.exc_metrics else: self.metrics = metrics - # BoxPlot API will aggregate considering the `hatchet_nid` and the `drop_index`. - self.group_by = ["hatchet_nid", drop_index] - # Drop the 'node' and `drop_index` from the ht.GraphFrame.DataFrame's indexes. - self.df_index.remove("node") - self.df_index.remove(drop_index) + df_index.remove("node") + df_index.remove(self.drop_index) + + self.df_index = df_index + # BoxPlot API will aggregate considering the `hatchet_nid` and the + # `drop_index`. + self.group_by = ["hatchet_nid"] + self.df_index # Hatchet columns that are required by BoxPlot API for computation. self.ht_columns = ["name", "node"] # Group the dataframe by the provided group_by columns. self.callsites, callsites_dict = BoxPlot.df_groupby( - multi_index_gf.dataframe, + multi_index_gf_copy.dataframe, groupby=self.group_by, - cols=self.metrics + self.ht_columns + self.df_index, + cols=self.metrics + self.ht_columns + [self.drop_index], ) + # for callsite in self.callsites: + # print(callsites_dict[callsite]) + # Dump the computation result for each callsite. self.result = { callsite: self.compute(callsites_dict[callsite]) for callsite in self.callsites} # Convert it to a GraphFrame. - self.gf = self.to_gf(multi_index_gf) + self.gf = self.to_gf(multi_index_gf_copy) @staticmethod def df_groupby(df, groupby, cols): @@ -187,7 +195,7 @@ def compute(self, df): "ks": (_kurt, _skew), } - for ht_column in self.ht_columns + self.df_index: + for ht_column in self.ht_columns + [self.drop_index]: ret[tk][ht_column] = df[ht_column].iloc[0] return ret @@ -251,7 +259,7 @@ def _unpack_callsite(self, callsite): "skew": box["ks"][1], } - for ht_column in self.ht_columns + self.df_index: + for ht_column in self.ht_columns + [self.drop_index]: ret[metric][ht_column] = box[ht_column] return ret @@ -290,6 +298,8 @@ def _to_gf_by_metric(self, gf, metric): tmp_df = tmp_df.astype(_dtype) tmp_df.index.names = self.group_by tmp_df.reset_index(inplace=True) + + tmp_df = tmp_df.drop(columns=[self.drop_index]) tmp_df.set_index(["node"] + self.df_index, inplace=True) # TODO: Would we need to squash the graph. (Check in the to_gf() method.) From decf36eb91e9bd1529cffc7a2b80ed4d667dedb3 Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 11:50:46 -0700 Subject: [PATCH 14/29] Remove the scripts folder --- hatchet/external/scripts/__init__.py | 9 - hatchet/external/scripts/boxplot.py | 331 --------------------------- setup.py | 1 - 3 files changed, 341 deletions(-) delete mode 100644 hatchet/external/scripts/__init__.py delete mode 100644 hatchet/external/scripts/boxplot.py diff --git a/hatchet/external/scripts/__init__.py b/hatchet/external/scripts/__init__.py deleted file mode 100644 index bde29b6a..00000000 --- a/hatchet/external/scripts/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2017-2021 Lawrence Livermore National Security, LLC and other -# Hatchet Project Developers. See the top-level LICENSE file for details. -# -# SPDX-License-Identifier: MIT - -# make flake8 unused names in this file. -# flake8: noqa: F401 - -from .boxplot import BoxPlot diff --git a/hatchet/external/scripts/boxplot.py b/hatchet/external/scripts/boxplot.py deleted file mode 100644 index 4c1dbbc5..00000000 --- a/hatchet/external/scripts/boxplot.py +++ /dev/null @@ -1,331 +0,0 @@ -import numpy as np -import pandas as pd -from scipy import stats -import hatchet as ht - - -class BoxPlot: - def __init__( - self, - cat_column, - tgt_gf, - bkg_gf=None, - group_by="nid", - metrics=[], - ): - """ - Boxplot computation for callsites. The data can be computed for two use - cases: - 1. Examining runtime distributions of a single GraphFrame. - 2. Comparing runtime distributions of a target GraphFrame against a - background GraphFrame. - - Arguments: - cat_column: (string) Categorical column to aggregate the boxplot computation. - tgt_gf: (ht.GraphFrame) Target GraphFrame. - bkg_gf: (ht.GraphFrame) Background GraphFrame. - group_by: (string) Column to identify the callsites (e.g., name, nid). - metrics: (list) List of metrics to compute. - - Return: None - """ - assert isinstance(tgt_gf, ht.GraphFrame) - assert isinstance(group_by, str) - assert isinstance(metrics, list) - - if bkg_gf is not None: - assert isinstance(bkg_gf, ht.GraphFrame) - - self.df_index = list(tgt_gf.dataframe.index.names) - # Remove cat_column from the index, since we will aggregate by this column. - if cat_column in self.df_index: - self.df_index.remove(cat_column) - - tgt_gf.dataframe = tgt_gf.dataframe.reset_index() - if cat_column not in tgt_gf.dataframe.columns: - raise Exception(f"{cat_column} not found in tgt_gf.") - - if bkg_gf is not None: - bkg_gf.dataframe = bkg_gf.dataframe.reset_index() - if cat_column not in bkg_gf.dataframe.columns: - raise Exception(f"{cat_column} not found in bkg_gf.") - - self.iqr_scale = 1.5 - self.cat_column = cat_column - - if len(metrics) == 0: - self.metrics = tgt_gf.inc_metrics + tgt_gf.exc_metrics - else: - self.metrics = metrics - - self.callsites = tgt_gf.dataframe[group_by].unique().tolist() - if bkg_gf is not None: - self.callsites = ( - tgt_gf.dataframe[group_by].unique().tolist() - + bkg_gf.dataframe[group_by].unique().tolist() - ) - - tgt_dict = BoxPlot.df_groupby( - tgt_gf.dataframe, - groupby=group_by, - cols=self.metrics + [self.cat_column] + self.df_index + ["name"], - ) - self.box_types = ["tgt"] - - if bkg_gf is not None: - bkg_dict = BoxPlot.df_groupby( - bkg_gf.dataframe, - groupby=group_by, - cols=self.metrics + [self.cat_column] + self.df_index + ["name"], - ) - self.box_types = ["tgt", "bkg"] - - self.result = {} - for callsite in self.callsites: - ret = {} - tgt_df = tgt_dict[callsite] - ret["tgt"] = self.compute(tgt_df) - - if bkg_gf is not None: - bkg_df = bkg_dict[callsite] - ret["bkg"] = self.compute(bkg_df) - - self.result[callsite] = ret - - self.tgt = self.to_gf(tgt_gf, "tgt") - if bkg_gf is not None: - self.bkg = self.to_gf(bkg_gf, "bkg") - - @staticmethod - def df_groupby(df, groupby, cols): - """ - Group the dataframe by groupby column. - - Arguments: - df (graphframe): self's graphframe - groupby: groupby columns on dataframe - cols: columns from the dataframe - - Return: - (dict): A dictionary of dataframes (columns) keyed by groups. - """ - _df = df.set_index([groupby]) - _levels = _df.index.unique().tolist() - - return {_: _df.xs(_)[cols] for _ in _levels} - - @staticmethod - def outliers(data, scale=1.5, side="both"): - """ - Calculate outliers from the data. - - Arguments: - data (np.ndarray or pd.Series): Array of values. - scale (float): IQR range for outliers. - side (str): directions for calculating the outliers, i.e., left, - right, both. - - Return: - outliers (np.ndarray): Array of outlier values. - """ - assert isinstance(data, (pd.Series, np.ndarray)) - assert len(data.shape) == 1 - assert isinstance(scale, float) - assert side in ["gt", "lt", "both"] - - d_q13 = np.percentile(data, [25.0, 75.0]) - iqr_distance = np.multiply(stats.iqr(data), scale) - - if side in ["gt", "both"]: - upper_range = d_q13[1] + iqr_distance - upper_outlier = np.greater(data - upper_range.reshape(1), 0) - - if side in ["lt", "both"]: - lower_range = d_q13[0] - iqr_distance - lower_outlier = np.less(data - lower_range.reshape(1), 0) - - if side == "gt": - return upper_outlier - if side == "lt": - return lower_outlier - if side == "both": - return np.logical_or(upper_outlier, lower_outlier) - - def compute(self, df): - """ - Compute boxplot quartiles and statistics. - - Arguments: - df: Dataframe to calculate the boxplot information. - - Return: - ret (dict): { - "metric1": { - "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), - "ometric": (array) outlier from metric, - "ocat": (array) outlier from cat_column, - "d": (array) metric values, - "rng": (tuple) (min, max), - "uv": (tuple) (mean, variance), - "imb": (number) imbalance, - "ks": (tuple) (kurtosis, skewness) - } - } - """ - ret = {_: {} for _ in self.metrics} - for tk, tv in zip(self.metrics, self.metrics): - q = np.percentile(df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) - mask = BoxPlot.outliers(df[tv], scale=self.iqr_scale) - mask = np.where(mask)[0] - - _data = df[tv].to_numpy() - _min, _mean, _max = _data.min(), _data.mean(), _data.max() - _var = _data.var() if _data.shape[0] > 0 else 0.0 - _imb = (_max - _mean) / _mean if not np.isclose(_mean, 0.0) else _max - _skew = stats.skew(_data) - _kurt = stats.kurtosis(_data) - - ret[tk] = { - "q": q, - "ometric": df[tv].to_numpy()[mask], - "ocat": df[self.cat_column].to_numpy()[mask], - "d": _data, - "rng": (_min, _max), - "uv": (_mean, _var), - "imb": _imb, - "ks": (_kurt, _skew), - "node": df["node"].unique().tolist()[0], - "name": df["name"].unique().tolist()[0], - } - - return ret - - def to_json(self): - """ - Unpack the boxplot data into JSON format. - - Arguments: - - Return: - result (dict): { - "callsite1": { - "tgt": self._unpack_callsite, - "bkg": self._unpack_callsite - }, - } - """ - return { - callsite: { - _type: self._unpack_callsite(callsite, _type) - for _type in self.box_types - } - for callsite in self.callsites - } - - def _unpack_callsite(self, callsite, box_type, with_htnode=False): - """ - Helper function to unpack the data by callsite. - - Arguments: - callsite: Callsite's name - box_type: (string) Boxplot type (i.e., "tgt" or "bkg") - with_htnode: (bool) An option to add hatchet.Node to the dict. - - Return: - ret (dict): { - "metric": { - "q": (array) quartiles (i.e., [q0, q1, q2, q3, q4]), - "ocat": (array) outlier from cat_column, - "ometric": (array) outlier from metri, - "min": (number) minimum, - "max": (number) maximum, - "mean": (number) mean, - "var": (number) variance, - "imb": (number) imbalance, - "kurt": (number) kurtosis, - "skew": (number) skewness, - } - } - """ - ret = {} - for metric in self.metrics: - box = self.result[callsite][box_type][metric] - ret[metric] = { - "name": box["name"], - "q": box["q"].tolist(), - "ocat": box["ocat"].tolist(), - "ometric": box["ometric"].tolist(), - "min": box["rng"][0], - "max": box["rng"][1], - "mean": box["uv"][0], - "var": box["uv"][1], - "imb": box["imb"], - "kurt": box["ks"][0], - "skew": box["ks"][1], - } - if with_htnode: - ret[metric]["node"] = box["node"] - - return ret - - def _to_gf_by_metric(self, gf, box_type, metric): - """ - Wrapper function to unpack the boxplot data into Hatchet.GraphFrame by - respective metric. - - Argument: - gf: (hatchet.GraphFrame) GraphFrame - box_type: (string) Boxplot type (i.e., "tgt" or "bkg") - metric: (string) Metric - - Return: - hatchet.GraphFrame with boxplot information as columns. - - """ - _dtype = { - "name": str, - "q": object, - "ocat": object, - "ometric": object, - "min": np.float64, - "max": np.float64, - "mean": np.float64, - "var": np.float64, - "imb": np.float64, - "kurt": np.float64, - "skew": np.float64, - } - _dict = { - callsite: self._unpack_callsite(callsite, box_type, with_htnode=True)[ - metric - ] - for callsite in self.callsites - } - tmp_df = pd.DataFrame.from_dict(data=_dict).T - tmp_df = tmp_df.astype(_dtype) - tmp_df.set_index(self.df_index, inplace=True) - - # TODO: Would we need to squash the graph. (Check in the to_gf() method.) - # Call into the gf.groupby_aggregate() (in PR) before returning the gf. - return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) - - def to_gf(self, gf, box_type): - """ - Unpack the boxplot data into GraphFrame object. - - Note: In this case, only the hatchet.dataframe will be updated, with - hatchet.Graph being the same as the input gf. - - Arguments: - gf: (hatchet.GraphFrame) GraphFrame - box_type: (string) Boxplot type (i.e., "tgt" or "bkg") - - Return: - (dict) : { - "metric": hatchet.GraphFrame, ... - } - """ - return { - metric: self._to_gf_by_metric(gf, box_type, metric) - for metric in self.metrics - } diff --git a/setup.py b/setup.py index 4ef8803e..59ecd5ab 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,6 @@ "hatchet.readers", "hatchet.util", "hatchet.external", - "hatchet.external.scripts", "hatchet.tests", "hatchet.cython_modules.libs", ], From 6f1ec7aa67b1e8c5ebb4f8eaf2d33dfab3baef47 Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 11:53:01 -0700 Subject: [PATCH 15/29] Add copyright; black and flake the code --- hatchet/util/boxplot.py | 55 ++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 142cdbf3..d4f87236 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -1,3 +1,8 @@ +# Copyright 2021 University of Maryland and other Hatchet Project +# Developers. See the top-level LICENSE file for details. +# +# SPDX-License-Identifier: MIT + import numpy as np import pandas as pd from scipy import stats @@ -13,7 +18,7 @@ def __init__( ): """ Boxplot class computes the runtime distributions of a multi-indexed GraphFrame. - + Arguments: multi_index_gf: (ht.GraphFrame) Target GraphFrame. @@ -32,18 +37,24 @@ def __init__( # Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`. if len(df_index) > 2 and not drop_index: - raise Exception(f"multi_index_gf contains len(self.df_index) indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity.") + raise Exception( + "multi_index_gf contains len(self.df_index) indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity." + ) # Validate primary index is 'node'. if "node" not in df_index: - raise Exception(f"BoxPlot expects 'node' to be a primary index of 'multi_index_gf'.") - + raise Exception( + "BoxPlot expects 'node' to be a primary index of 'multi_index_gf'." + ) + # Validate drop_index in the dataframe, if provided. if drop_index and drop_index not in df_index: - raise Exception(f"'drop_index: {drop_index}' is not a valid index of 'multi_index_gf'.") + raise Exception( + f"'drop_index: {drop_index}' is not a valid index of 'multi_index_gf'." + ) # Validate metrics are columns in the dataframe, if provided. - if len(metrics) > 0: + if len(metrics) > 0: for metric in metrics: if metric not in multi_index_gf.dataframe.columns: raise Exception(f"{metric} not found in the gf.dataframe.") @@ -51,20 +62,22 @@ def __init__( # Set drop_index as the secondary index. if len(df_index) == 2: self.drop_index = multi_index_gf.dataframe.names[1] - else: + else: self.drop_index = drop_index # Reset the indexes in the dataframe. multi_index_gf_copy = multi_index_gf.copy() multi_index_gf_copy.dataframe = multi_index_gf.dataframe.reset_index() - + # Set the metrics for computation. if len(metrics) == 0: - self.metrics = multi_index_gf_copy.inc_metrics + multi_index_gf_copy.exc_metrics + self.metrics = ( + multi_index_gf_copy.inc_metrics + multi_index_gf_copy.exc_metrics + ) else: self.metrics = metrics - # Drop the 'node' and `drop_index` from the ht.GraphFrame.DataFrame's indexes. + # Drop the 'node' and `drop_index` from the ht.GraphFrame.DataFrame's indexes. df_index.remove("node") df_index.remove(self.drop_index) @@ -83,15 +96,15 @@ def __init__( cols=self.metrics + self.ht_columns + [self.drop_index], ) - # for callsite in self.callsites: - # print(callsites_dict[callsite]) + # Dump the computation result for each callsite. + self.result = { + callsite: self.compute(callsites_dict[callsite]) + for callsite in self.callsites + } - # Dump the computation result for each callsite. - self.result = { callsite: self.compute(callsites_dict[callsite]) for callsite in self.callsites} - # Convert it to a GraphFrame. self.gf = self.to_gf(multi_index_gf_copy) - + @staticmethod def df_groupby(df, groupby, cols): """ @@ -181,7 +194,7 @@ def compute(self, df): _kurt = stats.kurtosis(_data) # TODO: Outliers and their corresponding rank member is not being - # fetched accurately. + # fetched accurately. # _outliers = df[tv].to_numpy()[mask] ret[tk] = { @@ -215,8 +228,7 @@ def to_json(self): } """ return { - callsite: self._unpack_callsite(callsite) - for callsite in self.callsites + callsite: self._unpack_callsite(callsite) for callsite in self.callsites } def _unpack_callsite(self, callsite): @@ -321,7 +333,4 @@ def to_gf(self, gf): "metric": hatchet.GraphFrame, ... } """ - return { - metric: self._to_gf_by_metric(gf, metric) - for metric in self.metrics - } + return {metric: self._to_gf_by_metric(gf, metric) for metric in self.metrics} From f4a6d16eaddf69e3ad8ab5669c2f7ec58c3acbab Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 13:47:28 -0700 Subject: [PATCH 16/29] Code cleanups --- hatchet/util/boxplot.py | 113 ++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 52 deletions(-) diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index d4f87236..20c171a8 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -66,13 +66,13 @@ def __init__( self.drop_index = drop_index # Reset the indexes in the dataframe. - multi_index_gf_copy = multi_index_gf.copy() - multi_index_gf_copy.dataframe = multi_index_gf.dataframe.reset_index() + self.multi_index_gf = multi_index_gf.copy() + self.multi_index_gf.dataframe = self.multi_index_gf.dataframe.reset_index() # Set the metrics for computation. if len(metrics) == 0: self.metrics = ( - multi_index_gf_copy.inc_metrics + multi_index_gf_copy.exc_metrics + self.multi_index_gf.inc_metrics + self.multi_index_gf.exc_metrics ) else: self.metrics = metrics @@ -89,21 +89,15 @@ def __init__( # Hatchet columns that are required by BoxPlot API for computation. self.ht_columns = ["name", "node"] - # Group the dataframe by the provided group_by columns. - self.callsites, callsites_dict = BoxPlot.df_groupby( - multi_index_gf_copy.dataframe, + # Compute the boxplot dictionary keyed by "index" and valued as a dataframe. + self.boxplot_df_dict = self.compute( + multi_index_df=self.multi_index_gf.dataframe, groupby=self.group_by, cols=self.metrics + self.ht_columns + [self.drop_index], ) - # Dump the computation result for each callsite. - self.result = { - callsite: self.compute(callsites_dict[callsite]) - for callsite in self.callsites - } - # Convert it to a GraphFrame. - self.gf = self.to_gf(multi_index_gf_copy) + self.gf = self.to_gf() @staticmethod def df_groupby(df, groupby, cols): @@ -120,7 +114,7 @@ def df_groupby(df, groupby, cols): """ _df = df.set_index(groupby) _levels = _df.index.unique().tolist() - return _levels, {_: _df.xs(_)[cols] for _ in _levels} + return {_: _df.xs(_)[cols] for _ in _levels} @staticmethod def outliers(data, scale=1.5, side="both"): @@ -159,12 +153,14 @@ def outliers(data, scale=1.5, side="both"): if side == "both": return np.logical_or(upper_outlier, lower_outlier) - def compute(self, df): + def compute(self, multi_index_df, groupby, cols): """ Compute boxplot quartiles and statistics. Arguments: - df: Dataframe to calculate the boxplot information. + multi_index_df: Dataframe to calculate the boxplot information. + groupby: Columns to aggregate the data. + cols: Columns to retain in the output dataframe. Return: ret (dict): { @@ -180,38 +176,48 @@ def compute(self, df): } } """ - ret = {_: {} for _ in self.metrics} - for tk, tv in zip(self.metrics, self.metrics): - q = np.percentile(df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) - mask = BoxPlot.outliers(df[tv], scale=1.5) - mask = np.where(mask)[0] - - _data = df[tv].to_numpy() - _min, _mean, _max = _data.min(), _data.mean(), _data.max() - _var = _data.var() if _data.shape[0] > 0 else 0.0 - _imb = (_max - _mean) / _mean if not np.isclose(_mean, 0.0) else _max - _skew = stats.skew(_data) - _kurt = stats.kurtosis(_data) - - # TODO: Outliers and their corresponding rank member is not being - # fetched accurately. - # _outliers = df[tv].to_numpy()[mask] - - ret[tk] = { - "q": q, - # "ometric": _outliers, - # "ocat": df.index[1] if len(_outliers) > 0 else -1, # not being used in the vis yet. - "d": _data, - "rng": (_min, _max), - "uv": (_mean, _var), - "imb": _imb, - "ks": (_kurt, _skew), - } + group_df_dict = BoxPlot.df_groupby( + df=multi_index_df, + groupby=groupby, + cols=cols, + ) - for ht_column in self.ht_columns + [self.drop_index]: - ret[tk][ht_column] = df[ht_column].iloc[0] + boxplot_dict_df = {_: {} for _ in group_df_dict.keys()} + for callsite, callsite_df in group_df_dict.items(): + ret = {_: {} for _ in self.metrics} + for tk, tv in zip(self.metrics, self.metrics): + q = np.percentile(callsite_df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) + mask = BoxPlot.outliers(callsite_df[tv]) + mask = np.where(mask)[0] + + _data = callsite_df[tv].to_numpy() + _min, _mean, _max = _data.min(), _data.mean(), _data.max() + _var = _data.var() if _data.shape[0] > 0 else 0.0 + _imb = (_max - _mean) / _mean if not np.isclose(_mean, 0.0) else _max + _skew = stats.skew(_data) + _kurt = stats.kurtosis(_data) + + # TODO: Outliers and their corresponding rank member is not being + # fetched accurately. + # _outliers = df[tv].to_numpy()[mask] + + ret[tk] = { + "q": q, + # "ometric": _outliers, + # "ocat": df.index[1] if len(_outliers) > 0 else -1, # not being used in the vis yet. + "d": _data, + "rng": (_min, _max), + "uv": (_mean, _var), + "imb": _imb, + "ks": (_kurt, _skew), + } - return ret + for ht_column in self.ht_columns + [self.drop_index]: + ret[tk][ht_column] = callsite_df[ht_column].iloc[0] + + boxplot_dict_df[callsite] = ret + + return boxplot_dict_df def to_json(self): """ @@ -228,7 +234,8 @@ def to_json(self): } """ return { - callsite: self._unpack_callsite(callsite) for callsite in self.callsites + callsite: self._unpack_callsite(callsite) + for callsite in self.boxplot_df_dict.keys() } def _unpack_callsite(self, callsite): @@ -257,7 +264,7 @@ def _unpack_callsite(self, callsite): """ ret = {} for metric in self.metrics: - box = self.result[callsite][metric] + box = self.boxplot_df_dict[callsite][metric] ret[metric] = { "q": box["q"].tolist(), # "ocat": box["ocat"], # TODO @@ -304,7 +311,7 @@ def _to_gf_by_metric(self, gf, metric): } _dict = { callsite: self._unpack_callsite(callsite)[metric] - for callsite in self.callsites + for callsite in self.boxplot_df_dict.keys() } tmp_df = pd.DataFrame.from_dict(data=_dict).T tmp_df = tmp_df.astype(_dtype) @@ -318,7 +325,7 @@ def _to_gf_by_metric(self, gf, metric): # Call into the gf.groupby_aggregate() (in PR) before returning the gf. return ht.GraphFrame(gf.graph, tmp_df, gf.exc_metrics, gf.inc_metrics) - def to_gf(self, gf): + def to_gf(self): """ Unpack the boxplot data into GraphFrame object. @@ -326,11 +333,13 @@ def to_gf(self, gf): hatchet.Graph being the same as the input gf. Arguments: - gf: (hatchet.GraphFrame) GraphFrame Return: (dict) : { "metric": hatchet.GraphFrame, ... } """ - return {metric: self._to_gf_by_metric(gf, metric) for metric in self.metrics} + return { + metric: self._to_gf_by_metric(self.multi_index_gf, metric) + for metric in self.metrics + } From 5b3882cc8e2238318ac039301a5d21e04ca2b930 Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 14:59:41 -0700 Subject: [PATCH 17/29] Add a basic unit-test --- hatchet/tests/boxplot.py | 150 +++++++++++++++++---------------------- hatchet/util/boxplot.py | 4 +- 2 files changed, 68 insertions(+), 86 deletions(-) diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index da6629fc..7ec24c66 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -7,7 +7,7 @@ import pandas.api.types as ptypes import hatchet as ht -from hatchet.external.scripts import BoxPlot +from hatchet.util.boxplot import BoxPlot bp_columns = [ "name", @@ -24,21 +24,18 @@ ] -def test_boxplot_tgt(calc_pi_hpct_db): +def test_gf_format(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - metrics = ["time"] - bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) + gf_indexes = gf.dataframe.index.names + bp = BoxPlot(multi_index_gf=gf) - # Check if the format of target is correct. - assert metrics[0] in list(bp.tgt.keys()) - assert isinstance(bp.tgt[metrics[0]], ht.GraphFrame) - assert isinstance(bp.tgt[metrics[0]].dataframe, pd.DataFrame) - assert isinstance(bp.tgt[metrics[0]].graph, ht.graph.Graph) - - # Check if the format of background is correct. - assert not hasattr(bp, "bkg") + metrics = gf.inc_metrics + gf.exc_metrics - df = bp.tgt[metrics[0]].dataframe + # Check if the format of target is correct. + assert all(metric in list(bp.gf.keys()) for metric in metrics) + assert all(isinstance(bp.gf[metric], ht.GraphFrame) for metric in metrics) + assert all(isinstance(bp.gf[metric].dataframe, pd.DataFrame) for metric in metrics) + assert all(isinstance(bp.gf[metric].graph, ht.graph.Graph) for metric in metrics) # Check if the required columns are present. columns = [ @@ -54,89 +51,74 @@ def test_boxplot_tgt(calc_pi_hpct_db): "kurt", "skew", ] - assert df.columns.tolist().sort() == columns.sort() - - -def test_boxplot_bkg(calc_pi_hpct_db): - tgt_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - bkg_gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - metrics = ["time"] - bp = BoxPlot(cat_column="rank", tgt_gf=tgt_gf, bkg_gf=bkg_gf, metrics=metrics) - - # Check if the format of background is correct. - assert metrics[0] in list(bp.bkg.keys()) - assert isinstance(bp.bkg[metrics[0]], ht.GraphFrame) - assert isinstance(bp.bkg[metrics[0]].dataframe, pd.DataFrame) - assert isinstance(bp.bkg[metrics[0]].graph, ht.graph.Graph) - - # # Check if the required columns are present. - # assert bp.tgt[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() - # assert bp.bkg[metrics[0]].dataframe.columns.tolist().sort() == bp_columns.sort() - + assert all(bp.gf[metric].dataframe.columns.tolist().sort() == columns.sort() for metric in metrics) -def test_output_dtypes(calc_pi_hpct_db): - gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - metrics = ["time"] - bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) - - object_dtype = ["name", "q", "ocat", "ometric"] - float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] + assert all(len(list(bp.gf[metric].dataframe.index.names)) == 1 for metric in metrics) + assert all(list(bp.gf[metric].dataframe.index.names) == ["node"] for metric in metrics) - assert all( - ptypes.is_float_dtype(bp.tgt["time"].dataframe[col]) for col in float_dtype - ) - assert all( - ptypes.is_object_dtype(bp.tgt["time"].dataframe[col]) for col in object_dtype - ) +# def test_output_dtypes(calc_pi_hpct_db): +# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# metrics = ["time"] +# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +# object_dtype = ["name", "q", "ocat", "ometric"] +# float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] -def test_callsite_count(calc_pi_hpct_db): - gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - metrics = ["time"] - bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +# assert all( +# ptypes.is_float_dtype(bp.tgt["time"].dataframe[col]) for col in float_dtype +# ) +# assert all( +# ptypes.is_object_dtype(bp.tgt["time"].dataframe[col]) for col in object_dtype +# ) - assert len(bp.tgt["time"].graph) == len( - bp.tgt["time"].dataframe.index.values.tolist() - ) +# def test_callsite_count(calc_pi_hpct_db): +# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# metrics = ["time"] +# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) -def test_multiple_metrics(calc_pi_hpct_db): - gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - metrics = ["time", "time (inc)"] - bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +# assert len(bp.tgt["time"].graph) == len( +# bp.tgt["time"].dataframe.index.values.tolist() +# ) - assert all(metric in bp.tgt for metric in metrics) +# def test_multiple_metrics(calc_pi_hpct_db): +# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# metrics = ["time", "time (inc)"] +# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) -def test_to_json(calc_pi_hpct_db): - gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) - json = bp.to_json() - assert all( - (nid in json.keys()) and ("tgt" in json[nid]) - for nid in gf.dataframe["nid"].unique().tolist() - ) +# assert all(metric in bp.tgt for metric in metrics) -# def test_to_json_schema(calc_pi_hpct_db): +# def test_to_json(calc_pi_hpct_db): # gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) # bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) # json = bp.to_json() -# STATS_SCHEMA = { -# "type": "object", -# "properties": { -# "name": {"type": "string"}, -# "min": {"type": "number"}, -# "max": {"type": "number"}, -# "mean": {"type": "number"}, -# "imb": {"type": "number"}, -# "var": {"type": "number"}, -# "kurt": {"type": "number"}, -# "skew": {"type": "number"}, -# "q": {"type": "array"}, -# "ocat": {"type": "array"}, -# "ometric": {"type": "array"} -# }, -# } - -# assert all(jsonschema.validate(instance=json[nid]["tgt"]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) +# assert all( +# (nid in json.keys()) and ("tgt" in json[nid]) +# for nid in gf.dataframe["nid"].unique().tolist() +# ) + + +# # def test_to_json_schema(calc_pi_hpct_db): +# # gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# # bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) +# # json = bp.to_json() +# # STATS_SCHEMA = { +# # "type": "object", +# # "properties": { +# # "name": {"type": "string"}, +# # "min": {"type": "number"}, +# # "max": {"type": "number"}, +# # "mean": {"type": "number"}, +# # "imb": {"type": "number"}, +# # "var": {"type": "number"}, +# # "kurt": {"type": "number"}, +# # "skew": {"type": "number"}, +# # "q": {"type": "array"}, +# # "ocat": {"type": "array"}, +# # "ometric": {"type": "array"} +# # }, +# # } + +# # assert all(jsonschema.validate(instance=json[nid]["tgt"]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 20c171a8..1272c1e8 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -61,7 +61,7 @@ def __init__( # Set drop_index as the secondary index. if len(df_index) == 2: - self.drop_index = multi_index_gf.dataframe.names[1] + self.drop_index = multi_index_gf.dataframe.index.names[1] else: self.drop_index = drop_index @@ -84,7 +84,7 @@ def __init__( self.df_index = df_index # BoxPlot API will aggregate considering the `hatchet_nid` and the # `drop_index`. - self.group_by = ["hatchet_nid"] + self.df_index + self.group_by = ["nid"] + self.df_index # Hatchet columns that are required by BoxPlot API for computation. self.ht_columns = ["name", "node"] From 6962d70a578fd79a1cbf771eba7f8e87de4fff7a Mon Sep 17 00:00:00 2001 From: jarusified Date: Fri, 1 Oct 2021 15:41:47 -0700 Subject: [PATCH 18/29] Improve the text on the notebook --- .../performance_variability_boxplots.ipynb | 4050 +++++++---------- 1 file changed, 1696 insertions(+), 2354 deletions(-) diff --git a/docs/examples/tutorial/performance_variability_boxplots.ipynb b/docs/examples/tutorial/performance_variability_boxplots.ipynb index 76e08814..2c6ecdec 100644 --- a/docs/examples/tutorial/performance_variability_boxplots.ipynb +++ b/docs/examples/tutorial/performance_variability_boxplots.ipynb @@ -277,24 +277,22 @@ "Next, using the **hatchet.GraphFrame**, we can calculate the data required for performance variability boxplot using an exposed hatchet API, **Boxplot**.\n", "\n", "The interface excepts the following attributes:\n", - "1. `tgt_gf` - Target hatchet.GraphFrame \n", - "2. `bkg_gf` - Background hatchet.GraphFrame (optional)\n", - "3. `callsites` - List of callsite names for which we want to compute/visualize the boxplots.\n", - "4. `metrics` - Runtime metrics for which we need to calculate the boxplots.\n", - "5. `iqr_scale` - Interquartile range scale (by default = 1.5)" + "- multi_index_gf - Multi-indexed GraphFrame (required).\n", + "- drop_index - The index to drop in the ht.GraphFrame.dataframe to compute the variability (e.g., rank, dataset) (optional).\n", + "- metrics - list of inclusive/exclusive metrics (optional) [default = inc_metrics + exc_metrics]." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3361: PerformanceWarning: indexing past lexsort depth may impact performance.\n", - " if (await self.run_code(code, result, async_=asy)):\n" + "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3441: PerformanceWarning: indexing past lexsort depth may impact performance.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" ] } ], @@ -311,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -602,7 +600,7 @@ "[240 rows x 10 columns]" ] }, - "execution_count": 14, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -648,15 +646,15 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3361: PerformanceWarning: indexing past lexsort depth may impact performance.\n", - " if (await self.run_code(code, result, async_=asy)):\n" + "/Users/jarus/Work/llnl/hatchet/venv/lib/python3.9/site-packages/IPython/core/interactiveshell.py:3441: PerformanceWarning: indexing past lexsort depth may impact performance.\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n" ] } ], @@ -666,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -943,7 +941,7 @@ "[192 rows x 10 columns]" ] }, - "execution_count": 16, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -961,7 +959,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -970,2975 +968,2319 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{(0,\n", - " 'dset9'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (0,\n", - " 'dset7'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 4}},\n", - " (0,\n", - " 'dset1'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 0): {'time': {'q': [121489.0, 121489.0, 121489.0, 121489.0, 121489.0],\n", + " 'min': 121489.0,\n", + " 'max': 121489.0,\n", + " 'mean': 121489.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset9'}},\n", " (0,\n", - " 'dset3'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 4): {'time': {'q': [118953.0, 118953.0, 118953.0, 118953.0, 118953.0],\n", + " 'min': 118953.0,\n", + " 'max': 118953.0,\n", + " 'mean': 118953.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset7'}},\n", " (0,\n", - " 'dset6'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 5): {'time': {'q': [133256.0, 133256.0, 133256.0, 133256.0, 133256.0],\n", + " 'min': 133256.0,\n", + " 'max': 133256.0,\n", + " 'mean': 133256.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (0,\n", - " 'dset8'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 6): {'time': {'q': [114035.0, 114035.0, 114035.0, 114035.0, 114035.0],\n", + " 'min': 114035.0,\n", + " 'max': 114035.0,\n", + " 'mean': 114035.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset7'}},\n", " (0,\n", - " 'dset0'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", + " 7): {'time': {'q': [137098.0, 137098.0, 137098.0, 137098.0, 137098.0],\n", + " 'min': 137098.0,\n", " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 'mean': 137098.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset7'}},\n", " (0,\n", - " 'dset4'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 3): {'time': {'q': [113830.0, 113830.0, 113830.0, 113830.0, 113830.0],\n", + " 'min': 113830.0,\n", + " 'max': 113830.0,\n", + " 'mean': 113830.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (0,\n", - " 'dset2'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", - " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 2): {'time': {'q': [110799.0, 110799.0, 110799.0, 110799.0, 110799.0],\n", + " 'min': 110799.0,\n", + " 'max': 110799.0,\n", + " 'mean': 110799.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (0,\n", - " 'dset5'): {'time': {'q': [105528.0,\n", - " 113072.25,\n", - " 116494.0,\n", - " 124430.75,\n", - " 137098.0],\n", + " 1): {'time': {'q': [105528.0, 105528.0, 105528.0, 105528.0, 105528.0],\n", " 'min': 105528.0,\n", - " 'max': 137098.0,\n", - " 'mean': 119373.5,\n", - " 'var': 104497970.25,\n", - " 'imb': 0.14847935262013764,\n", - " 'kurt': -0.9421848873183336,\n", - " 'skew': 0.5436725364039101,\n", + " 'max': 105528.0,\n", + " 'mean': 105528.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'main',\n", " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (1,\n", - " 'dset9'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (1,\n", - " 'dset4'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (1,\n", - " 'dset0'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 7): {'time': {'q': [543.0, 543.0, 543.0, 543.0, 543.0],\n", + " 'min': 543.0,\n", + " 'max': 543.0,\n", + " 'mean': 543.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset9'}},\n", " (1,\n", - " 'dset7'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 0): {'time': {'q': [528.0, 528.0, 528.0, 528.0, 528.0],\n", + " 'min': 528.0,\n", + " 'max': 528.0,\n", + " 'mean': 528.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset4'}},\n", " (1,\n", - " 'dset1'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", + " 1): {'time': {'q': [499.0, 499.0, 499.0, 499.0, 499.0],\n", " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 'max': 499.0,\n", + " 'mean': 499.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset0'}},\n", " (1,\n", - " 'dset8'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 4): {'time': {'q': [513.0, 513.0, 513.0, 513.0, 513.0],\n", + " 'min': 513.0,\n", + " 'max': 513.0,\n", + " 'mean': 513.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset0'}},\n", " (1,\n", - " 'dset6'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 3): {'time': {'q': [511.0, 511.0, 511.0, 511.0, 511.0],\n", + " 'min': 511.0,\n", + " 'max': 511.0,\n", + " 'mean': 511.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset0'}},\n", " (1,\n", - " 'dset2'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 6): {'time': {'q': [525.0, 525.0, 525.0, 525.0, 525.0],\n", + " 'min': 525.0,\n", + " 'max': 525.0,\n", + " 'mean': 525.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset9'}},\n", " (1,\n", - " 'dset3'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", - " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 5): {'time': {'q': [517.0, 517.0, 517.0, 517.0, 517.0],\n", + " 'min': 517.0,\n", + " 'max': 517.0,\n", + " 'mean': 517.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset0'}},\n", " (1,\n", - " 'dset5'): {'time': {'q': [499.0, 512.5, 521.0, 531.75, 3520.0],\n", - " 'min': 499.0,\n", + " 2): {'time': {'q': [3520.0, 3520.0, 3520.0, 3520.0, 3520.0],\n", + " 'min': 3520.0,\n", " 'max': 3520.0,\n", - " 'mean': 894.5,\n", - " 'var': 984899.5,\n", - " 'imb': 2.935159306875349,\n", - " 'kurt': 3.1411221066037207,\n", - " 'skew': 2.2670991456043166,\n", + " 'mean': 3520.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeLeapFrog',\n", " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (2,\n", - " 'dset2'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (2,\n", - " 'dset1'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset0'}},\n", " (2,\n", - " 'dset7'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", + " 0): {'time': {'q': [21493.0, 21493.0, 21493.0, 21493.0, 21493.0],\n", + " 'min': 21493.0,\n", " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 'mean': 21493.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset2'}},\n", " (2,\n", - " 'dset8'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", + " 4): {'time': {'q': [2321.0, 2321.0, 2321.0, 2321.0, 2321.0],\n", " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 'max': 2321.0,\n", + " 'mean': 2321.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset1'}},\n", " (2,\n", - " 'dset9'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 6): {'time': {'q': [14203.0, 14203.0, 14203.0, 14203.0, 14203.0],\n", + " 'min': 14203.0,\n", + " 'max': 14203.0,\n", + " 'mean': 14203.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset2'}},\n", " (2,\n", - " 'dset6'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 5): {'time': {'q': [2828.0, 2828.0, 2828.0, 2828.0, 2828.0],\n", + " 'min': 2828.0,\n", + " 'max': 2828.0,\n", + " 'mean': 2828.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset2'}},\n", " (2,\n", - " 'dset5'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 3): {'time': {'q': [10194.0, 10194.0, 10194.0, 10194.0, 10194.0],\n", + " 'min': 10194.0,\n", + " 'max': 10194.0,\n", + " 'mean': 10194.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset1'}},\n", " (2,\n", - " 'dset4'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 1): {'time': {'q': [2745.0, 2745.0, 2745.0, 2745.0, 2745.0],\n", + " 'min': 2745.0,\n", + " 'max': 2745.0,\n", + " 'mean': 2745.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (2,\n", - " 'dset3'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 2): {'time': {'q': [2758.0, 2758.0, 2758.0, 2758.0, 2758.0],\n", + " 'min': 2758.0,\n", + " 'max': 2758.0,\n", + " 'mean': 2758.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (2,\n", - " 'dset0'): {'time': {'q': [2321.0, 2754.75, 2899.0, 11196.25, 21493.0],\n", - " 'min': 2321.0,\n", - " 'max': 21493.0,\n", - " 'mean': 7439.0,\n", - " 'var': 45278655.0,\n", - " 'imb': 1.8892324237128646,\n", - " 'kurt': -0.33766561568028663,\n", - " 'skew': 1.0580467322576932,\n", + " 7): {'time': {'q': [2970.0, 2970.0, 2970.0, 2970.0, 2970.0],\n", + " 'min': 2970.0,\n", + " 'max': 2970.0,\n", + " 'mean': 2970.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcTimeConstraintsForElems',\n", " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", - " (3,\n", - " 'dset0'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.646809916397041,\n", - " 'skew': 2.08174809544654,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", - " (3,\n", - " 'dset4'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.64680991639704,\n", - " 'skew': 2.08174809544654,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset2'}},\n", " (3,\n", - " 'dset7'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", + " 2): {'time': {'q': [16695.0, 16695.0, 16695.0, 16695.0, 16695.0],\n", " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.646809916397041,\n", - " 'skew': 2.0817480954465406,\n", + " 'max': 16695.0,\n", + " 'mean': 16695.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset2'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.64680991639704,\n", - " 'skew': 2.08174809544654,\n", + " 1): {'time': {'q': [17558.0, 17558.0, 17558.0, 17558.0, 17558.0],\n", + " 'min': 17558.0,\n", + " 'max': 17558.0,\n", + " 'mean': 17558.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset5'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", + " 0): {'time': {'q': [85866.0, 85866.0, 85866.0, 85866.0, 85866.0],\n", + " 'min': 85866.0,\n", " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.646809916397041,\n", - " 'skew': 2.08174809544654,\n", + " 'mean': 85866.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset6'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.646809916397041,\n", - " 'skew': 2.08174809544654,\n", + " 3): {'time': {'q': [25658.0, 25658.0, 25658.0, 25658.0, 25658.0],\n", + " 'min': 25658.0,\n", + " 'max': 25658.0,\n", + " 'mean': 25658.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset9'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.646809916397041,\n", - " 'skew': 2.08174809544654,\n", + " 4): {'time': {'q': [17195.0, 17195.0, 17195.0, 17195.0, 17195.0],\n", + " 'min': 17195.0,\n", + " 'max': 17195.0,\n", + " 'mean': 17195.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset8'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.64680991639704,\n", - " 'skew': 2.08174809544654,\n", + " 5): {'time': {'q': [21244.0, 21244.0, 21244.0, 21244.0, 21244.0],\n", + " 'min': 21244.0,\n", + " 'max': 21244.0,\n", + " 'mean': 21244.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset3'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.64680991639704,\n", - " 'skew': 2.08174809544654,\n", + " 6): {'time': {'q': [30246.0, 30246.0, 30246.0, 30246.0, 30246.0],\n", + " 'min': 30246.0,\n", + " 'max': 30246.0,\n", + " 'mean': 30246.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (3,\n", - " 'dset1'): {'time': {'q': [16695.0, 17112.5, 19401.0, 26805.0, 85866.0],\n", - " 'min': 16695.0,\n", - " 'max': 85866.0,\n", - " 'mean': 28915.875,\n", - " 'var': 484438874.359375,\n", - " 'imb': 1.9695106926558508,\n", - " 'kurt': 2.64680991639704,\n", - " 'skew': 2.08174809544654,\n", + " 7): {'time': {'q': [16865.0, 16865.0, 16865.0, 16865.0, 16865.0],\n", + " 'min': 16865.0,\n", + " 'max': 16865.0,\n", + " 'mean': 16865.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcCourantConstraintForElems',\n", " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (4,\n", - " 'dset1'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (4,\n", - " 'dset7'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset4'}},\n", " (4,\n", - " 'dset2'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936242,\n", - " 'skew': 1.2340959674396927,\n", + " 7): {'time': {'q': [4906.0, 4906.0, 4906.0, 4906.0, 4906.0],\n", + " 'min': 4906.0,\n", + " 'max': 4906.0,\n", + " 'mean': 4906.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset1'}},\n", " (4,\n", - " 'dset5'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", + " 0): {'time': {'q': [29653.0, 29653.0, 29653.0, 29653.0, 29653.0],\n", + " 'min': 29653.0,\n", " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 'mean': 29653.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset7'}},\n", " (4,\n", - " 'dset9'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 5): {'time': {'q': [5628.0, 5628.0, 5628.0, 5628.0, 5628.0],\n", + " 'min': 5628.0,\n", + " 'max': 5628.0,\n", + " 'mean': 5628.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset2'}},\n", " (4,\n", - " 'dset6'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936242,\n", - " 'skew': 1.2340959674396927,\n", + " 4): {'time': {'q': [4600.0, 4600.0, 4600.0, 4600.0, 4600.0],\n", + " 'min': 4600.0,\n", + " 'max': 4600.0,\n", + " 'mean': 4600.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset2'}},\n", " (4,\n", - " 'dset4'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 3): {'time': {'q': [4781.0, 4781.0, 4781.0, 4781.0, 4781.0],\n", + " 'min': 4781.0,\n", + " 'max': 4781.0,\n", + " 'mean': 4781.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset2'}},\n", " (4,\n", - " 'dset8'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 2): {'time': {'q': [4658.0, 4658.0, 4658.0, 4658.0, 4658.0],\n", + " 'min': 4658.0,\n", + " 'max': 4658.0,\n", + " 'mean': 4658.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset2'}},\n", " (4,\n", - " 'dset0'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", + " 1): {'time': {'q': [4523.0, 4523.0, 4523.0, 4523.0, 4523.0],\n", " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 'max': 4523.0,\n", + " 'mean': 4523.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset2'}},\n", " (4,\n", - " 'dset3'): {'time': {'q': [4523.0, 4643.5, 4843.5, 10139.5, 29653.0],\n", - " 'min': 4523.0,\n", - " 'max': 29653.0,\n", - " 'mean': 10302.875,\n", - " 'var': 91560061.609375,\n", - " 'imb': 1.8781286776749209,\n", - " 'kurt': -0.35178035936241914,\n", - " 'skew': 1.2340959674396927,\n", + " 6): {'time': {'q': [23674.0, 23674.0, 23674.0, 23674.0, 23674.0],\n", + " 'min': 23674.0,\n", + " 'max': 23674.0,\n", + " 'mean': 23674.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHydroConstraintForElems',\n", " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (5,\n", - " 'dset3'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 3}},\n", - " (5,\n", - " 'dset1'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (5,\n", - " 'dset5'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 3): {'time': {'q': [670.0, 670.0, 670.0, 670.0, 670.0],\n", + " 'min': 670.0,\n", + " 'max': 670.0,\n", + " 'mean': 670.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset3'}},\n", " (5,\n", - " 'dset2'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", + " 2): {'time': {'q': [923.0, 923.0, 923.0, 923.0, 923.0],\n", + " 'min': 923.0,\n", " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 'mean': 923.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset3'}},\n", " (5,\n", - " 'dset6'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 1): {'time': {'q': [656.0, 656.0, 656.0, 656.0, 656.0],\n", + " 'min': 656.0,\n", + " 'max': 656.0,\n", + " 'mean': 656.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset3'}},\n", " (5,\n", - " 'dset8'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 0): {'time': {'q': [663.0, 663.0, 663.0, 663.0, 663.0],\n", + " 'min': 663.0,\n", + " 'max': 663.0,\n", + " 'mean': 663.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset3'}},\n", " (5,\n", - " 'dset9'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 4): {'time': {'q': [675.0, 675.0, 675.0, 675.0, 675.0],\n", + " 'min': 675.0,\n", + " 'max': 675.0,\n", + " 'mean': 675.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset1'}},\n", " (5,\n", - " 'dset4'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 5): {'time': {'q': [664.0, 664.0, 664.0, 664.0, 664.0],\n", + " 'min': 664.0,\n", + " 'max': 664.0,\n", + " 'mean': 664.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (5,\n", - " 'dset0'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", - " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 7): {'time': {'q': [832.0, 832.0, 832.0, 832.0, 832.0],\n", + " 'min': 832.0,\n", + " 'max': 832.0,\n", + " 'mean': 832.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset5'}},\n", " (5,\n", - " 'dset7'): {'time': {'q': [628.0, 661.25, 667.0, 714.25, 923.0],\n", + " 6): {'time': {'q': [628.0, 628.0, 628.0, 628.0, 628.0],\n", " 'min': 628.0,\n", - " 'max': 923.0,\n", - " 'mean': 713.875,\n", - " 'var': 9615.359375,\n", - " 'imb': 0.29294344247942566,\n", - " 'kurt': -0.03670015672591376,\n", - " 'skew': 1.2684626472863603,\n", + " 'max': 628.0,\n", + " 'mean': 628.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeElements',\n", " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (6,\n", - " 'dset1'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", - " (6,\n", - " 'dset0'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (6,\n", - " 'dset6'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", + " 5): {'time': {'q': [11505.0, 11505.0, 11505.0, 11505.0, 11505.0],\n", " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", + " 'max': 11505.0,\n", + " 'mean': 11505.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (6,\n", - " 'dset8'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", + " 6): {'time': {'q': [22583.0, 22583.0, 22583.0, 22583.0, 22583.0],\n", + " 'min': 22583.0,\n", " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.49948859941059,\n", - " 'skew': 1.9969162776908462,\n", + " 'mean': 22583.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset1'}},\n", " (6,\n", - " 'dset3'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.49948859941059,\n", - " 'skew': 1.9969162776908462,\n", + " 7): {'time': {'q': [13609.0, 13609.0, 13609.0, 13609.0, 13609.0],\n", + " 'min': 13609.0,\n", + " 'max': 13609.0,\n", + " 'mean': 13609.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (6,\n", - " 'dset9'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", + " 0): {'time': {'q': [14072.0, 14072.0, 14072.0, 14072.0, 14072.0],\n", + " 'min': 14072.0,\n", + " 'max': 14072.0,\n", + " 'mean': 14072.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset6'}},\n", " (6,\n", - " 'dset4'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.49948859941059,\n", - " 'skew': 1.9969162776908462,\n", + " 2): {'time': {'q': [13643.0, 13643.0, 13643.0, 13643.0, 13643.0],\n", + " 'min': 13643.0,\n", + " 'max': 13643.0,\n", + " 'mean': 13643.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset6'}},\n", " (6,\n", - " 'dset7'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", + " 3): {'time': {'q': [13171.0, 13171.0, 13171.0, 13171.0, 13171.0],\n", + " 'min': 13171.0,\n", + " 'max': 13171.0,\n", + " 'mean': 13171.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset6'}},\n", " (6,\n", - " 'dset2'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", + " 4): {'time': {'q': [12643.0, 12643.0, 12643.0, 12643.0, 12643.0],\n", + " 'min': 12643.0,\n", + " 'max': 12643.0,\n", + " 'mean': 12643.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (6,\n", - " 'dset5'): {'time': {'q': [11505.0, 12509.0, 13390.0, 13750.25, 22583.0],\n", - " 'min': 11505.0,\n", - " 'max': 22583.0,\n", - " 'mean': 14166.625,\n", - " 'var': 10758556.984375,\n", - " 'imb': 0.5940988061729593,\n", - " 'kurt': 2.4994885994105918,\n", - " 'skew': 1.9969162776908462,\n", + " 1): {'time': {'q': [12107.0, 12107.0, 12107.0, 12107.0, 12107.0],\n", + " 'min': 12107.0,\n", + " 'max': 12107.0,\n", + " 'mean': 12107.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'ApplyMaterialPropertiesForElems',\n", " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", - " (7,\n", - " 'dset0'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", - " (7,\n", - " 'dset2'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset6'}},\n", " (7,\n", - " 'dset5'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", + " 6): {'time': {'q': [162868.0, 162868.0, 162868.0, 162868.0, 162868.0],\n", " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 'max': 162868.0,\n", + " 'mean': 162868.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset0'}},\n", " (7,\n", - " 'dset6'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701218,\n", + " 7): {'time': {'q': [244580.0, 244580.0, 244580.0, 244580.0, 244580.0],\n", + " 'min': 244580.0,\n", + " 'max': 244580.0,\n", + " 'mean': 244580.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset0'}},\n", " (7,\n", - " 'dset3'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 5): {'time': {'q': [190093.0, 190093.0, 190093.0, 190093.0, 190093.0],\n", + " 'min': 190093.0,\n", + " 'max': 190093.0,\n", + " 'mean': 190093.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset2'}},\n", " (7,\n", - " 'dset7'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 0): {'time': {'q': [244008.0, 244008.0, 244008.0, 244008.0, 244008.0],\n", + " 'min': 244008.0,\n", + " 'max': 244008.0,\n", + " 'mean': 244008.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset2'}},\n", " (7,\n", - " 'dset8'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701218,\n", + " 3): {'time': {'q': [235964.0, 235964.0, 235964.0, 235964.0, 235964.0],\n", + " 'min': 235964.0,\n", + " 'max': 235964.0,\n", + " 'mean': 235964.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset2'}},\n", " (7,\n", - " 'dset4'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 2): {'time': {'q': [305500.0, 305500.0, 305500.0, 305500.0, 305500.0],\n", + " 'min': 305500.0,\n", + " 'max': 305500.0,\n", + " 'mean': 305500.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset2'}},\n", " (7,\n", - " 'dset9'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", - " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 1): {'time': {'q': [261646.0, 261646.0, 261646.0, 261646.0, 261646.0],\n", + " 'min': 261646.0,\n", + " 'max': 261646.0,\n", + " 'mean': 261646.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset2'}},\n", " (7,\n", - " 'dset1'): {'time': {'q': [162868.0, 224496.25, 244294.0, 272609.5, 393451.0],\n", - " 'min': 162868.0,\n", + " 4): {'time': {'q': [393451.0, 393451.0, 393451.0, 393451.0, 393451.0],\n", + " 'min': 393451.0,\n", " 'max': 393451.0,\n", - " 'mean': 254763.75,\n", - " 'var': 4381955754.6875,\n", - " 'imb': 0.5443759169034056,\n", - " 'kurt': 0.030598025872087042,\n", - " 'skew': 0.7511131583701219,\n", + " 'mean': 393451.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'EvalEOSForElems',\n", " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (8,\n", - " 'dset7'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473935,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", - " (8,\n", - " 'dset4'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473928,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset2'}},\n", " (8,\n", - " 'dset8'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.346528909785267,\n", - " 'skew': 0.009053879754739286,\n", + " 3): {'time': {'q': [229266.0, 229266.0, 229266.0, 229266.0, 229266.0],\n", + " 'min': 229266.0,\n", + " 'max': 229266.0,\n", + " 'mean': 229266.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset7'}},\n", " (8,\n", - " 'dset9'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.009053879754739345,\n", + " 4): {'time': {'q': [340746.0, 340746.0, 340746.0, 340746.0, 340746.0],\n", + " 'min': 340746.0,\n", + " 'max': 340746.0,\n", + " 'mean': 340746.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset7'}},\n", " (8,\n", - " 'dset2'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473928,\n", + " 5): {'time': {'q': [214592.0, 214592.0, 214592.0, 214592.0, 214592.0],\n", + " 'min': 214592.0,\n", + " 'max': 214592.0,\n", + " 'mean': 214592.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (8,\n", - " 'dset0'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", + " 6): {'time': {'q': [148668.0, 148668.0, 148668.0, 148668.0, 148668.0],\n", " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473928,\n", + " 'max': 148668.0,\n", + " 'mean': 148668.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (8,\n", - " 'dset5'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.009053879754739345,\n", + " 2): {'time': {'q': [352694.0, 352694.0, 352694.0, 352694.0, 352694.0],\n", + " 'min': 352694.0,\n", + " 'max': 352694.0,\n", + " 'mean': 352694.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset4'}},\n", " (8,\n", - " 'dset6'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", + " 7): {'time': {'q': [426729.0, 426729.0, 426729.0, 426729.0, 426729.0],\n", + " 'min': 426729.0,\n", " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473928,\n", + " 'mean': 426729.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset4'}},\n", " (8,\n", - " 'dset1'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.00905387975473928,\n", + " 1): {'time': {'q': [365612.0, 365612.0, 365612.0, 365612.0, 365612.0],\n", + " 'min': 365612.0,\n", + " 'max': 365612.0,\n", + " 'mean': 365612.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset7'}},\n", " (8,\n", - " 'dset3'): {'time': {'q': [148668.0, 220235.0, 285006.0, 355923.5, 426729.0],\n", - " 'min': 148668.0,\n", - " 'max': 426729.0,\n", - " 'mean': 287552.875,\n", - " 'var': 8103467208.859375,\n", - " 'imb': 0.484001855310958,\n", - " 'kurt': -1.3465289097852673,\n", - " 'skew': 0.009053879754739286,\n", + " 0): {'time': {'q': [222116.0, 222116.0, 222116.0, 222116.0, 222116.0],\n", + " 'min': 222116.0,\n", + " 'max': 222116.0,\n", + " 'mean': 222116.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcEnergyForElems',\n", " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (9,\n", - " 'dset4'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.30768836950483003,\n", - " 'skew': 1.1457855240980566,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", - " (9,\n", - " 'dset3'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset2'}},\n", " (9,\n", - " 'dset5'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", + " 1): {'time': {'q': [218047.0, 218047.0, 218047.0, 218047.0, 218047.0],\n", + " 'min': 218047.0,\n", + " 'max': 218047.0,\n", + " 'mean': 218047.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset4'}},\n", " (9,\n", - " 'dset9'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", + " 0): {'time': {'q': [188615.0, 188615.0, 188615.0, 188615.0, 188615.0],\n", + " 'min': 188615.0,\n", + " 'max': 188615.0,\n", + " 'mean': 188615.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset4'}},\n", " (9,\n", - " 'dset2'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", + " 6): {'time': {'q': [122300.0, 122300.0, 122300.0, 122300.0, 122300.0],\n", " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.30768836950483003,\n", - " 'skew': 1.1457855240980563,\n", + " 'max': 122300.0,\n", + " 'mean': 122300.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset3'}},\n", " (9,\n", - " 'dset0'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", + " 7): {'time': {'q': [127732.0, 127732.0, 127732.0, 127732.0, 127732.0],\n", + " 'min': 127732.0,\n", + " 'max': 127732.0,\n", + " 'mean': 127732.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset3'}},\n", " (9,\n", - " 'dset1'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.30768836950483003,\n", - " 'skew': 1.1457855240980566,\n", + " 5): {'time': {'q': [152655.0, 152655.0, 152655.0, 152655.0, 152655.0],\n", + " 'min': 152655.0,\n", + " 'max': 152655.0,\n", + " 'mean': 152655.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset5'}},\n", " (9,\n", - " 'dset6'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", + " 2): {'time': {'q': [294780.0, 294780.0, 294780.0, 294780.0, 294780.0],\n", + " 'min': 294780.0,\n", " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", + " 'mean': 294780.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset3'}},\n", " (9,\n", - " 'dset8'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.30768836950483003,\n", - " 'skew': 1.1457855240980566,\n", + " 3): {'time': {'q': [157734.0, 157734.0, 157734.0, 157734.0, 157734.0],\n", + " 'min': 157734.0,\n", + " 'max': 157734.0,\n", + " 'mean': 157734.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset3'}},\n", " (9,\n", - " 'dset7'): {'time': {'q': [122300.0, 146424.25, 157755.0, 195973.0, 294780.0],\n", - " 'min': 122300.0,\n", - " 'max': 294780.0,\n", - " 'mean': 177454.875,\n", - " 'var': 2805385415.609375,\n", - " 'imb': 0.6611547020052281,\n", - " 'kurt': 0.3076883695048296,\n", - " 'skew': 1.1457855240980566,\n", + " 4): {'time': {'q': [157776.0, 157776.0, 157776.0, 157776.0, 157776.0],\n", + " 'min': 157776.0,\n", + " 'max': 157776.0,\n", + " 'mean': 157776.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcPressureForElems',\n", " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset3'}},\n", " (10,\n", - " 'dset5'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 0): {'time': {'q': [7973.0, 7973.0, 7973.0, 7973.0, 7973.0],\n", + " 'min': 7973.0,\n", + " 'max': 7973.0,\n", + " 'mean': 7973.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset9'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 2): {'time': {'q': [9894.0, 9894.0, 9894.0, 9894.0, 9894.0],\n", + " 'min': 9894.0,\n", + " 'max': 9894.0,\n", + " 'mean': 9894.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset9'}},\n", " (10,\n", - " 'dset7'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", + " 7): {'time': {'q': [11973.0, 11973.0, 11973.0, 11973.0, 11973.0],\n", + " 'min': 11973.0,\n", " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 'mean': 11973.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset2'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 6): {'time': {'q': [7979.0, 7979.0, 7979.0, 7979.0, 7979.0],\n", + " 'min': 7979.0,\n", + " 'max': 7979.0,\n", + " 'mean': 7979.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset3'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", + " 5): {'time': {'q': [7737.0, 7737.0, 7737.0, 7737.0, 7737.0],\n", " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 'max': 7737.0,\n", + " 'mean': 7737.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset8'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 4): {'time': {'q': [9177.0, 9177.0, 9177.0, 9177.0, 9177.0],\n", + " 'min': 9177.0,\n", + " 'max': 9177.0,\n", + " 'mean': 9177.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset4'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 1): {'time': {'q': [8127.0, 8127.0, 8127.0, 8127.0, 8127.0],\n", + " 'min': 8127.0,\n", + " 'max': 8127.0,\n", + " 'mean': 8127.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset5'}},\n", " (10,\n", - " 'dset1'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", + " 3): {'time': {'q': [8070.0, 8070.0, 8070.0, 8070.0, 8070.0],\n", + " 'min': 8070.0,\n", + " 'max': 8070.0,\n", + " 'mean': 8070.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcSoundSpeedForElems',\n", " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", - " (10,\n", - " 'dset0'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", - " (10,\n", - " 'dset6'): {'time': {'q': [7737.0, 7977.5, 8098.5, 9356.25, 11973.0],\n", - " 'min': 7737.0,\n", - " 'max': 11973.0,\n", - " 'mean': 8866.25,\n", - " 'var': 1855693.6875,\n", - " 'imb': 0.35040180459608067,\n", - " 'kurt': 0.5525054414458981,\n", - " 'skew': 1.351992620335799,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (11,\n", - " 'dset3'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 1): {'time': {'q': [25449.0, 25449.0, 25449.0, 25449.0, 25449.0],\n", + " 'min': 25449.0,\n", + " 'max': 25449.0,\n", + " 'mean': 25449.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset3'}},\n", " (11,\n", - " 'dset0'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 4): {'time': {'q': [23064.0, 23064.0, 23064.0, 23064.0, 23064.0],\n", + " 'min': 23064.0,\n", + " 'max': 23064.0,\n", + " 'mean': 23064.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset3'}},\n", " (11,\n", - " 'dset1'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 5): {'time': {'q': [23281.0, 23281.0, 23281.0, 23281.0, 23281.0],\n", + " 'min': 23281.0,\n", + " 'max': 23281.0,\n", + " 'mean': 23281.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset3'}},\n", " (11,\n", - " 'dset9'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", + " 0): {'time': {'q': [21891.0, 21891.0, 21891.0, 21891.0, 21891.0],\n", " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 'max': 21891.0,\n", + " 'mean': 21891.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset3'}},\n", " (11,\n", - " 'dset4'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 3): {'time': {'q': [22109.0, 22109.0, 22109.0, 22109.0, 22109.0],\n", + " 'min': 22109.0,\n", + " 'max': 22109.0,\n", + " 'mean': 22109.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset3'}},\n", " (11,\n", - " 'dset8'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (11,\n", - " 'dset6'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 4}},\n", - " (11,\n", - " 'dset7'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 6): {'time': {'q': [22362.0, 22362.0, 22362.0, 22362.0, 22362.0],\n", + " 'min': 22362.0,\n", + " 'max': 22362.0,\n", + " 'mean': 22362.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset9'}},\n", " (11,\n", - " 'dset5'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", - " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 7): {'time': {'q': [22494.0, 22494.0, 22494.0, 22494.0, 22494.0],\n", + " 'min': 22494.0,\n", + " 'max': 22494.0,\n", + " 'mean': 22494.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset9'}},\n", " (11,\n", - " 'dset2'): {'time': {'q': [21891.0, 22298.75, 22779.0, 23823.0, 33090.0],\n", - " 'min': 21891.0,\n", + " 2): {'time': {'q': [33090.0, 33090.0, 33090.0, 33090.0, 33090.0],\n", + " 'min': 33090.0,\n", " 'max': 33090.0,\n", - " 'mean': 24217.5,\n", - " 'var': 12339643.75,\n", - " 'imb': 0.36636729637658716,\n", - " 'kurt': 2.1485399802055323,\n", - " 'skew': 1.9162212500008973,\n", + " 'mean': 33090.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcLagrangeElements',\n", " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset4'}},\n", " (12,\n", - " 'dset8'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.3230301185739883,\n", - " 'skew': -0.3042530153918946,\n", + " 2): {'time': {'q': [853294.0, 853294.0, 853294.0, 853294.0, 853294.0],\n", + " 'min': 853294.0,\n", + " 'max': 853294.0,\n", + " 'mean': 853294.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset6'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", + " 4): {'time': {'q': [907675.0, 907675.0, 907675.0, 907675.0, 907675.0],\n", + " 'min': 907675.0,\n", " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.30425301539189464,\n", + " 'mean': 907675.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset0'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.3230301185739883,\n", - " 'skew': -0.30425301539189464,\n", + " 5): {'time': {'q': [623934.0, 623934.0, 623934.0, 623934.0, 623934.0],\n", + " 'min': 623934.0,\n", + " 'max': 623934.0,\n", + " 'mean': 623934.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset5'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.3042530153918946,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", - " (12,\n", - " 'dset7'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.3042530153918946,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (12,\n", - " 'dset4'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.3042530153918946,\n", + " 1): {'time': {'q': [896981.0, 896981.0, 896981.0, 896981.0, 896981.0],\n", + " 'min': 896981.0,\n", + " 'max': 896981.0,\n", + " 'mean': 896981.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset2'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.3230301185739883,\n", - " 'skew': -0.3042530153918946,\n", + " 0): {'time': {'q': [642566.0, 642566.0, 642566.0, 642566.0, 642566.0],\n", + " 'min': 642566.0,\n", + " 'max': 642566.0,\n", + " 'mean': 642566.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset3'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.3042530153918946,\n", + " 3): {'time': {'q': [667751.0, 667751.0, 667751.0, 667751.0, 667751.0],\n", + " 'min': 667751.0,\n", + " 'max': 667751.0,\n", + " 'mean': 667751.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset1'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", - " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.3230301185739883,\n", - " 'skew': -0.3042530153918946,\n", + " 7): {'time': {'q': [840333.0, 840333.0, 840333.0, 840333.0, 840333.0],\n", + " 'min': 840333.0,\n", + " 'max': 840333.0,\n", + " 'mean': 840333.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset8'}},\n", " (12,\n", - " 'dset9'): {'time': {'q': [493338.0, 637908.0, 754042.0, 864215.75, 907675.0],\n", + " 6): {'time': {'q': [493338.0, 493338.0, 493338.0, 493338.0, 493338.0],\n", " 'min': 493338.0,\n", - " 'max': 907675.0,\n", - " 'mean': 740734.0,\n", - " 'var': 20585329027.5,\n", - " 'imb': 0.22537240088884808,\n", - " 'kurt': -1.323030118573988,\n", - " 'skew': -0.30425301539189453,\n", + " 'max': 493338.0,\n", + " 'mean': 493338.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcKinematicsForElems',\n", " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (13,\n", - " 'dset6'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.4367859406328691,\n", - " 'skew': 0.05525027565125145,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", - " (13,\n", - " 'dset3'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.0552502756512514,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset8'}},\n", " (13,\n", - " 'dset2'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", + " 4): {'time': {'q': [91947.0, 91947.0, 91947.0, 91947.0, 91947.0],\n", " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.0552502756512514,\n", + " 'max': 91947.0,\n", + " 'mean': 91947.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset9'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.055250275651251374,\n", + " 3): {'time': {'q': [345305.0, 345305.0, 345305.0, 345305.0, 345305.0],\n", + " 'min': 345305.0,\n", + " 'max': 345305.0,\n", + " 'mean': 345305.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset0'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.05525027565125135,\n", + " 2): {'time': {'q': [119519.0, 119519.0, 119519.0, 119519.0, 119519.0],\n", + " 'min': 119519.0,\n", + " 'max': 119519.0,\n", + " 'mean': 119519.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset7'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.4367859406328691,\n", - " 'skew': 0.0552502756512514,\n", + " 1): {'time': {'q': [207886.0, 207886.0, 207886.0, 207886.0, 207886.0],\n", + " 'min': 207886.0,\n", + " 'max': 207886.0,\n", + " 'mean': 207886.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset4'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", + " 6): {'time': {'q': [480632.0, 480632.0, 480632.0, 480632.0, 480632.0],\n", + " 'min': 480632.0,\n", " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.055250275651251374,\n", + " 'mean': 480632.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset8'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.0552502756512514,\n", + " 0): {'time': {'q': [356717.0, 356717.0, 356717.0, 356717.0, 356717.0],\n", + " 'min': 356717.0,\n", + " 'max': 356717.0,\n", + " 'mean': 356717.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset1'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.055250275651251374,\n", + " 5): {'time': {'q': [448598.0, 448598.0, 448598.0, 448598.0, 448598.0],\n", + " 'min': 448598.0,\n", + " 'max': 448598.0,\n", + " 'mean': 448598.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset6'}},\n", " (13,\n", - " 'dset5'): {'time': {'q': [91947.0, 183486.5, 276595.5, 379687.25, 480632.0],\n", - " 'min': 91947.0,\n", - " 'max': 480632.0,\n", - " 'mean': 281926.625,\n", - " 'var': 18846403589.734375,\n", - " 'imb': 0.7048123780434005,\n", - " 'kurt': -1.436785940632869,\n", - " 'skew': 0.05525027565125135,\n", + " 7): {'time': {'q': [204809.0, 204809.0, 204809.0, 204809.0, 204809.0],\n", + " 'min': 204809.0,\n", + " 'max': 204809.0,\n", + " 'mean': 204809.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcQForElems',\n", " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset2'}},\n", " (14,\n", - " 'dset3'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.526549192422504,\n", - " 'skew': -0.08914394549811265,\n", + " 7): {'time': {'q': [371161.0, 371161.0, 371161.0, 371161.0, 371161.0],\n", + " 'min': 371161.0,\n", + " 'max': 371161.0,\n", + " 'mean': 371161.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset0'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.526549192422504,\n", - " 'skew': -0.08914394549811258,\n", + " 6): {'time': {'q': [445067.0, 445067.0, 445067.0, 445067.0, 445067.0],\n", + " 'min': 445067.0,\n", + " 'max': 445067.0,\n", + " 'mean': 445067.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset2'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", + " 5): {'time': {'q': [448753.0, 448753.0, 448753.0, 448753.0, 448753.0],\n", + " 'min': 448753.0,\n", " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811265,\n", + " 'mean': 448753.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset1'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811265,\n", + " 4): {'time': {'q': [363349.0, 363349.0, 363349.0, 363349.0, 363349.0],\n", + " 'min': 363349.0,\n", + " 'max': 363349.0,\n", + " 'mean': 363349.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset4'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.526549192422504,\n", - " 'skew': -0.08914394549811265,\n", + " 3): {'time': {'q': [412746.0, 412746.0, 412746.0, 412746.0, 412746.0],\n", + " 'min': 412746.0,\n", + " 'max': 412746.0,\n", + " 'mean': 412746.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset5'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", + " 1): {'time': {'q': [326522.0, 326522.0, 326522.0, 326522.0, 326522.0],\n", " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811255,\n", + " 'max': 326522.0,\n", + " 'mean': 326522.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset7'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.526549192422504,\n", - " 'skew': -0.08914394549811265,\n", + " 0): {'time': {'q': [431829.0, 431829.0, 431829.0, 431829.0, 431829.0],\n", + " 'min': 431829.0,\n", + " 'max': 431829.0,\n", + " 'mean': 431829.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset3'}},\n", " (14,\n", - " 'dset6'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811265,\n", + " 2): {'time': {'q': [349038.0, 349038.0, 349038.0, 349038.0, 349038.0],\n", + " 'min': 349038.0,\n", + " 'max': 349038.0,\n", + " 'mean': 349038.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQGradientsForElems',\n", " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (14,\n", - " 'dset8'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811265,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (14,\n", - " 'dset9'): {'time': {'q': [326522.0, 359771.25, 391953.5, 435138.5, 448753.0],\n", - " 'min': 326522.0,\n", - " 'max': 448753.0,\n", - " 'mean': 393558.125,\n", - " 'var': 1927822359.609375,\n", - " 'imb': 0.140245802319543,\n", - " 'kurt': -1.5265491924225043,\n", - " 'skew': -0.08914394549811255,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset3'}},\n", " (15,\n", - " 'dset6'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", + " 6): {'time': {'q': [155072.0, 155072.0, 155072.0, 155072.0, 155072.0],\n", " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.35699594440068155,\n", + " 'max': 155072.0,\n", + " 'mean': 155072.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset6'}},\n", " (15,\n", - " 'dset0'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.3569959444006815,\n", + " 0): {'time': {'q': [162256.0, 162256.0, 162256.0, 162256.0, 162256.0],\n", + " 'min': 162256.0,\n", + " 'max': 162256.0,\n", + " 'mean': 162256.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (15,\n", - " 'dset8'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.35699594440068155,\n", + " 1): {'time': {'q': [238276.0, 238276.0, 238276.0, 238276.0, 238276.0],\n", + " 'min': 238276.0,\n", + " 'max': 238276.0,\n", + " 'mean': 238276.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (15,\n", - " 'dset5'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", + " 7): {'time': {'q': [262458.0, 262458.0, 262458.0, 262458.0, 262458.0],\n", + " 'min': 262458.0,\n", " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.457723855952867,\n", - " 'skew': 0.35699594440068155,\n", + " 'mean': 262458.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset8'}},\n", " (15,\n", - " 'dset9'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.3569959444006816,\n", + " 5): {'time': {'q': [165478.0, 165478.0, 165478.0, 165478.0, 165478.0],\n", + " 'min': 165478.0,\n", + " 'max': 165478.0,\n", + " 'mean': 165478.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset8'}},\n", " (15,\n", - " 'dset2'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.3569959444006816,\n", + " 4): {'time': {'q': [241505.0, 241505.0, 241505.0, 241505.0, 241505.0],\n", + " 'min': 241505.0,\n", + " 'max': 241505.0,\n", + " 'mean': 241505.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset8'}},\n", " (15,\n", - " 'dset3'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.35699594440068155,\n", + " 3): {'time': {'q': [187396.0, 187396.0, 187396.0, 187396.0, 187396.0],\n", + " 'min': 187396.0,\n", + " 'max': 187396.0,\n", + " 'mean': 187396.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset8'}},\n", " (15,\n", - " 'dset4'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.457723855952867,\n", - " 'skew': 0.35699594440068155,\n", + " 2): {'time': {'q': [191604.0, 191604.0, 191604.0, 191604.0, 191604.0],\n", + " 'min': 191604.0,\n", + " 'max': 191604.0,\n", + " 'mean': 191604.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcMonotonicQRegionForElems',\n", " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", - " (15,\n", - " 'dset7'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.457723855952867,\n", - " 'skew': 0.35699594440068155,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", - " (15,\n", - " 'dset1'): {'time': {'q': [155072.0, 164672.5, 189500.0, 239083.25, 262458.0],\n", - " 'min': 155072.0,\n", - " 'max': 262458.0,\n", - " 'mean': 200505.625,\n", - " 'var': 1493866318.484375,\n", - " 'imb': 0.30898073308417157,\n", - " 'kurt': -1.4577238559528671,\n", - " 'skew': 0.35699594440068155,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", - " (16,\n", - " 'dset0'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (16,\n", - " 'dset1'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset0'}},\n", " (16,\n", - " 'dset6'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", + " 7): {'time': {'q': [6171.0, 6171.0, 6171.0, 6171.0, 6171.0],\n", " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 'max': 6171.0,\n", + " 'mean': 6171.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (16,\n", - " 'dset8'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 2): {'time': {'q': [6591.0, 6591.0, 6591.0, 6591.0, 6591.0],\n", + " 'min': 6591.0,\n", + " 'max': 6591.0,\n", + " 'mean': 6591.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset1'}},\n", " (16,\n", - " 'dset5'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 1): {'time': {'q': [6445.0, 6445.0, 6445.0, 6445.0, 6445.0],\n", + " 'min': 6445.0,\n", + " 'max': 6445.0,\n", + " 'mean': 6445.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset1'}},\n", " (16,\n", - " 'dset2'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", + " 6): {'time': {'q': [42609.0, 42609.0, 42609.0, 42609.0, 42609.0],\n", + " 'min': 42609.0,\n", " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 'mean': 42609.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset6'}},\n", " (16,\n", - " 'dset7'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 5): {'time': {'q': [7431.0, 7431.0, 7431.0, 7431.0, 7431.0],\n", + " 'min': 7431.0,\n", + " 'max': 7431.0,\n", + " 'mean': 7431.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset6'}},\n", " (16,\n", - " 'dset9'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 4): {'time': {'q': [6854.0, 6854.0, 6854.0, 6854.0, 6854.0],\n", + " 'min': 6854.0,\n", + " 'max': 6854.0,\n", + " 'mean': 6854.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset6'}},\n", " (16,\n", - " 'dset4'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 0): {'time': {'q': [16902.0, 16902.0, 16902.0, 16902.0, 16902.0],\n", + " 'min': 16902.0,\n", + " 'max': 16902.0,\n", + " 'mean': 16902.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset1'}},\n", " (16,\n", - " 'dset3'): {'time': {'q': [6171.0, 6451.75, 6722.5, 9798.75, 42609.0],\n", - " 'min': 6171.0,\n", - " 'max': 42609.0,\n", - " 'mean': 12432.125,\n", - " 'var': 141456796.109375,\n", - " 'imb': 2.427330404094232,\n", - " 'kurt': 2.225680620019963,\n", - " 'skew': 1.9613090112119398,\n", + " 3): {'time': {'q': [6454.0, 6454.0, 6454.0, 6454.0, 6454.0],\n", + " 'min': 6454.0,\n", + " 'max': 6454.0,\n", + " 'mean': 6454.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'UpdateVolumesForElems',\n", " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (17,\n", - " 'dset1'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 1}},\n", - " (17,\n", - " 'dset0'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset1'}},\n", " (17,\n", - " 'dset6'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007594,\n", - " 'skew': 0.44321930188902114,\n", + " 1): {'time': {'q': [252178.0, 252178.0, 252178.0, 252178.0, 252178.0],\n", + " 'min': 252178.0,\n", + " 'max': 252178.0,\n", + " 'mean': 252178.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset1'}},\n", " (17,\n", - " 'dset7'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 0): {'time': {'q': [206007.0, 206007.0, 206007.0, 206007.0, 206007.0],\n", + " 'min': 206007.0,\n", + " 'max': 206007.0,\n", + " 'mean': 206007.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (17,\n", - " 'dset2'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 2): {'time': {'q': [306392.0, 306392.0, 306392.0, 306392.0, 306392.0],\n", + " 'min': 306392.0,\n", + " 'max': 306392.0,\n", + " 'mean': 306392.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset1'}},\n", " (17,\n", - " 'dset5'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 6): {'time': {'q': [280120.0, 280120.0, 280120.0, 280120.0, 280120.0],\n", + " 'min': 280120.0,\n", + " 'max': 280120.0,\n", + " 'mean': 280120.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset0'}},\n", " (17,\n", - " 'dset3'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", + " 7): {'time': {'q': [340105.0, 340105.0, 340105.0, 340105.0, 340105.0],\n", + " 'min': 340105.0,\n", " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 'mean': 340105.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset7'}},\n", " (17,\n", - " 'dset8'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", + " 5): {'time': {'q': [204412.0, 204412.0, 204412.0, 204412.0, 204412.0],\n", " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 'max': 204412.0,\n", + " 'mean': 204412.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (17,\n", - " 'dset9'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007599,\n", - " 'skew': 0.44321930188902114,\n", + " 4): {'time': {'q': [239869.0, 239869.0, 239869.0, 239869.0, 239869.0],\n", + " 'min': 239869.0,\n", + " 'max': 239869.0,\n", + " 'mean': 239869.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (17,\n", - " 'dset4'): {'time': {'q': [204412.0, 231403.5, 249507.5, 286688.0, 340105.0],\n", - " 'min': 204412.0,\n", - " 'max': 340105.0,\n", - " 'mean': 259490.0,\n", - " 'var': 1952092187.0,\n", - " 'imb': 0.3106670777293923,\n", - " 'kurt': -0.8738686892007594,\n", - " 'skew': 0.44321930188902114,\n", + " 3): {'time': {'q': [246837.0, 246837.0, 246837.0, 246837.0, 246837.0],\n", + " 'min': 246837.0,\n", + " 'max': 246837.0,\n", + " 'mean': 246837.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'LagrangeNodal',\n", " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset7'}},\n", " (18,\n", - " 'dset5'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 4): {'time': {'q': [168395.0, 168395.0, 168395.0, 168395.0, 168395.0],\n", + " 'min': 168395.0,\n", + " 'max': 168395.0,\n", + " 'mean': 168395.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset5'}},\n", " (18,\n", - " 'dset4'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (18,\n", - " 'dset0'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 0): {'time': {'q': [411190.0, 411190.0, 411190.0, 411190.0, 411190.0],\n", + " 'min': 411190.0,\n", + " 'max': 411190.0,\n", + " 'mean': 411190.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset4'}},\n", " (18,\n", - " 'dset9'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", + " 6): {'time': {'q': [537984.0, 537984.0, 537984.0, 537984.0, 537984.0],\n", + " 'min': 537984.0,\n", " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 'mean': 537984.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (18,\n", - " 'dset2'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 7): {'time': {'q': [190604.0, 190604.0, 190604.0, 190604.0, 190604.0],\n", + " 'min': 190604.0,\n", + " 'max': 190604.0,\n", + " 'mean': 190604.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (18,\n", - " 'dset7'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 1): {'time': {'q': [140031.0, 140031.0, 140031.0, 140031.0, 140031.0],\n", + " 'min': 140031.0,\n", + " 'max': 140031.0,\n", + " 'mean': 140031.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset9'}},\n", " (18,\n", - " 'dset1'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", + " 2): {'time': {'q': [126085.0, 126085.0, 126085.0, 126085.0, 126085.0],\n", " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 'max': 126085.0,\n", + " 'mean': 126085.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset9'}},\n", " (18,\n", - " 'dset3'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.473635133466217,\n", - " 'skew': 0.24309476425208215,\n", + " 3): {'time': {'q': [379447.0, 379447.0, 379447.0, 379447.0, 379447.0],\n", + " 'min': 379447.0,\n", + " 'max': 379447.0,\n", + " 'mean': 379447.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset9'}},\n", " (18,\n", - " 'dset6'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.24309476425208212,\n", + " 5): {'time': {'q': [408344.0, 408344.0, 408344.0, 408344.0, 408344.0],\n", + " 'min': 408344.0,\n", + " 'max': 408344.0,\n", + " 'mean': 408344.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcForceForNodes',\n", " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 4}},\n", - " (18,\n", - " 'dset8'): {'time': {'q': [126085.0, 161304.0, 285025.5, 409055.5, 537984.0],\n", - " 'min': 126085.0,\n", - " 'max': 537984.0,\n", - " 'mean': 295260.0,\n", - " 'var': 21499247091.0,\n", - " 'imb': 0.8220686852265799,\n", - " 'kurt': -1.4736351334662172,\n", - " 'skew': 0.2430947642520821,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'rank': 6}},\n", - " (19,\n", - " 'dset9'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", - " (19,\n", - " 'dset1'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset9'}},\n", " (19,\n", - " 'dset7'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", + " 1): {'time': {'q': [8339.0, 8339.0, 8339.0, 8339.0, 8339.0],\n", " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 'max': 8339.0,\n", + " 'mean': 8339.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset9'}},\n", " (19,\n", - " 'dset8'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 0): {'time': {'q': [8780.0, 8780.0, 8780.0, 8780.0, 8780.0],\n", + " 'min': 8780.0,\n", + " 'max': 8780.0,\n", + " 'mean': 8780.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset1'}},\n", " (19,\n", - " 'dset2'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 3): {'time': {'q': [9174.0, 9174.0, 9174.0, 9174.0, 9174.0],\n", + " 'min': 9174.0,\n", + " 'max': 9174.0,\n", + " 'mean': 9174.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset1'}},\n", " (19,\n", - " 'dset5'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 2): {'time': {'q': [13261.0, 13261.0, 13261.0, 13261.0, 13261.0],\n", + " 'min': 13261.0,\n", + " 'max': 13261.0,\n", + " 'mean': 13261.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset7'}},\n", " (19,\n", - " 'dset3'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", + " 4): {'time': {'q': [18019.0, 18019.0, 18019.0, 18019.0, 18019.0],\n", + " 'min': 18019.0,\n", " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 'mean': 18019.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (19,\n", - " 'dset6'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 5): {'time': {'q': [8653.0, 8653.0, 8653.0, 8653.0, 8653.0],\n", + " 'min': 8653.0,\n", + " 'max': 8653.0,\n", + " 'mean': 8653.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset7'}},\n", " (19,\n", - " 'dset0'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 6): {'time': {'q': [8549.0, 8549.0, 8549.0, 8549.0, 8549.0],\n", + " 'min': 8549.0,\n", + " 'max': 8549.0,\n", + " 'mean': 8549.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset8'}},\n", " (19,\n", - " 'dset4'): {'time': {'q': [8339.0, 8627.0, 8977.0, 12460.0, 18019.0],\n", - " 'min': 8339.0,\n", - " 'max': 18019.0,\n", - " 'mean': 10871.0,\n", - " 'var': 10316001.25,\n", - " 'imb': 0.6575292061447889,\n", - " 'kurt': 0.25133425219326355,\n", - " 'skew': 1.2354889222500354,\n", + " 7): {'time': {'q': [12193.0, 12193.0, 12193.0, 12193.0, 12193.0],\n", + " 'min': 12193.0,\n", + " 'max': 12193.0,\n", + " 'mean': 12193.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcVolumeForceForElems',\n", " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (20,\n", - " 'dset6'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset9'}},\n", " (20,\n", - " 'dset1'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", + " 6): {'time': {'q': [494580.0, 494580.0, 494580.0, 494580.0, 494580.0],\n", " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (20,\n", - " 'dset4'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 'max': 494580.0,\n", + " 'mean': 494580.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset6'}},\n", " (20,\n", - " 'dset0'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 0): {'time': {'q': [597414.0, 597414.0, 597414.0, 597414.0, 597414.0],\n", + " 'min': 597414.0,\n", + " 'max': 597414.0,\n", + " 'mean': 597414.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset1'}},\n", " (20,\n", - " 'dset5'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 1): {'time': {'q': [570912.0, 570912.0, 570912.0, 570912.0, 570912.0],\n", + " 'min': 570912.0,\n", + " 'max': 570912.0,\n", + " 'mean': 570912.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset4'}},\n", " (20,\n", - " 'dset9'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 2): {'time': {'q': [578433.0, 578433.0, 578433.0, 578433.0, 578433.0],\n", + " 'min': 578433.0,\n", + " 'max': 578433.0,\n", + " 'mean': 578433.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (20,\n", - " 'dset3'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 3): {'time': {'q': [586524.0, 586524.0, 586524.0, 586524.0, 586524.0],\n", + " 'min': 586524.0,\n", + " 'max': 586524.0,\n", + " 'mean': 586524.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (20,\n", - " 'dset8'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 4): {'time': {'q': [583632.0, 583632.0, 583632.0, 583632.0, 583632.0],\n", + " 'min': 583632.0,\n", + " 'max': 583632.0,\n", + " 'mean': 583632.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (20,\n", - " 'dset7'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", + " 5): {'time': {'q': [599077.0, 599077.0, 599077.0, 599077.0, 599077.0],\n", + " 'min': 599077.0,\n", " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 'mean': 599077.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (20,\n", - " 'dset2'): {'time': {'q': [494580.0, 576552.75, 583766.0, 589246.5, 599077.0],\n", - " 'min': 494580.0,\n", - " 'max': 599077.0,\n", - " 'mean': 574309.0,\n", - " 'var': 982583388.75,\n", - " 'imb': 0.04312660954294639,\n", - " 'kurt': 2.322254192176139,\n", - " 'skew': -1.930747431397297,\n", + " 7): {'time': {'q': [583900.0, 583900.0, 583900.0, 583900.0, 583900.0],\n", + " 'min': 583900.0,\n", + " 'max': 583900.0,\n", + " 'mean': 583900.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcHourglassControlForElems',\n", " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset4'}},\n", " (21,\n", - " 'dset5'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", + " 4): {'time': {'q': [1144720.0, 1144720.0, 1144720.0, 1144720.0, 1144720.0],\n", + " 'min': 1144720.0,\n", + " 'max': 1144720.0,\n", + " 'mean': 1144720.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset9'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", + " 5): {'time': {'q': [1276744.0, 1276744.0, 1276744.0, 1276744.0, 1276744.0],\n", + " 'min': 1276744.0,\n", " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", + " 'mean': 1276744.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset2'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", + " 7): {'time': {'q': [1088315.0, 1088315.0, 1088315.0, 1088315.0, 1088315.0],\n", " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.3367703510625381,\n", + " 'max': 1088315.0,\n", + " 'mean': 1088315.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset9'}},\n", " (21,\n", - " 'dset0'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", + " 2): {'time': {'q': [1166060.0, 1166060.0, 1166060.0, 1166060.0, 1166060.0],\n", + " 'min': 1166060.0,\n", + " 'max': 1166060.0,\n", + " 'mean': 1166060.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset4'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", + " 1): {'time': {'q': [1187834.0, 1187834.0, 1187834.0, 1187834.0, 1187834.0],\n", + " 'min': 1187834.0,\n", + " 'max': 1187834.0,\n", + " 'mean': 1187834.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset7'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", + " 3): {'time': {'q': [1222919.0, 1222919.0, 1222919.0, 1222919.0, 1222919.0],\n", + " 'min': 1222919.0,\n", + " 'max': 1222919.0,\n", + " 'mean': 1222919.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset3'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.33677035106253794,\n", + " 0): {'time': {'q': [1223331.0, 1223331.0, 1223331.0, 1223331.0, 1223331.0],\n", + " 'min': 1223331.0,\n", + " 'max': 1223331.0,\n", + " 'mean': 1223331.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset5'}},\n", " (21,\n", - " 'dset1'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919688,\n", - " 'skew': -0.336770351062538,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", - " (21,\n", - " 'dset6'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919692,\n", - " 'skew': -0.336770351062538,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 4}},\n", - " (21,\n", - " 'dset8'): {'time': {'q': [1088315.0,\n", - " 1160725.0,\n", - " 1205376.5,\n", - " 1234738.25,\n", - " 1276744.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1197360.375,\n", - " 'var': 3561043884.734375,\n", - " 'imb': 0.066298857601664,\n", - " 'kurt': -0.8618185329919688,\n", - " 'skew': -0.3367703510625381,\n", + " 6): {'time': {'q': [1268960.0, 1268960.0, 1268960.0, 1268960.0, 1268960.0],\n", + " 'min': 1268960.0,\n", + " 'max': 1268960.0,\n", + " 'mean': 1268960.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'CalcFBHourglassForceForElems',\n", " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", + " 'dataset': 'dset2'}},\n", " (22,\n", - " 'dset5'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", + " 3): {'time': {'q': [672966.0, 672966.0, 672966.0, 672966.0, 672966.0],\n", + " 'min': 672966.0,\n", + " 'max': 672966.0,\n", + " 'mean': 672966.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset5'}},\n", " (22,\n", - " 'dset7'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", + " 0): {'time': {'q': [448597.0, 448597.0, 448597.0, 448597.0, 448597.0],\n", " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", + " 'max': 448597.0,\n", + " 'mean': 448597.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset5'}},\n", " (22,\n", - " 'dset6'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", + " 1): {'time': {'q': [832046.0, 832046.0, 832046.0, 832046.0, 832046.0],\n", + " 'min': 832046.0,\n", + " 'max': 832046.0,\n", + " 'mean': 832046.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 2}},\n", + " 'dataset': 'dset5'}},\n", " (22,\n", - " 'dset4'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", + " 2): {'time': {'q': [867711.0, 867711.0, 867711.0, 867711.0, 867711.0],\n", + " 'min': 867711.0,\n", + " 'max': 867711.0,\n", + " 'mean': 867711.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (22,\n", - " 'dset8'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.26583833582917,\n", - " 'skew': -0.10383663574787437,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", - " (22,\n", - " 'dset3'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 7}},\n", - " (22,\n", - " 'dset0'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478743,\n", + " 5): {'time': {'q': [579856.0, 579856.0, 579856.0, 579856.0, 579856.0],\n", + " 'min': 579856.0,\n", + " 'max': 579856.0,\n", + " 'mean': 579856.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset7'}},\n", " (22,\n", - " 'dset2'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", + " 7): {'time': {'q': [987804.0, 987804.0, 987804.0, 987804.0, 987804.0],\n", + " 'min': 987804.0,\n", " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.1038366357478744,\n", + " 'mean': 987804.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 5}},\n", + " 'dataset': 'dset7'}},\n", " (22,\n", - " 'dset1'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.10383663574787444,\n", + " 4): {'time': {'q': [842913.0, 842913.0, 842913.0, 842913.0, 842913.0],\n", + " 'min': 842913.0,\n", + " 'max': 842913.0,\n", + " 'mean': 842913.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset7'}},\n", " (22,\n", - " 'dset9'): {'time': {'q': [448597.0, 577427.5, 752506.0, 849112.5, 987804.0],\n", - " 'min': 448597.0,\n", - " 'max': 987804.0,\n", - " 'mean': 725254.375,\n", - " 'var': 29868514054.234375,\n", - " 'imb': 0.3620103980758475,\n", - " 'kurt': -1.2658383358291696,\n", - " 'skew': -0.10383663574787444,\n", + " 6): {'time': {'q': [570142.0, 570142.0, 570142.0, 570142.0, 570142.0],\n", + " 'min': 570142.0,\n", + " 'max': 570142.0,\n", + " 'mean': 570142.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'IntegrateStressForElems',\n", " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'rank': 1}},\n", - " (23,\n", - " 'dset0'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215101,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 5}},\n", - " (23,\n", - " 'dset5'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (23,\n", - " 'dset1'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215101,\n", + " 5): {'time': {'q': [342333.0, 342333.0, 342333.0, 342333.0, 342333.0],\n", + " 'min': 342333.0,\n", + " 'max': 342333.0,\n", + " 'mean': 342333.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 6}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset7'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 4): {'time': {'q': [215603.0, 215603.0, 215603.0, 215603.0, 215603.0],\n", + " 'min': 215603.0,\n", + " 'max': 215603.0,\n", + " 'mean': 215603.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 3}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset6'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 3): {'time': {'q': [323519.0, 323519.0, 323519.0, 323519.0, 323519.0],\n", + " 'min': 323519.0,\n", + " 'max': 323519.0,\n", + " 'mean': 323519.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset8'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 2): {'time': {'q': [171635.0, 171635.0, 171635.0, 171635.0, 171635.0],\n", + " 'min': 171635.0,\n", + " 'max': 171635.0,\n", + " 'mean': 171635.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset9'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 1): {'time': {'q': [212402.0, 212402.0, 212402.0, 212402.0, 212402.0],\n", + " 'min': 212402.0,\n", + " 'max': 212402.0,\n", + " 'mean': 212402.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset2'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 0): {'time': {'q': [418469.0, 418469.0, 418469.0, 418469.0, 418469.0],\n", + " 'min': 418469.0,\n", + " 'max': 418469.0,\n", + " 'mean': 418469.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 0}},\n", + " 'dataset': 'dset0'}},\n", " (23,\n", - " 'dset3'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", + " 7): {'time': {'q': [540.0, 540.0, 540.0, 540.0, 540.0],\n", " 'min': 540.0,\n", - " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 'max': 540.0,\n", + " 'mean': 540.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 7}},\n", + " 'dataset': 'dset5'}},\n", " (23,\n", - " 'dset4'): {'time': {'q': [540.0, 202210.25, 269561.0, 361367.0, 423809.0],\n", - " 'min': 540.0,\n", + " 6): {'time': {'q': [423809.0, 423809.0, 423809.0, 423809.0, 423809.0],\n", + " 'min': 423809.0,\n", " 'max': 423809.0,\n", - " 'mean': 263538.75,\n", - " 'var': 17752943089.6875,\n", - " 'imb': 0.6081468095299079,\n", - " 'kurt': -0.5587672106468693,\n", - " 'skew': -0.5638928119215102,\n", + " 'mean': 423809.0,\n", + " 'var': 0.0,\n", + " 'imb': 0.0,\n", + " 'kurt': -3.0,\n", + " 'skew': 0.0,\n", " 'name': 'TimeIncrement',\n", " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'rank': 0}}}" + " 'dataset': 'dset1'}}}" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } From 7b3b7baf2915474217dbe38490280d6a74e52320 Mon Sep 17 00:00:00 2001 From: jarusified Date: Mon, 4 Oct 2021 15:41:40 -0700 Subject: [PATCH 19/29] drop_index => drop_index_levels; improved validation; add _hatchet_nid column automatically --- .../performance_variability_boxplots.ipynb | 3457 +++++------------ hatchet/tests/boxplot.py | 16 +- hatchet/util/boxplot.py | 146 +- 3 files changed, 1126 insertions(+), 2493 deletions(-) diff --git a/docs/examples/tutorial/performance_variability_boxplots.ipynb b/docs/examples/tutorial/performance_variability_boxplots.ipynb index 2c6ecdec..4820cbe8 100644 --- a/docs/examples/tutorial/performance_variability_boxplots.ipynb +++ b/docs/examples/tutorial/performance_variability_boxplots.ipynb @@ -44,9 +44,10 @@ "for i in range(10):\n", " gf = ht.GraphFrame.from_caliper(data_path)\n", " gf.dataset = \"dset{}\".format(i)\n", + " \n", " gf_list.append(gf)\n", "\n", - "gf_ensemble = unify_ensemble(gf_list)" + "gf_ensemble = unify_ensemble(gf_list)\n" ] }, { @@ -282,9 +283,888 @@ "- metrics - list of inclusive/exclusive metrics (optional) [default = inc_metrics + exc_metrics]." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Case: Multi-index gf has exactly 2 indexes" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametimetime (inc)nidhatchet_nid
nodedataset
{'name': 'main', 'type': 'region'}dset0main119373.505889901.5000
dset1main119373.505889901.5000
dset2main119373.505889901.5000
dset3main119373.505889901.5000
dset4main119373.505889901.5000
.....................
{'name': 'TimeIncrement', 'type': 'region'}dset5TimeIncrement263538.75263538.751223
dset6TimeIncrement263538.75263538.751223
dset7TimeIncrement263538.75263538.751223
dset8TimeIncrement263538.75263538.751223
dset9TimeIncrement263538.75263538.751223
\n", + "

240 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " name time \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset0 main 119373.50 \n", + " dset1 main 119373.50 \n", + " dset2 main 119373.50 \n", + " dset3 main 119373.50 \n", + " dset4 main 119373.50 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset5 TimeIncrement 263538.75 \n", + " dset6 TimeIncrement 263538.75 \n", + " dset7 TimeIncrement 263538.75 \n", + " dset8 TimeIncrement 263538.75 \n", + " dset9 TimeIncrement 263538.75 \n", + "\n", + " time (inc) nid \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset0 5889901.50 0 \n", + " dset1 5889901.50 0 \n", + " dset2 5889901.50 0 \n", + " dset3 5889901.50 0 \n", + " dset4 5889901.50 0 \n", + "... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset5 263538.75 12 \n", + " dset6 263538.75 12 \n", + " dset7 263538.75 12 \n", + " dset8 263538.75 12 \n", + " dset9 263538.75 12 \n", + "\n", + " hatchet_nid \n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset0 0 \n", + " dset1 0 \n", + " dset2 0 \n", + " dset3 0 \n", + " dset4 0 \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset5 23 \n", + " dset6 23 \n", + " dset7 23 \n", + " dset8 23 \n", + " dset9 23 \n", + "\n", + "[240 rows x 5 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_ensemble_copy = gf_ensemble.copy()\n", + "gf_ensemble_copy.dataframe = gf_ensemble_copy.dataframe.groupby([\"node\",\"dataset\"]).agg({'name': 'first', 'time': \"mean\", 'time (inc)': \"mean\", 'nid': 'first', 'hatchet_nid': 'first'})\n", + "gf_ensemble_copy.dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "bp = BoxPlot(multi_index_gf=gf_ensemble_copy, metrics=[\"time\", \"time (inc)\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'time': ,\n", + " 'time (inc)': }" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bp.gf" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
qminmaxmeanvarimbkurtskewnamenidhatchet_nid
node
{'name': 'main', 'type': 'region'}[119373.5, 119373.5, 119373.5, 119373.5, 11937...119373.500119373.500119373.5000.00.0-3.00.0main00
{'name': 'LagrangeLeapFrog', 'type': 'region'}[894.5, 894.5, 894.5, 894.5, 894.5]894.500894.500894.5000.00.0-3.00.0LagrangeLeapFrog11
{'name': 'CalcTimeConstraintsForElems', 'type': 'region'}[7439.0, 7439.0, 7439.0, 7439.0, 7439.0]7439.0007439.0007439.0000.00.0-3.00.0CalcTimeConstraintsForElems92
{'name': 'CalcCourantConstraintForElems', 'type': 'region'}[28915.875, 28915.875, 28915.875, 28915.875, 2...28915.87528915.87528915.8750.00.0-3.00.0CalcCourantConstraintForElems103
{'name': 'CalcHydroConstraintForElems', 'type': 'region'}[10302.875, 10302.875, 10302.875, 10302.875, 1...10302.87510302.87510302.8750.00.0-3.00.0CalcHydroConstraintForElems114
{'name': 'LagrangeElements', 'type': 'region'}[713.875, 713.875, 713.875, 713.875, 713.875]713.875713.875713.8750.00.0-3.00.0LagrangeElements25
{'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}[14166.625, 14166.625, 14166.625, 14166.625, 1...14166.62514166.62514166.6250.00.0-3.00.0ApplyMaterialPropertiesForElems36
{'name': 'EvalEOSForElems', 'type': 'region'}[254763.75, 254763.75, 254763.75, 254763.75, 2...254763.750254763.750254763.7500.00.0-3.00.0EvalEOSForElems47
{'name': 'CalcEnergyForElems', 'type': 'region'}[287552.875, 287552.875, 287552.875, 287552.87...287552.875287552.875287552.8750.00.0-3.00.0CalcEnergyForElems58
{'name': 'CalcPressureForElems', 'type': 'region'}[177454.875, 177454.875, 177454.875, 177454.87...177454.875177454.875177454.8750.00.0-3.00.0CalcPressureForElems69
{'name': 'CalcSoundSpeedForElems', 'type': 'region'}[8866.25, 8866.25, 8866.25, 8866.25, 8866.25]8866.2508866.2508866.2500.00.0-3.00.0CalcSoundSpeedForElems710
{'name': 'CalcLagrangeElements', 'type': 'region'}[24217.5, 24217.5, 24217.5, 24217.5, 24217.5]24217.50024217.50024217.5000.00.0-3.00.0CalcLagrangeElements1911
{'name': 'CalcKinematicsForElems', 'type': 'region'}[740734.0, 740734.0, 740734.0, 740734.0, 74073...740734.000740734.000740734.0000.00.0-3.00.0CalcKinematicsForElems2012
{'name': 'CalcQForElems', 'type': 'region'}[281926.625, 281926.625, 281926.625, 281926.62...281926.625281926.625281926.6250.00.0-3.00.0CalcQForElems2113
{'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}[393558.125, 393558.125, 393558.125, 393558.12...393558.125393558.125393558.1250.00.0-3.00.0CalcMonotonicQGradientsForElems2214
{'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}[200505.625, 200505.625, 200505.625, 200505.62...200505.625200505.625200505.6250.00.0-3.00.0CalcMonotonicQRegionForElems2315
{'name': 'UpdateVolumesForElems', 'type': 'region'}[12432.125, 12432.125, 12432.125, 12432.125, 1...12432.12512432.12512432.1250.00.0-3.00.0UpdateVolumesForElems816
{'name': 'LagrangeNodal', 'type': 'region'}[259490.0, 259490.0, 259490.0, 259490.0, 25949...259490.000259490.000259490.0000.00.0-3.00.0LagrangeNodal1317
{'name': 'CalcForceForNodes', 'type': 'region'}[295260.0, 295260.0, 295260.0, 295260.0, 29526...295260.000295260.000295260.0000.00.0-3.00.0CalcForceForNodes1418
{'name': 'CalcVolumeForceForElems', 'type': 'region'}[10871.0, 10871.0, 10871.0, 10871.0, 10871.0]10871.00010871.00010871.0000.00.0-3.00.0CalcVolumeForceForElems1519
{'name': 'CalcHourglassControlForElems', 'type': 'region'}[574309.0, 574309.0, 574309.0, 574309.0, 57430...574309.000574309.000574309.0000.00.0-3.00.0CalcHourglassControlForElems1720
{'name': 'CalcFBHourglassForceForElems', 'type': 'region'}[1197360.375, 1197360.375, 1197360.375, 119736...1197360.3751197360.3751197360.3750.00.0-3.00.0CalcFBHourglassForceForElems1821
{'name': 'IntegrateStressForElems', 'type': 'region'}[725254.375, 725254.375, 725254.375, 725254.37...725254.375725254.375725254.3750.00.0-3.00.0IntegrateStressForElems1622
{'name': 'TimeIncrement', 'type': 'region'}[263538.75, 263538.75, 263538.75, 263538.75, 2...263538.750263538.750263538.7500.00.0-3.00.0TimeIncrement1223
\n", + "
" + ], + "text/plain": [ + " q \\\n", + "node \n", + "{'name': 'main', 'type': 'region'} [119373.5, 119373.5, 119373.5, 119373.5, 11937... \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} [894.5, 894.5, 894.5, 894.5, 894.5] \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... [7439.0, 7439.0, 7439.0, 7439.0, 7439.0] \n", + "{'name': 'CalcCourantConstraintForElems', 'type... [28915.875, 28915.875, 28915.875, 28915.875, 2... \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... [10302.875, 10302.875, 10302.875, 10302.875, 1... \n", + "{'name': 'LagrangeElements', 'type': 'region'} [713.875, 713.875, 713.875, 713.875, 713.875] \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... [14166.625, 14166.625, 14166.625, 14166.625, 1... \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} [254763.75, 254763.75, 254763.75, 254763.75, 2... \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} [287552.875, 287552.875, 287552.875, 287552.87... \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} [177454.875, 177454.875, 177454.875, 177454.87... \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... [8866.25, 8866.25, 8866.25, 8866.25, 8866.25] \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} [24217.5, 24217.5, 24217.5, 24217.5, 24217.5] \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... [740734.0, 740734.0, 740734.0, 740734.0, 74073... \n", + "{'name': 'CalcQForElems', 'type': 'region'} [281926.625, 281926.625, 281926.625, 281926.62... \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... [393558.125, 393558.125, 393558.125, 393558.12... \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... [200505.625, 200505.625, 200505.625, 200505.62... \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... [12432.125, 12432.125, 12432.125, 12432.125, 1... \n", + "{'name': 'LagrangeNodal', 'type': 'region'} [259490.0, 259490.0, 259490.0, 259490.0, 25949... \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} [295260.0, 295260.0, 295260.0, 295260.0, 29526... \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... [10871.0, 10871.0, 10871.0, 10871.0, 10871.0] \n", + "{'name': 'CalcHourglassControlForElems', 'type'... [574309.0, 574309.0, 574309.0, 574309.0, 57430... \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... [1197360.375, 1197360.375, 1197360.375, 119736... \n", + "{'name': 'IntegrateStressForElems', 'type': 're... [725254.375, 725254.375, 725254.375, 725254.37... \n", + "{'name': 'TimeIncrement', 'type': 'region'} [263538.75, 263538.75, 263538.75, 263538.75, 2... \n", + "\n", + " min max \\\n", + "node \n", + "{'name': 'main', 'type': 'region'} 119373.500 119373.500 \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} 894.500 894.500 \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... 7439.000 7439.000 \n", + "{'name': 'CalcCourantConstraintForElems', 'type... 28915.875 28915.875 \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... 10302.875 10302.875 \n", + "{'name': 'LagrangeElements', 'type': 'region'} 713.875 713.875 \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... 14166.625 14166.625 \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} 254763.750 254763.750 \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} 287552.875 287552.875 \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} 177454.875 177454.875 \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... 8866.250 8866.250 \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} 24217.500 24217.500 \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... 740734.000 740734.000 \n", + "{'name': 'CalcQForElems', 'type': 'region'} 281926.625 281926.625 \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... 393558.125 393558.125 \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... 200505.625 200505.625 \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... 12432.125 12432.125 \n", + "{'name': 'LagrangeNodal', 'type': 'region'} 259490.000 259490.000 \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} 295260.000 295260.000 \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... 10871.000 10871.000 \n", + "{'name': 'CalcHourglassControlForElems', 'type'... 574309.000 574309.000 \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... 1197360.375 1197360.375 \n", + "{'name': 'IntegrateStressForElems', 'type': 're... 725254.375 725254.375 \n", + "{'name': 'TimeIncrement', 'type': 'region'} 263538.750 263538.750 \n", + "\n", + " mean var imb \\\n", + "node \n", + "{'name': 'main', 'type': 'region'} 119373.500 0.0 0.0 \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} 894.500 0.0 0.0 \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... 7439.000 0.0 0.0 \n", + "{'name': 'CalcCourantConstraintForElems', 'type... 28915.875 0.0 0.0 \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... 10302.875 0.0 0.0 \n", + "{'name': 'LagrangeElements', 'type': 'region'} 713.875 0.0 0.0 \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... 14166.625 0.0 0.0 \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} 254763.750 0.0 0.0 \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} 287552.875 0.0 0.0 \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} 177454.875 0.0 0.0 \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... 8866.250 0.0 0.0 \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} 24217.500 0.0 0.0 \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... 740734.000 0.0 0.0 \n", + "{'name': 'CalcQForElems', 'type': 'region'} 281926.625 0.0 0.0 \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... 393558.125 0.0 0.0 \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... 200505.625 0.0 0.0 \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... 12432.125 0.0 0.0 \n", + "{'name': 'LagrangeNodal', 'type': 'region'} 259490.000 0.0 0.0 \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} 295260.000 0.0 0.0 \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... 10871.000 0.0 0.0 \n", + "{'name': 'CalcHourglassControlForElems', 'type'... 574309.000 0.0 0.0 \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... 1197360.375 0.0 0.0 \n", + "{'name': 'IntegrateStressForElems', 'type': 're... 725254.375 0.0 0.0 \n", + "{'name': 'TimeIncrement', 'type': 'region'} 263538.750 0.0 0.0 \n", + "\n", + " kurt skew \\\n", + "node \n", + "{'name': 'main', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... -3.0 0.0 \n", + "{'name': 'CalcCourantConstraintForElems', 'type... -3.0 0.0 \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... -3.0 0.0 \n", + "{'name': 'LagrangeElements', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... -3.0 0.0 \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... -3.0 0.0 \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... -3.0 0.0 \n", + "{'name': 'CalcQForElems', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... -3.0 0.0 \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... -3.0 0.0 \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... -3.0 0.0 \n", + "{'name': 'LagrangeNodal', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} -3.0 0.0 \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... -3.0 0.0 \n", + "{'name': 'CalcHourglassControlForElems', 'type'... -3.0 0.0 \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... -3.0 0.0 \n", + "{'name': 'IntegrateStressForElems', 'type': 're... -3.0 0.0 \n", + "{'name': 'TimeIncrement', 'type': 'region'} -3.0 0.0 \n", + "\n", + " name \\\n", + "node \n", + "{'name': 'main', 'type': 'region'} main \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} LagrangeLeapFrog \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... CalcTimeConstraintsForElems \n", + "{'name': 'CalcCourantConstraintForElems', 'type... CalcCourantConstraintForElems \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... CalcHydroConstraintForElems \n", + "{'name': 'LagrangeElements', 'type': 'region'} LagrangeElements \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... ApplyMaterialPropertiesForElems \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} EvalEOSForElems \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} CalcEnergyForElems \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} CalcPressureForElems \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... CalcSoundSpeedForElems \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} CalcLagrangeElements \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... CalcKinematicsForElems \n", + "{'name': 'CalcQForElems', 'type': 'region'} CalcQForElems \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... CalcMonotonicQGradientsForElems \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... CalcMonotonicQRegionForElems \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... UpdateVolumesForElems \n", + "{'name': 'LagrangeNodal', 'type': 'region'} LagrangeNodal \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} CalcForceForNodes \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... CalcVolumeForceForElems \n", + "{'name': 'CalcHourglassControlForElems', 'type'... CalcHourglassControlForElems \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... CalcFBHourglassForceForElems \n", + "{'name': 'IntegrateStressForElems', 'type': 're... IntegrateStressForElems \n", + "{'name': 'TimeIncrement', 'type': 'region'} TimeIncrement \n", + "\n", + " nid hatchet_nid \n", + "node \n", + "{'name': 'main', 'type': 'region'} 0 0 \n", + "{'name': 'LagrangeLeapFrog', 'type': 'region'} 1 1 \n", + "{'name': 'CalcTimeConstraintsForElems', 'type':... 9 2 \n", + "{'name': 'CalcCourantConstraintForElems', 'type... 10 3 \n", + "{'name': 'CalcHydroConstraintForElems', 'type':... 11 4 \n", + "{'name': 'LagrangeElements', 'type': 'region'} 2 5 \n", + "{'name': 'ApplyMaterialPropertiesForElems', 'ty... 3 6 \n", + "{'name': 'EvalEOSForElems', 'type': 'region'} 4 7 \n", + "{'name': 'CalcEnergyForElems', 'type': 'region'} 5 8 \n", + "{'name': 'CalcPressureForElems', 'type': 'region'} 6 9 \n", + "{'name': 'CalcSoundSpeedForElems', 'type': 'reg... 7 10 \n", + "{'name': 'CalcLagrangeElements', 'type': 'region'} 19 11 \n", + "{'name': 'CalcKinematicsForElems', 'type': 'reg... 20 12 \n", + "{'name': 'CalcQForElems', 'type': 'region'} 21 13 \n", + "{'name': 'CalcMonotonicQGradientsForElems', 'ty... 22 14 \n", + "{'name': 'CalcMonotonicQRegionForElems', 'type'... 23 15 \n", + "{'name': 'UpdateVolumesForElems', 'type': 'regi... 8 16 \n", + "{'name': 'LagrangeNodal', 'type': 'region'} 13 17 \n", + "{'name': 'CalcForceForNodes', 'type': 'region'} 14 18 \n", + "{'name': 'CalcVolumeForceForElems', 'type': 're... 15 19 \n", + "{'name': 'CalcHourglassControlForElems', 'type'... 17 20 \n", + "{'name': 'CalcFBHourglassForceForElems', 'type'... 18 21 \n", + "{'name': 'IntegrateStressForElems', 'type': 're... 16 22 \n", + "{'name': 'TimeIncrement', 'type': 'region'} 12 23 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bp.gf['time'].dataframe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Case: Multi-index gf has more than 2 indexes." + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "ename": "Exception", + "evalue": "multi_index_gf contains 3 indexes = ['node', 'rank', 'dataset']. ht.util.BoxPlot is limited to processing GraphFrames with 2 indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/rv/jkb6mxgd0mbgz87qvq9356zw0000gn/T/ipykernel_66892/3489522065.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# TODO: reword the exception, add an example.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;31m# TODO: drop_index => drop_index_levels.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mbp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgf_ensemble\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"time\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Work/llnl/hatchet/hatchet/util/boxplot.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, multi_index_gf, drop_index_levels, metrics)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"_hatchet_nid\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"node\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hatchet_nid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdrop_indexes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutput_indexes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_drop_index_level\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrop_index_levels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 41\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_metrics\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Work/llnl/hatchet/hatchet/util/boxplot.py\u001b[0m in \u001b[0;36mvalidate_drop_index_level\u001b[0;34m(multi_index_gf, drop_index_levels)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;31m# Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_index_levels\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m raise Exception(\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0;34mf\"multi_index_gf contains {len(df_index_levels)} indexes = {df_index_levels}. ht.util.BoxPlot is limited to processing GraphFrames with 2 indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m )\n", + "\u001b[0;31mException\u001b[0m: multi_index_gf contains 3 indexes = ['node', 'rank', 'dataset']. ht.util.BoxPlot is limited to processing GraphFrames with 2 indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity." + ] + } + ], + "source": [ + "# TODO: reword the exception, add an example. \n", + "# TODO: drop_index => drop_index_levels.\n", + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Case: Metric not found in dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "ename": "Exception", + "evalue": "time (incx) not found in the gf.dataframe.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/rv/jkb6mxgd0mbgz87qvq9356zw0000gn/T/ipykernel_66892/1974429012.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mbp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgf_ensemble\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"time (incx)\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrop_index_levels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"rank\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Work/llnl/hatchet/hatchet/util/boxplot.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, multi_index_gf, drop_index_levels, metrics)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdrop_indexes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutput_indexes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_drop_index_level\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrop_index_levels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBoxPlot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_metrics\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0magg_columns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"_hatchet_nid\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutput_indexes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Work/llnl/hatchet/hatchet/util/boxplot.py\u001b[0m in \u001b[0;36mvalidate_metrics\u001b[0;34m(multi_index_gf, metrics)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmetric\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmetric\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmulti_index_gf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 97\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"{metric} not found in the gf.dataframe.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 98\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mException\u001b[0m: time (incx) not found in the gf.dataframe." + ] + } + ], + "source": [ + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time (incx)\"], drop_index_levels=[\"rank\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Case: Drop index by 'rank'." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: make `drop_index` a list." + ] + }, + { + "cell_type": "code", + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -297,7 +1177,7 @@ } ], "source": [ - "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"rank\")" + "bp = BoxPlot(multi_index_gf=gf_ensemble, drop_index_levels=[\"rank\"], metrics=[\"time\", \"time (inc)\"])" ] }, { @@ -309,8 +1189,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 13, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { @@ -334,7 +1216,6 @@ " \n", " \n", " \n", - " hatchet_nid\n", " q\n", " min\n", " max\n", @@ -343,6 +1224,8 @@ " imb\n", " kurt\n", " skew\n", + " hatchet_nid\n", + " nid\n", " name\n", " \n", " \n", @@ -358,13 +1241,13 @@ " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " {'name': 'main', 'type': 'region'}\n", " dset9\n", - " 0\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -373,11 +1256,12 @@ " 0.148479\n", " -0.942185\n", " 0.543673\n", + " 0\n", + " 0\n", " main\n", " \n", " \n", " dset7\n", - " 0\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -386,11 +1270,12 @@ " 0.148479\n", " -0.942185\n", " 0.543673\n", + " 0\n", + " 0\n", " main\n", " \n", " \n", " dset1\n", - " 0\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -399,11 +1284,12 @@ " 0.148479\n", " -0.942185\n", " 0.543673\n", + " 0\n", + " 0\n", " main\n", " \n", " \n", " dset3\n", - " 0\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -412,11 +1298,12 @@ " 0.148479\n", " -0.942185\n", " 0.543673\n", + " 0\n", + " 0\n", " main\n", " \n", " \n", " dset6\n", - " 0\n", " [105528.0, 113072.25, 116494.0, 124430.75, 137...\n", " 105528.0\n", " 137098.0\n", @@ -425,6 +1312,8 @@ " 0.148479\n", " -0.942185\n", " 0.543673\n", + " 0\n", + " 0\n", " main\n", " \n", " \n", @@ -440,11 +1329,11 @@ " ...\n", " ...\n", " ...\n", + " ...\n", " \n", " \n", " {'name': 'TimeIncrement', 'type': 'region'}\n", " dset8\n", - " 23\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -453,11 +1342,12 @@ " 0.608147\n", " -0.558767\n", " -0.563893\n", + " 23\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " dset9\n", - " 23\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -466,11 +1356,12 @@ " 0.608147\n", " -0.558767\n", " -0.563893\n", + " 23\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " dset2\n", - " 23\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -479,11 +1370,12 @@ " 0.608147\n", " -0.558767\n", " -0.563893\n", + " 23\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " dset3\n", - " 23\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -492,11 +1384,12 @@ " 0.608147\n", " -0.558767\n", " -0.563893\n", + " 23\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " dset4\n", - " 23\n", " [540.0, 202210.25, 269561.0, 361367.0, 423809.0]\n", " 540.0\n", " 423809.0\n", @@ -505,28 +1398,16 @@ " 0.608147\n", " -0.558767\n", " -0.563893\n", + " 23\n", + " 12\n", " TimeIncrement\n", " \n", " \n", "\n", - "

240 rows × 10 columns

\n", + "

240 rows × 11 columns

\n", "" ], "text/plain": [ - " hatchet_nid \\\n", - "node dataset \n", - "{'name': 'main', 'type': 'region'} dset9 0 \n", - " dset7 0 \n", - " dset1 0 \n", - " dset3 0 \n", - " dset6 0 \n", - "... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} dset8 23 \n", - " dset9 23 \n", - " dset2 23 \n", - " dset3 23 \n", - " dset4 23 \n", - "\n", " q \\\n", "node dataset \n", "{'name': 'main', 'type': 'region'} dset9 [105528.0, 113072.25, 116494.0, 124430.75, 137... \n", @@ -583,24 +1464,38 @@ " dset3 0.608147 -0.558767 \n", " dset4 0.608147 -0.558767 \n", "\n", - " skew name \n", - "node dataset \n", - "{'name': 'main', 'type': 'region'} dset9 0.543673 main \n", - " dset7 0.543673 main \n", - " dset1 0.543673 main \n", - " dset3 0.543673 main \n", - " dset6 0.543673 main \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} dset8 -0.563893 TimeIncrement \n", - " dset9 -0.563893 TimeIncrement \n", - " dset2 -0.563893 TimeIncrement \n", - " dset3 -0.563893 TimeIncrement \n", - " dset4 -0.563893 TimeIncrement \n", + " skew hatchet_nid nid \\\n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 0.543673 0 0 \n", + " dset7 0.543673 0 0 \n", + " dset1 0.543673 0 0 \n", + " dset3 0.543673 0 0 \n", + " dset6 0.543673 0 0 \n", + "... ... ... .. \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 -0.563893 23 12 \n", + " dset9 -0.563893 23 12 \n", + " dset2 -0.563893 23 12 \n", + " dset3 -0.563893 23 12 \n", + " dset4 -0.563893 23 12 \n", + "\n", + " name \n", + "node dataset \n", + "{'name': 'main', 'type': 'region'} dset9 main \n", + " dset7 main \n", + " dset1 main \n", + " dset3 main \n", + " dset6 main \n", + "... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} dset8 TimeIncrement \n", + " dset9 TimeIncrement \n", + " dset2 TimeIncrement \n", + " dset3 TimeIncrement \n", + " dset4 TimeIncrement \n", "\n", - "[240 rows x 10 columns]" + "[240 rows x 11 columns]" ] }, - "execution_count": 5, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -611,7 +1506,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 14, "metadata": { "scrolled": true }, @@ -622,21 +1517,22 @@ "text": [ "\n", "MultiIndex: 240 entries, (Node({'name': 'main', 'type': 'region'}), 'dset9') to (Node({'name': 'TimeIncrement', 'type': 'region'}), 'dset4')\n", - "Data columns (total 10 columns):\n", + "Data columns (total 11 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 hatchet_nid 240 non-null int64 \n", - " 1 q 240 non-null object \n", - " 2 min 240 non-null float64\n", - " 3 max 240 non-null float64\n", - " 4 mean 240 non-null float64\n", - " 5 var 240 non-null float64\n", - " 6 imb 240 non-null float64\n", - " 7 kurt 240 non-null float64\n", - " 8 skew 240 non-null float64\n", - " 9 name 240 non-null object \n", - "dtypes: float64(7), int64(1), object(2)\n", - "memory usage: 20.4+ KB\n" + " 0 q 240 non-null object \n", + " 1 min 240 non-null float64\n", + " 2 max 240 non-null float64\n", + " 3 mean 240 non-null float64\n", + " 4 var 240 non-null float64\n", + " 5 imb 240 non-null float64\n", + " 6 kurt 240 non-null float64\n", + " 7 skew 240 non-null float64\n", + " 8 hatchet_nid 240 non-null object \n", + " 9 nid 240 non-null object \n", + " 10 name 240 non-null object \n", + "dtypes: float64(7), object(4)\n", + "memory usage: 22.3+ KB\n" ] } ], @@ -644,9 +1540,16 @@ "bp.gf['time'].dataframe.info()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Case: Drop index by 'dataset'." + ] + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -659,12 +1562,12 @@ } ], "source": [ - "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index=\"dataset\")" + "bp = BoxPlot(multi_index_gf=gf_ensemble, metrics=[\"time\"], drop_index_levels=[\"dataset\"])" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -689,7 +1592,6 @@ " \n", " \n", " \n", - " hatchet_nid\n", " q\n", " min\n", " max\n", @@ -698,6 +1600,9 @@ " imb\n", " kurt\n", " skew\n", + " hatchet_nid\n", + " time (inc)\n", + " nid\n", " name\n", " \n", " \n", @@ -713,13 +1618,14 @@ " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " {'name': 'main', 'type': 'region'}\n", " 0\n", - " 0\n", " [121489.0, 121489.0, 121489.0, 121489.0, 12148...\n", " 121489.0\n", " 121489.0\n", @@ -728,11 +1634,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 0\n", + " 5882425.0\n", + " 0\n", " main\n", " \n", " \n", " 4\n", - " 0\n", " [118953.0, 118953.0, 118953.0, 118953.0, 11895...\n", " 118953.0\n", " 118953.0\n", @@ -741,11 +1649,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 0\n", + " 5905595.0\n", + " 0\n", " main\n", " \n", " \n", " 5\n", - " 0\n", " [133256.0, 133256.0, 133256.0, 133256.0, 13325...\n", " 133256.0\n", " 133256.0\n", @@ -754,11 +1664,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 0\n", + " 5877613.0\n", + " 0\n", " main\n", " \n", " \n", " 6\n", - " 0\n", " [114035.0, 114035.0, 114035.0, 114035.0, 11403...\n", " 114035.0\n", " 114035.0\n", @@ -767,11 +1679,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 0\n", + " 5870933.0\n", + " 0\n", " main\n", " \n", " \n", " 7\n", - " 0\n", " [137098.0, 137098.0, 137098.0, 137098.0, 13709...\n", " 137098.0\n", " 137098.0\n", @@ -780,6 +1694,9 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 0\n", + " 5898724.0\n", + " 0\n", " main\n", " \n", " \n", @@ -795,11 +1712,12 @@ " ...\n", " ...\n", " ...\n", + " ...\n", + " ...\n", " \n", " \n", " {'name': 'TimeIncrement', 'type': 'region'}\n", " 2\n", - " 23\n", " [171635.0, 171635.0, 171635.0, 171635.0, 17163...\n", " 171635.0\n", " 171635.0\n", @@ -808,11 +1726,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 23\n", + " 171635.0\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " 1\n", - " 23\n", " [212402.0, 212402.0, 212402.0, 212402.0, 21240...\n", " 212402.0\n", " 212402.0\n", @@ -821,11 +1741,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 23\n", + " 212402.0\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " 0\n", - " 23\n", " [418469.0, 418469.0, 418469.0, 418469.0, 41846...\n", " 418469.0\n", " 418469.0\n", @@ -834,11 +1756,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 23\n", + " 418469.0\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " 7\n", - " 23\n", " [540.0, 540.0, 540.0, 540.0, 540.0]\n", " 540.0\n", " 540.0\n", @@ -847,11 +1771,13 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 23\n", + " 540.0\n", + " 12\n", " TimeIncrement\n", " \n", " \n", " 6\n", - " 23\n", " [423809.0, 423809.0, 423809.0, 423809.0, 42380...\n", " 423809.0\n", " 423809.0\n", @@ -860,28 +1786,17 @@ " 0.0\n", " -3.0\n", " 0.0\n", + " 23\n", + " 423809.0\n", + " 12\n", " TimeIncrement\n", " \n", " \n", "\n", - "

192 rows × 10 columns

\n", + "

192 rows × 12 columns

\n", "" ], "text/plain": [ - " hatchet_nid \\\n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0 \n", - " 4 0 \n", - " 5 0 \n", - " 6 0 \n", - " 7 0 \n", - "... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 23 \n", - " 1 23 \n", - " 0 23 \n", - " 7 23 \n", - " 6 23 \n", - "\n", " q \\\n", "node rank \n", "{'name': 'main', 'type': 'region'} 0 [121489.0, 121489.0, 121489.0, 121489.0, 12148... \n", @@ -924,24 +1839,38 @@ " 7 540.0 0.0 0.0 -3.0 \n", " 6 423809.0 0.0 0.0 -3.0 \n", "\n", - " skew name \n", - "node rank \n", - "{'name': 'main', 'type': 'region'} 0 0.0 main \n", - " 4 0.0 main \n", - " 5 0.0 main \n", - " 6 0.0 main \n", - " 7 0.0 main \n", - "... ... ... \n", - "{'name': 'TimeIncrement', 'type': 'region'} 2 0.0 TimeIncrement \n", - " 1 0.0 TimeIncrement \n", - " 0 0.0 TimeIncrement \n", - " 7 0.0 TimeIncrement \n", - " 6 0.0 TimeIncrement \n", + " skew hatchet_nid time (inc) \\\n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0.0 0 5882425.0 \n", + " 4 0.0 0 5905595.0 \n", + " 5 0.0 0 5877613.0 \n", + " 6 0.0 0 5870933.0 \n", + " 7 0.0 0 5898724.0 \n", + "... ... ... ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 0.0 23 171635.0 \n", + " 1 0.0 23 212402.0 \n", + " 0 0.0 23 418469.0 \n", + " 7 0.0 23 540.0 \n", + " 6 0.0 23 423809.0 \n", "\n", - "[192 rows x 10 columns]" + " nid name \n", + "node rank \n", + "{'name': 'main', 'type': 'region'} 0 0 main \n", + " 4 0 main \n", + " 5 0 main \n", + " 6 0 main \n", + " 7 0 main \n", + "... .. ... \n", + "{'name': 'TimeIncrement', 'type': 'region'} 2 12 TimeIncrement \n", + " 1 12 TimeIncrement \n", + " 0 12 TimeIncrement \n", + " 7 12 TimeIncrement \n", + " 6 12 TimeIncrement \n", + "\n", + "[192 rows x 12 columns]" ] }, - "execution_count": 8, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -959,7 +1888,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -968,2323 +1897,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{(0,\n", - " 0): {'time': {'q': [121489.0, 121489.0, 121489.0, 121489.0, 121489.0],\n", - " 'min': 121489.0,\n", - " 'max': 121489.0,\n", - " 'mean': 121489.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (0,\n", - " 4): {'time': {'q': [118953.0, 118953.0, 118953.0, 118953.0, 118953.0],\n", - " 'min': 118953.0,\n", - " 'max': 118953.0,\n", - " 'mean': 118953.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (0,\n", - " 5): {'time': {'q': [133256.0, 133256.0, 133256.0, 133256.0, 133256.0],\n", - " 'min': 133256.0,\n", - " 'max': 133256.0,\n", - " 'mean': 133256.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (0,\n", - " 6): {'time': {'q': [114035.0, 114035.0, 114035.0, 114035.0, 114035.0],\n", - " 'min': 114035.0,\n", - " 'max': 114035.0,\n", - " 'mean': 114035.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (0,\n", - " 7): {'time': {'q': [137098.0, 137098.0, 137098.0, 137098.0, 137098.0],\n", - " 'min': 137098.0,\n", - " 'max': 137098.0,\n", - " 'mean': 137098.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (0,\n", - " 3): {'time': {'q': [113830.0, 113830.0, 113830.0, 113830.0, 113830.0],\n", - " 'min': 113830.0,\n", - " 'max': 113830.0,\n", - " 'mean': 113830.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (0,\n", - " 2): {'time': {'q': [110799.0, 110799.0, 110799.0, 110799.0, 110799.0],\n", - " 'min': 110799.0,\n", - " 'max': 110799.0,\n", - " 'mean': 110799.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (0,\n", - " 1): {'time': {'q': [105528.0, 105528.0, 105528.0, 105528.0, 105528.0],\n", - " 'min': 105528.0,\n", - " 'max': 105528.0,\n", - " 'mean': 105528.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'main',\n", - " 'node': Node({'name': 'main', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (1,\n", - " 7): {'time': {'q': [543.0, 543.0, 543.0, 543.0, 543.0],\n", - " 'min': 543.0,\n", - " 'max': 543.0,\n", - " 'mean': 543.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (1,\n", - " 0): {'time': {'q': [528.0, 528.0, 528.0, 528.0, 528.0],\n", - " 'min': 528.0,\n", - " 'max': 528.0,\n", - " 'mean': 528.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (1,\n", - " 1): {'time': {'q': [499.0, 499.0, 499.0, 499.0, 499.0],\n", - " 'min': 499.0,\n", - " 'max': 499.0,\n", - " 'mean': 499.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (1,\n", - " 4): {'time': {'q': [513.0, 513.0, 513.0, 513.0, 513.0],\n", - " 'min': 513.0,\n", - " 'max': 513.0,\n", - " 'mean': 513.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (1,\n", - " 3): {'time': {'q': [511.0, 511.0, 511.0, 511.0, 511.0],\n", - " 'min': 511.0,\n", - " 'max': 511.0,\n", - " 'mean': 511.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (1,\n", - " 6): {'time': {'q': [525.0, 525.0, 525.0, 525.0, 525.0],\n", - " 'min': 525.0,\n", - " 'max': 525.0,\n", - " 'mean': 525.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (1,\n", - " 5): {'time': {'q': [517.0, 517.0, 517.0, 517.0, 517.0],\n", - " 'min': 517.0,\n", - " 'max': 517.0,\n", - " 'mean': 517.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (1,\n", - " 2): {'time': {'q': [3520.0, 3520.0, 3520.0, 3520.0, 3520.0],\n", - " 'min': 3520.0,\n", - " 'max': 3520.0,\n", - " 'mean': 3520.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeLeapFrog',\n", - " 'node': Node({'name': 'LagrangeLeapFrog', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (2,\n", - " 0): {'time': {'q': [21493.0, 21493.0, 21493.0, 21493.0, 21493.0],\n", - " 'min': 21493.0,\n", - " 'max': 21493.0,\n", - " 'mean': 21493.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (2,\n", - " 4): {'time': {'q': [2321.0, 2321.0, 2321.0, 2321.0, 2321.0],\n", - " 'min': 2321.0,\n", - " 'max': 2321.0,\n", - " 'mean': 2321.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (2,\n", - " 6): {'time': {'q': [14203.0, 14203.0, 14203.0, 14203.0, 14203.0],\n", - " 'min': 14203.0,\n", - " 'max': 14203.0,\n", - " 'mean': 14203.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (2,\n", - " 5): {'time': {'q': [2828.0, 2828.0, 2828.0, 2828.0, 2828.0],\n", - " 'min': 2828.0,\n", - " 'max': 2828.0,\n", - " 'mean': 2828.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (2,\n", - " 3): {'time': {'q': [10194.0, 10194.0, 10194.0, 10194.0, 10194.0],\n", - " 'min': 10194.0,\n", - " 'max': 10194.0,\n", - " 'mean': 10194.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (2,\n", - " 1): {'time': {'q': [2745.0, 2745.0, 2745.0, 2745.0, 2745.0],\n", - " 'min': 2745.0,\n", - " 'max': 2745.0,\n", - " 'mean': 2745.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (2,\n", - " 2): {'time': {'q': [2758.0, 2758.0, 2758.0, 2758.0, 2758.0],\n", - " 'min': 2758.0,\n", - " 'max': 2758.0,\n", - " 'mean': 2758.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (2,\n", - " 7): {'time': {'q': [2970.0, 2970.0, 2970.0, 2970.0, 2970.0],\n", - " 'min': 2970.0,\n", - " 'max': 2970.0,\n", - " 'mean': 2970.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcTimeConstraintsForElems',\n", - " 'node': Node({'name': 'CalcTimeConstraintsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (3,\n", - " 2): {'time': {'q': [16695.0, 16695.0, 16695.0, 16695.0, 16695.0],\n", - " 'min': 16695.0,\n", - " 'max': 16695.0,\n", - " 'mean': 16695.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 1): {'time': {'q': [17558.0, 17558.0, 17558.0, 17558.0, 17558.0],\n", - " 'min': 17558.0,\n", - " 'max': 17558.0,\n", - " 'mean': 17558.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 0): {'time': {'q': [85866.0, 85866.0, 85866.0, 85866.0, 85866.0],\n", - " 'min': 85866.0,\n", - " 'max': 85866.0,\n", - " 'mean': 85866.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 3): {'time': {'q': [25658.0, 25658.0, 25658.0, 25658.0, 25658.0],\n", - " 'min': 25658.0,\n", - " 'max': 25658.0,\n", - " 'mean': 25658.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 4): {'time': {'q': [17195.0, 17195.0, 17195.0, 17195.0, 17195.0],\n", - " 'min': 17195.0,\n", - " 'max': 17195.0,\n", - " 'mean': 17195.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 5): {'time': {'q': [21244.0, 21244.0, 21244.0, 21244.0, 21244.0],\n", - " 'min': 21244.0,\n", - " 'max': 21244.0,\n", - " 'mean': 21244.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 6): {'time': {'q': [30246.0, 30246.0, 30246.0, 30246.0, 30246.0],\n", - " 'min': 30246.0,\n", - " 'max': 30246.0,\n", - " 'mean': 30246.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (3,\n", - " 7): {'time': {'q': [16865.0, 16865.0, 16865.0, 16865.0, 16865.0],\n", - " 'min': 16865.0,\n", - " 'max': 16865.0,\n", - " 'mean': 16865.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcCourantConstraintForElems',\n", - " 'node': Node({'name': 'CalcCourantConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (4,\n", - " 7): {'time': {'q': [4906.0, 4906.0, 4906.0, 4906.0, 4906.0],\n", - " 'min': 4906.0,\n", - " 'max': 4906.0,\n", - " 'mean': 4906.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (4,\n", - " 0): {'time': {'q': [29653.0, 29653.0, 29653.0, 29653.0, 29653.0],\n", - " 'min': 29653.0,\n", - " 'max': 29653.0,\n", - " 'mean': 29653.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (4,\n", - " 5): {'time': {'q': [5628.0, 5628.0, 5628.0, 5628.0, 5628.0],\n", - " 'min': 5628.0,\n", - " 'max': 5628.0,\n", - " 'mean': 5628.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (4,\n", - " 4): {'time': {'q': [4600.0, 4600.0, 4600.0, 4600.0, 4600.0],\n", - " 'min': 4600.0,\n", - " 'max': 4600.0,\n", - " 'mean': 4600.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (4,\n", - " 3): {'time': {'q': [4781.0, 4781.0, 4781.0, 4781.0, 4781.0],\n", - " 'min': 4781.0,\n", - " 'max': 4781.0,\n", - " 'mean': 4781.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (4,\n", - " 2): {'time': {'q': [4658.0, 4658.0, 4658.0, 4658.0, 4658.0],\n", - " 'min': 4658.0,\n", - " 'max': 4658.0,\n", - " 'mean': 4658.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (4,\n", - " 1): {'time': {'q': [4523.0, 4523.0, 4523.0, 4523.0, 4523.0],\n", - " 'min': 4523.0,\n", - " 'max': 4523.0,\n", - " 'mean': 4523.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (4,\n", - " 6): {'time': {'q': [23674.0, 23674.0, 23674.0, 23674.0, 23674.0],\n", - " 'min': 23674.0,\n", - " 'max': 23674.0,\n", - " 'mean': 23674.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHydroConstraintForElems',\n", - " 'node': Node({'name': 'CalcHydroConstraintForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (5,\n", - " 3): {'time': {'q': [670.0, 670.0, 670.0, 670.0, 670.0],\n", - " 'min': 670.0,\n", - " 'max': 670.0,\n", - " 'mean': 670.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (5,\n", - " 2): {'time': {'q': [923.0, 923.0, 923.0, 923.0, 923.0],\n", - " 'min': 923.0,\n", - " 'max': 923.0,\n", - " 'mean': 923.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (5,\n", - " 1): {'time': {'q': [656.0, 656.0, 656.0, 656.0, 656.0],\n", - " 'min': 656.0,\n", - " 'max': 656.0,\n", - " 'mean': 656.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (5,\n", - " 0): {'time': {'q': [663.0, 663.0, 663.0, 663.0, 663.0],\n", - " 'min': 663.0,\n", - " 'max': 663.0,\n", - " 'mean': 663.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (5,\n", - " 4): {'time': {'q': [675.0, 675.0, 675.0, 675.0, 675.0],\n", - " 'min': 675.0,\n", - " 'max': 675.0,\n", - " 'mean': 675.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (5,\n", - " 5): {'time': {'q': [664.0, 664.0, 664.0, 664.0, 664.0],\n", - " 'min': 664.0,\n", - " 'max': 664.0,\n", - " 'mean': 664.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (5,\n", - " 7): {'time': {'q': [832.0, 832.0, 832.0, 832.0, 832.0],\n", - " 'min': 832.0,\n", - " 'max': 832.0,\n", - " 'mean': 832.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (5,\n", - " 6): {'time': {'q': [628.0, 628.0, 628.0, 628.0, 628.0],\n", - " 'min': 628.0,\n", - " 'max': 628.0,\n", - " 'mean': 628.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeElements',\n", - " 'node': Node({'name': 'LagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (6,\n", - " 5): {'time': {'q': [11505.0, 11505.0, 11505.0, 11505.0, 11505.0],\n", - " 'min': 11505.0,\n", - " 'max': 11505.0,\n", - " 'mean': 11505.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (6,\n", - " 6): {'time': {'q': [22583.0, 22583.0, 22583.0, 22583.0, 22583.0],\n", - " 'min': 22583.0,\n", - " 'max': 22583.0,\n", - " 'mean': 22583.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (6,\n", - " 7): {'time': {'q': [13609.0, 13609.0, 13609.0, 13609.0, 13609.0],\n", - " 'min': 13609.0,\n", - " 'max': 13609.0,\n", - " 'mean': 13609.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (6,\n", - " 0): {'time': {'q': [14072.0, 14072.0, 14072.0, 14072.0, 14072.0],\n", - " 'min': 14072.0,\n", - " 'max': 14072.0,\n", - " 'mean': 14072.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (6,\n", - " 2): {'time': {'q': [13643.0, 13643.0, 13643.0, 13643.0, 13643.0],\n", - " 'min': 13643.0,\n", - " 'max': 13643.0,\n", - " 'mean': 13643.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (6,\n", - " 3): {'time': {'q': [13171.0, 13171.0, 13171.0, 13171.0, 13171.0],\n", - " 'min': 13171.0,\n", - " 'max': 13171.0,\n", - " 'mean': 13171.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (6,\n", - " 4): {'time': {'q': [12643.0, 12643.0, 12643.0, 12643.0, 12643.0],\n", - " 'min': 12643.0,\n", - " 'max': 12643.0,\n", - " 'mean': 12643.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (6,\n", - " 1): {'time': {'q': [12107.0, 12107.0, 12107.0, 12107.0, 12107.0],\n", - " 'min': 12107.0,\n", - " 'max': 12107.0,\n", - " 'mean': 12107.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'ApplyMaterialPropertiesForElems',\n", - " 'node': Node({'name': 'ApplyMaterialPropertiesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (7,\n", - " 6): {'time': {'q': [162868.0, 162868.0, 162868.0, 162868.0, 162868.0],\n", - " 'min': 162868.0,\n", - " 'max': 162868.0,\n", - " 'mean': 162868.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (7,\n", - " 7): {'time': {'q': [244580.0, 244580.0, 244580.0, 244580.0, 244580.0],\n", - " 'min': 244580.0,\n", - " 'max': 244580.0,\n", - " 'mean': 244580.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (7,\n", - " 5): {'time': {'q': [190093.0, 190093.0, 190093.0, 190093.0, 190093.0],\n", - " 'min': 190093.0,\n", - " 'max': 190093.0,\n", - " 'mean': 190093.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (7,\n", - " 0): {'time': {'q': [244008.0, 244008.0, 244008.0, 244008.0, 244008.0],\n", - " 'min': 244008.0,\n", - " 'max': 244008.0,\n", - " 'mean': 244008.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (7,\n", - " 3): {'time': {'q': [235964.0, 235964.0, 235964.0, 235964.0, 235964.0],\n", - " 'min': 235964.0,\n", - " 'max': 235964.0,\n", - " 'mean': 235964.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (7,\n", - " 2): {'time': {'q': [305500.0, 305500.0, 305500.0, 305500.0, 305500.0],\n", - " 'min': 305500.0,\n", - " 'max': 305500.0,\n", - " 'mean': 305500.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (7,\n", - " 1): {'time': {'q': [261646.0, 261646.0, 261646.0, 261646.0, 261646.0],\n", - " 'min': 261646.0,\n", - " 'max': 261646.0,\n", - " 'mean': 261646.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (7,\n", - " 4): {'time': {'q': [393451.0, 393451.0, 393451.0, 393451.0, 393451.0],\n", - " 'min': 393451.0,\n", - " 'max': 393451.0,\n", - " 'mean': 393451.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'EvalEOSForElems',\n", - " 'node': Node({'name': 'EvalEOSForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (8,\n", - " 3): {'time': {'q': [229266.0, 229266.0, 229266.0, 229266.0, 229266.0],\n", - " 'min': 229266.0,\n", - " 'max': 229266.0,\n", - " 'mean': 229266.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (8,\n", - " 4): {'time': {'q': [340746.0, 340746.0, 340746.0, 340746.0, 340746.0],\n", - " 'min': 340746.0,\n", - " 'max': 340746.0,\n", - " 'mean': 340746.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (8,\n", - " 5): {'time': {'q': [214592.0, 214592.0, 214592.0, 214592.0, 214592.0],\n", - " 'min': 214592.0,\n", - " 'max': 214592.0,\n", - " 'mean': 214592.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (8,\n", - " 6): {'time': {'q': [148668.0, 148668.0, 148668.0, 148668.0, 148668.0],\n", - " 'min': 148668.0,\n", - " 'max': 148668.0,\n", - " 'mean': 148668.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (8,\n", - " 2): {'time': {'q': [352694.0, 352694.0, 352694.0, 352694.0, 352694.0],\n", - " 'min': 352694.0,\n", - " 'max': 352694.0,\n", - " 'mean': 352694.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (8,\n", - " 7): {'time': {'q': [426729.0, 426729.0, 426729.0, 426729.0, 426729.0],\n", - " 'min': 426729.0,\n", - " 'max': 426729.0,\n", - " 'mean': 426729.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (8,\n", - " 1): {'time': {'q': [365612.0, 365612.0, 365612.0, 365612.0, 365612.0],\n", - " 'min': 365612.0,\n", - " 'max': 365612.0,\n", - " 'mean': 365612.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (8,\n", - " 0): {'time': {'q': [222116.0, 222116.0, 222116.0, 222116.0, 222116.0],\n", - " 'min': 222116.0,\n", - " 'max': 222116.0,\n", - " 'mean': 222116.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcEnergyForElems',\n", - " 'node': Node({'name': 'CalcEnergyForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (9,\n", - " 1): {'time': {'q': [218047.0, 218047.0, 218047.0, 218047.0, 218047.0],\n", - " 'min': 218047.0,\n", - " 'max': 218047.0,\n", - " 'mean': 218047.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (9,\n", - " 0): {'time': {'q': [188615.0, 188615.0, 188615.0, 188615.0, 188615.0],\n", - " 'min': 188615.0,\n", - " 'max': 188615.0,\n", - " 'mean': 188615.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (9,\n", - " 6): {'time': {'q': [122300.0, 122300.0, 122300.0, 122300.0, 122300.0],\n", - " 'min': 122300.0,\n", - " 'max': 122300.0,\n", - " 'mean': 122300.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (9,\n", - " 7): {'time': {'q': [127732.0, 127732.0, 127732.0, 127732.0, 127732.0],\n", - " 'min': 127732.0,\n", - " 'max': 127732.0,\n", - " 'mean': 127732.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (9,\n", - " 5): {'time': {'q': [152655.0, 152655.0, 152655.0, 152655.0, 152655.0],\n", - " 'min': 152655.0,\n", - " 'max': 152655.0,\n", - " 'mean': 152655.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (9,\n", - " 2): {'time': {'q': [294780.0, 294780.0, 294780.0, 294780.0, 294780.0],\n", - " 'min': 294780.0,\n", - " 'max': 294780.0,\n", - " 'mean': 294780.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (9,\n", - " 3): {'time': {'q': [157734.0, 157734.0, 157734.0, 157734.0, 157734.0],\n", - " 'min': 157734.0,\n", - " 'max': 157734.0,\n", - " 'mean': 157734.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (9,\n", - " 4): {'time': {'q': [157776.0, 157776.0, 157776.0, 157776.0, 157776.0],\n", - " 'min': 157776.0,\n", - " 'max': 157776.0,\n", - " 'mean': 157776.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcPressureForElems',\n", - " 'node': Node({'name': 'CalcPressureForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (10,\n", - " 0): {'time': {'q': [7973.0, 7973.0, 7973.0, 7973.0, 7973.0],\n", - " 'min': 7973.0,\n", - " 'max': 7973.0,\n", - " 'mean': 7973.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 2): {'time': {'q': [9894.0, 9894.0, 9894.0, 9894.0, 9894.0],\n", - " 'min': 9894.0,\n", - " 'max': 9894.0,\n", - " 'mean': 9894.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (10,\n", - " 7): {'time': {'q': [11973.0, 11973.0, 11973.0, 11973.0, 11973.0],\n", - " 'min': 11973.0,\n", - " 'max': 11973.0,\n", - " 'mean': 11973.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 6): {'time': {'q': [7979.0, 7979.0, 7979.0, 7979.0, 7979.0],\n", - " 'min': 7979.0,\n", - " 'max': 7979.0,\n", - " 'mean': 7979.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 5): {'time': {'q': [7737.0, 7737.0, 7737.0, 7737.0, 7737.0],\n", - " 'min': 7737.0,\n", - " 'max': 7737.0,\n", - " 'mean': 7737.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 4): {'time': {'q': [9177.0, 9177.0, 9177.0, 9177.0, 9177.0],\n", - " 'min': 9177.0,\n", - " 'max': 9177.0,\n", - " 'mean': 9177.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 1): {'time': {'q': [8127.0, 8127.0, 8127.0, 8127.0, 8127.0],\n", - " 'min': 8127.0,\n", - " 'max': 8127.0,\n", - " 'mean': 8127.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (10,\n", - " 3): {'time': {'q': [8070.0, 8070.0, 8070.0, 8070.0, 8070.0],\n", - " 'min': 8070.0,\n", - " 'max': 8070.0,\n", - " 'mean': 8070.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcSoundSpeedForElems',\n", - " 'node': Node({'name': 'CalcSoundSpeedForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (11,\n", - " 1): {'time': {'q': [25449.0, 25449.0, 25449.0, 25449.0, 25449.0],\n", - " 'min': 25449.0,\n", - " 'max': 25449.0,\n", - " 'mean': 25449.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (11,\n", - " 4): {'time': {'q': [23064.0, 23064.0, 23064.0, 23064.0, 23064.0],\n", - " 'min': 23064.0,\n", - " 'max': 23064.0,\n", - " 'mean': 23064.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (11,\n", - " 5): {'time': {'q': [23281.0, 23281.0, 23281.0, 23281.0, 23281.0],\n", - " 'min': 23281.0,\n", - " 'max': 23281.0,\n", - " 'mean': 23281.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (11,\n", - " 0): {'time': {'q': [21891.0, 21891.0, 21891.0, 21891.0, 21891.0],\n", - " 'min': 21891.0,\n", - " 'max': 21891.0,\n", - " 'mean': 21891.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (11,\n", - " 3): {'time': {'q': [22109.0, 22109.0, 22109.0, 22109.0, 22109.0],\n", - " 'min': 22109.0,\n", - " 'max': 22109.0,\n", - " 'mean': 22109.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (11,\n", - " 6): {'time': {'q': [22362.0, 22362.0, 22362.0, 22362.0, 22362.0],\n", - " 'min': 22362.0,\n", - " 'max': 22362.0,\n", - " 'mean': 22362.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (11,\n", - " 7): {'time': {'q': [22494.0, 22494.0, 22494.0, 22494.0, 22494.0],\n", - " 'min': 22494.0,\n", - " 'max': 22494.0,\n", - " 'mean': 22494.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (11,\n", - " 2): {'time': {'q': [33090.0, 33090.0, 33090.0, 33090.0, 33090.0],\n", - " 'min': 33090.0,\n", - " 'max': 33090.0,\n", - " 'mean': 33090.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcLagrangeElements',\n", - " 'node': Node({'name': 'CalcLagrangeElements', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (12,\n", - " 2): {'time': {'q': [853294.0, 853294.0, 853294.0, 853294.0, 853294.0],\n", - " 'min': 853294.0,\n", - " 'max': 853294.0,\n", - " 'mean': 853294.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 4): {'time': {'q': [907675.0, 907675.0, 907675.0, 907675.0, 907675.0],\n", - " 'min': 907675.0,\n", - " 'max': 907675.0,\n", - " 'mean': 907675.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 5): {'time': {'q': [623934.0, 623934.0, 623934.0, 623934.0, 623934.0],\n", - " 'min': 623934.0,\n", - " 'max': 623934.0,\n", - " 'mean': 623934.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 1): {'time': {'q': [896981.0, 896981.0, 896981.0, 896981.0, 896981.0],\n", - " 'min': 896981.0,\n", - " 'max': 896981.0,\n", - " 'mean': 896981.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 0): {'time': {'q': [642566.0, 642566.0, 642566.0, 642566.0, 642566.0],\n", - " 'min': 642566.0,\n", - " 'max': 642566.0,\n", - " 'mean': 642566.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 3): {'time': {'q': [667751.0, 667751.0, 667751.0, 667751.0, 667751.0],\n", - " 'min': 667751.0,\n", - " 'max': 667751.0,\n", - " 'mean': 667751.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 7): {'time': {'q': [840333.0, 840333.0, 840333.0, 840333.0, 840333.0],\n", - " 'min': 840333.0,\n", - " 'max': 840333.0,\n", - " 'mean': 840333.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (12,\n", - " 6): {'time': {'q': [493338.0, 493338.0, 493338.0, 493338.0, 493338.0],\n", - " 'min': 493338.0,\n", - " 'max': 493338.0,\n", - " 'mean': 493338.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcKinematicsForElems',\n", - " 'node': Node({'name': 'CalcKinematicsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (13,\n", - " 4): {'time': {'q': [91947.0, 91947.0, 91947.0, 91947.0, 91947.0],\n", - " 'min': 91947.0,\n", - " 'max': 91947.0,\n", - " 'mean': 91947.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 3): {'time': {'q': [345305.0, 345305.0, 345305.0, 345305.0, 345305.0],\n", - " 'min': 345305.0,\n", - " 'max': 345305.0,\n", - " 'mean': 345305.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 2): {'time': {'q': [119519.0, 119519.0, 119519.0, 119519.0, 119519.0],\n", - " 'min': 119519.0,\n", - " 'max': 119519.0,\n", - " 'mean': 119519.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 1): {'time': {'q': [207886.0, 207886.0, 207886.0, 207886.0, 207886.0],\n", - " 'min': 207886.0,\n", - " 'max': 207886.0,\n", - " 'mean': 207886.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 6): {'time': {'q': [480632.0, 480632.0, 480632.0, 480632.0, 480632.0],\n", - " 'min': 480632.0,\n", - " 'max': 480632.0,\n", - " 'mean': 480632.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 0): {'time': {'q': [356717.0, 356717.0, 356717.0, 356717.0, 356717.0],\n", - " 'min': 356717.0,\n", - " 'max': 356717.0,\n", - " 'mean': 356717.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 5): {'time': {'q': [448598.0, 448598.0, 448598.0, 448598.0, 448598.0],\n", - " 'min': 448598.0,\n", - " 'max': 448598.0,\n", - " 'mean': 448598.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (13,\n", - " 7): {'time': {'q': [204809.0, 204809.0, 204809.0, 204809.0, 204809.0],\n", - " 'min': 204809.0,\n", - " 'max': 204809.0,\n", - " 'mean': 204809.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcQForElems',\n", - " 'node': Node({'name': 'CalcQForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (14,\n", - " 7): {'time': {'q': [371161.0, 371161.0, 371161.0, 371161.0, 371161.0],\n", - " 'min': 371161.0,\n", - " 'max': 371161.0,\n", - " 'mean': 371161.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 6): {'time': {'q': [445067.0, 445067.0, 445067.0, 445067.0, 445067.0],\n", - " 'min': 445067.0,\n", - " 'max': 445067.0,\n", - " 'mean': 445067.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 5): {'time': {'q': [448753.0, 448753.0, 448753.0, 448753.0, 448753.0],\n", - " 'min': 448753.0,\n", - " 'max': 448753.0,\n", - " 'mean': 448753.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 4): {'time': {'q': [363349.0, 363349.0, 363349.0, 363349.0, 363349.0],\n", - " 'min': 363349.0,\n", - " 'max': 363349.0,\n", - " 'mean': 363349.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 3): {'time': {'q': [412746.0, 412746.0, 412746.0, 412746.0, 412746.0],\n", - " 'min': 412746.0,\n", - " 'max': 412746.0,\n", - " 'mean': 412746.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 1): {'time': {'q': [326522.0, 326522.0, 326522.0, 326522.0, 326522.0],\n", - " 'min': 326522.0,\n", - " 'max': 326522.0,\n", - " 'mean': 326522.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 0): {'time': {'q': [431829.0, 431829.0, 431829.0, 431829.0, 431829.0],\n", - " 'min': 431829.0,\n", - " 'max': 431829.0,\n", - " 'mean': 431829.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (14,\n", - " 2): {'time': {'q': [349038.0, 349038.0, 349038.0, 349038.0, 349038.0],\n", - " 'min': 349038.0,\n", - " 'max': 349038.0,\n", - " 'mean': 349038.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQGradientsForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQGradientsForElems', 'type': 'region'}),\n", - " 'dataset': 'dset3'}},\n", - " (15,\n", - " 6): {'time': {'q': [155072.0, 155072.0, 155072.0, 155072.0, 155072.0],\n", - " 'min': 155072.0,\n", - " 'max': 155072.0,\n", - " 'mean': 155072.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (15,\n", - " 0): {'time': {'q': [162256.0, 162256.0, 162256.0, 162256.0, 162256.0],\n", - " 'min': 162256.0,\n", - " 'max': 162256.0,\n", - " 'mean': 162256.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (15,\n", - " 1): {'time': {'q': [238276.0, 238276.0, 238276.0, 238276.0, 238276.0],\n", - " 'min': 238276.0,\n", - " 'max': 238276.0,\n", - " 'mean': 238276.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (15,\n", - " 7): {'time': {'q': [262458.0, 262458.0, 262458.0, 262458.0, 262458.0],\n", - " 'min': 262458.0,\n", - " 'max': 262458.0,\n", - " 'mean': 262458.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (15,\n", - " 5): {'time': {'q': [165478.0, 165478.0, 165478.0, 165478.0, 165478.0],\n", - " 'min': 165478.0,\n", - " 'max': 165478.0,\n", - " 'mean': 165478.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (15,\n", - " 4): {'time': {'q': [241505.0, 241505.0, 241505.0, 241505.0, 241505.0],\n", - " 'min': 241505.0,\n", - " 'max': 241505.0,\n", - " 'mean': 241505.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (15,\n", - " 3): {'time': {'q': [187396.0, 187396.0, 187396.0, 187396.0, 187396.0],\n", - " 'min': 187396.0,\n", - " 'max': 187396.0,\n", - " 'mean': 187396.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (15,\n", - " 2): {'time': {'q': [191604.0, 191604.0, 191604.0, 191604.0, 191604.0],\n", - " 'min': 191604.0,\n", - " 'max': 191604.0,\n", - " 'mean': 191604.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcMonotonicQRegionForElems',\n", - " 'node': Node({'name': 'CalcMonotonicQRegionForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (16,\n", - " 7): {'time': {'q': [6171.0, 6171.0, 6171.0, 6171.0, 6171.0],\n", - " 'min': 6171.0,\n", - " 'max': 6171.0,\n", - " 'mean': 6171.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (16,\n", - " 2): {'time': {'q': [6591.0, 6591.0, 6591.0, 6591.0, 6591.0],\n", - " 'min': 6591.0,\n", - " 'max': 6591.0,\n", - " 'mean': 6591.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (16,\n", - " 1): {'time': {'q': [6445.0, 6445.0, 6445.0, 6445.0, 6445.0],\n", - " 'min': 6445.0,\n", - " 'max': 6445.0,\n", - " 'mean': 6445.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (16,\n", - " 6): {'time': {'q': [42609.0, 42609.0, 42609.0, 42609.0, 42609.0],\n", - " 'min': 42609.0,\n", - " 'max': 42609.0,\n", - " 'mean': 42609.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (16,\n", - " 5): {'time': {'q': [7431.0, 7431.0, 7431.0, 7431.0, 7431.0],\n", - " 'min': 7431.0,\n", - " 'max': 7431.0,\n", - " 'mean': 7431.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (16,\n", - " 4): {'time': {'q': [6854.0, 6854.0, 6854.0, 6854.0, 6854.0],\n", - " 'min': 6854.0,\n", - " 'max': 6854.0,\n", - " 'mean': 6854.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (16,\n", - " 0): {'time': {'q': [16902.0, 16902.0, 16902.0, 16902.0, 16902.0],\n", - " 'min': 16902.0,\n", - " 'max': 16902.0,\n", - " 'mean': 16902.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (16,\n", - " 3): {'time': {'q': [6454.0, 6454.0, 6454.0, 6454.0, 6454.0],\n", - " 'min': 6454.0,\n", - " 'max': 6454.0,\n", - " 'mean': 6454.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'UpdateVolumesForElems',\n", - " 'node': Node({'name': 'UpdateVolumesForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (17,\n", - " 1): {'time': {'q': [252178.0, 252178.0, 252178.0, 252178.0, 252178.0],\n", - " 'min': 252178.0,\n", - " 'max': 252178.0,\n", - " 'mean': 252178.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (17,\n", - " 0): {'time': {'q': [206007.0, 206007.0, 206007.0, 206007.0, 206007.0],\n", - " 'min': 206007.0,\n", - " 'max': 206007.0,\n", - " 'mean': 206007.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (17,\n", - " 2): {'time': {'q': [306392.0, 306392.0, 306392.0, 306392.0, 306392.0],\n", - " 'min': 306392.0,\n", - " 'max': 306392.0,\n", - " 'mean': 306392.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (17,\n", - " 6): {'time': {'q': [280120.0, 280120.0, 280120.0, 280120.0, 280120.0],\n", - " 'min': 280120.0,\n", - " 'max': 280120.0,\n", - " 'mean': 280120.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (17,\n", - " 7): {'time': {'q': [340105.0, 340105.0, 340105.0, 340105.0, 340105.0],\n", - " 'min': 340105.0,\n", - " 'max': 340105.0,\n", - " 'mean': 340105.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (17,\n", - " 5): {'time': {'q': [204412.0, 204412.0, 204412.0, 204412.0, 204412.0],\n", - " 'min': 204412.0,\n", - " 'max': 204412.0,\n", - " 'mean': 204412.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (17,\n", - " 4): {'time': {'q': [239869.0, 239869.0, 239869.0, 239869.0, 239869.0],\n", - " 'min': 239869.0,\n", - " 'max': 239869.0,\n", - " 'mean': 239869.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (17,\n", - " 3): {'time': {'q': [246837.0, 246837.0, 246837.0, 246837.0, 246837.0],\n", - " 'min': 246837.0,\n", - " 'max': 246837.0,\n", - " 'mean': 246837.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'LagrangeNodal',\n", - " 'node': Node({'name': 'LagrangeNodal', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (18,\n", - " 4): {'time': {'q': [168395.0, 168395.0, 168395.0, 168395.0, 168395.0],\n", - " 'min': 168395.0,\n", - " 'max': 168395.0,\n", - " 'mean': 168395.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (18,\n", - " 0): {'time': {'q': [411190.0, 411190.0, 411190.0, 411190.0, 411190.0],\n", - " 'min': 411190.0,\n", - " 'max': 411190.0,\n", - " 'mean': 411190.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (18,\n", - " 6): {'time': {'q': [537984.0, 537984.0, 537984.0, 537984.0, 537984.0],\n", - " 'min': 537984.0,\n", - " 'max': 537984.0,\n", - " 'mean': 537984.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (18,\n", - " 7): {'time': {'q': [190604.0, 190604.0, 190604.0, 190604.0, 190604.0],\n", - " 'min': 190604.0,\n", - " 'max': 190604.0,\n", - " 'mean': 190604.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (18,\n", - " 1): {'time': {'q': [140031.0, 140031.0, 140031.0, 140031.0, 140031.0],\n", - " 'min': 140031.0,\n", - " 'max': 140031.0,\n", - " 'mean': 140031.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (18,\n", - " 2): {'time': {'q': [126085.0, 126085.0, 126085.0, 126085.0, 126085.0],\n", - " 'min': 126085.0,\n", - " 'max': 126085.0,\n", - " 'mean': 126085.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (18,\n", - " 3): {'time': {'q': [379447.0, 379447.0, 379447.0, 379447.0, 379447.0],\n", - " 'min': 379447.0,\n", - " 'max': 379447.0,\n", - " 'mean': 379447.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (18,\n", - " 5): {'time': {'q': [408344.0, 408344.0, 408344.0, 408344.0, 408344.0],\n", - " 'min': 408344.0,\n", - " 'max': 408344.0,\n", - " 'mean': 408344.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcForceForNodes',\n", - " 'node': Node({'name': 'CalcForceForNodes', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (19,\n", - " 1): {'time': {'q': [8339.0, 8339.0, 8339.0, 8339.0, 8339.0],\n", - " 'min': 8339.0,\n", - " 'max': 8339.0,\n", - " 'mean': 8339.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (19,\n", - " 0): {'time': {'q': [8780.0, 8780.0, 8780.0, 8780.0, 8780.0],\n", - " 'min': 8780.0,\n", - " 'max': 8780.0,\n", - " 'mean': 8780.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (19,\n", - " 3): {'time': {'q': [9174.0, 9174.0, 9174.0, 9174.0, 9174.0],\n", - " 'min': 9174.0,\n", - " 'max': 9174.0,\n", - " 'mean': 9174.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (19,\n", - " 2): {'time': {'q': [13261.0, 13261.0, 13261.0, 13261.0, 13261.0],\n", - " 'min': 13261.0,\n", - " 'max': 13261.0,\n", - " 'mean': 13261.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (19,\n", - " 4): {'time': {'q': [18019.0, 18019.0, 18019.0, 18019.0, 18019.0],\n", - " 'min': 18019.0,\n", - " 'max': 18019.0,\n", - " 'mean': 18019.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (19,\n", - " 5): {'time': {'q': [8653.0, 8653.0, 8653.0, 8653.0, 8653.0],\n", - " 'min': 8653.0,\n", - " 'max': 8653.0,\n", - " 'mean': 8653.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (19,\n", - " 6): {'time': {'q': [8549.0, 8549.0, 8549.0, 8549.0, 8549.0],\n", - " 'min': 8549.0,\n", - " 'max': 8549.0,\n", - " 'mean': 8549.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset8'}},\n", - " (19,\n", - " 7): {'time': {'q': [12193.0, 12193.0, 12193.0, 12193.0, 12193.0],\n", - " 'min': 12193.0,\n", - " 'max': 12193.0,\n", - " 'mean': 12193.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcVolumeForceForElems',\n", - " 'node': Node({'name': 'CalcVolumeForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (20,\n", - " 6): {'time': {'q': [494580.0, 494580.0, 494580.0, 494580.0, 494580.0],\n", - " 'min': 494580.0,\n", - " 'max': 494580.0,\n", - " 'mean': 494580.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset6'}},\n", - " (20,\n", - " 0): {'time': {'q': [597414.0, 597414.0, 597414.0, 597414.0, 597414.0],\n", - " 'min': 597414.0,\n", - " 'max': 597414.0,\n", - " 'mean': 597414.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset1'}},\n", - " (20,\n", - " 1): {'time': {'q': [570912.0, 570912.0, 570912.0, 570912.0, 570912.0],\n", - " 'min': 570912.0,\n", - " 'max': 570912.0,\n", - " 'mean': 570912.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (20,\n", - " 2): {'time': {'q': [578433.0, 578433.0, 578433.0, 578433.0, 578433.0],\n", - " 'min': 578433.0,\n", - " 'max': 578433.0,\n", - " 'mean': 578433.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (20,\n", - " 3): {'time': {'q': [586524.0, 586524.0, 586524.0, 586524.0, 586524.0],\n", - " 'min': 586524.0,\n", - " 'max': 586524.0,\n", - " 'mean': 586524.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (20,\n", - " 4): {'time': {'q': [583632.0, 583632.0, 583632.0, 583632.0, 583632.0],\n", - " 'min': 583632.0,\n", - " 'max': 583632.0,\n", - " 'mean': 583632.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (20,\n", - " 5): {'time': {'q': [599077.0, 599077.0, 599077.0, 599077.0, 599077.0],\n", - " 'min': 599077.0,\n", - " 'max': 599077.0,\n", - " 'mean': 599077.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (20,\n", - " 7): {'time': {'q': [583900.0, 583900.0, 583900.0, 583900.0, 583900.0],\n", - " 'min': 583900.0,\n", - " 'max': 583900.0,\n", - " 'mean': 583900.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcHourglassControlForElems',\n", - " 'node': Node({'name': 'CalcHourglassControlForElems', 'type': 'region'}),\n", - " 'dataset': 'dset4'}},\n", - " (21,\n", - " 4): {'time': {'q': [1144720.0, 1144720.0, 1144720.0, 1144720.0, 1144720.0],\n", - " 'min': 1144720.0,\n", - " 'max': 1144720.0,\n", - " 'mean': 1144720.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 5): {'time': {'q': [1276744.0, 1276744.0, 1276744.0, 1276744.0, 1276744.0],\n", - " 'min': 1276744.0,\n", - " 'max': 1276744.0,\n", - " 'mean': 1276744.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 7): {'time': {'q': [1088315.0, 1088315.0, 1088315.0, 1088315.0, 1088315.0],\n", - " 'min': 1088315.0,\n", - " 'max': 1088315.0,\n", - " 'mean': 1088315.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset9'}},\n", - " (21,\n", - " 2): {'time': {'q': [1166060.0, 1166060.0, 1166060.0, 1166060.0, 1166060.0],\n", - " 'min': 1166060.0,\n", - " 'max': 1166060.0,\n", - " 'mean': 1166060.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 1): {'time': {'q': [1187834.0, 1187834.0, 1187834.0, 1187834.0, 1187834.0],\n", - " 'min': 1187834.0,\n", - " 'max': 1187834.0,\n", - " 'mean': 1187834.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 3): {'time': {'q': [1222919.0, 1222919.0, 1222919.0, 1222919.0, 1222919.0],\n", - " 'min': 1222919.0,\n", - " 'max': 1222919.0,\n", - " 'mean': 1222919.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 0): {'time': {'q': [1223331.0, 1223331.0, 1223331.0, 1223331.0, 1223331.0],\n", - " 'min': 1223331.0,\n", - " 'max': 1223331.0,\n", - " 'mean': 1223331.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (21,\n", - " 6): {'time': {'q': [1268960.0, 1268960.0, 1268960.0, 1268960.0, 1268960.0],\n", - " 'min': 1268960.0,\n", - " 'max': 1268960.0,\n", - " 'mean': 1268960.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'CalcFBHourglassForceForElems',\n", - " 'node': Node({'name': 'CalcFBHourglassForceForElems', 'type': 'region'}),\n", - " 'dataset': 'dset2'}},\n", - " (22,\n", - " 3): {'time': {'q': [672966.0, 672966.0, 672966.0, 672966.0, 672966.0],\n", - " 'min': 672966.0,\n", - " 'max': 672966.0,\n", - " 'mean': 672966.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (22,\n", - " 0): {'time': {'q': [448597.0, 448597.0, 448597.0, 448597.0, 448597.0],\n", - " 'min': 448597.0,\n", - " 'max': 448597.0,\n", - " 'mean': 448597.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (22,\n", - " 1): {'time': {'q': [832046.0, 832046.0, 832046.0, 832046.0, 832046.0],\n", - " 'min': 832046.0,\n", - " 'max': 832046.0,\n", - " 'mean': 832046.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (22,\n", - " 2): {'time': {'q': [867711.0, 867711.0, 867711.0, 867711.0, 867711.0],\n", - " 'min': 867711.0,\n", - " 'max': 867711.0,\n", - " 'mean': 867711.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (22,\n", - " 5): {'time': {'q': [579856.0, 579856.0, 579856.0, 579856.0, 579856.0],\n", - " 'min': 579856.0,\n", - " 'max': 579856.0,\n", - " 'mean': 579856.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (22,\n", - " 7): {'time': {'q': [987804.0, 987804.0, 987804.0, 987804.0, 987804.0],\n", - " 'min': 987804.0,\n", - " 'max': 987804.0,\n", - " 'mean': 987804.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (22,\n", - " 4): {'time': {'q': [842913.0, 842913.0, 842913.0, 842913.0, 842913.0],\n", - " 'min': 842913.0,\n", - " 'max': 842913.0,\n", - " 'mean': 842913.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset7'}},\n", - " (22,\n", - " 6): {'time': {'q': [570142.0, 570142.0, 570142.0, 570142.0, 570142.0],\n", - " 'min': 570142.0,\n", - " 'max': 570142.0,\n", - " 'mean': 570142.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'IntegrateStressForElems',\n", - " 'node': Node({'name': 'IntegrateStressForElems', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (23,\n", - " 5): {'time': {'q': [342333.0, 342333.0, 342333.0, 342333.0, 342333.0],\n", - " 'min': 342333.0,\n", - " 'max': 342333.0,\n", - " 'mean': 342333.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 4): {'time': {'q': [215603.0, 215603.0, 215603.0, 215603.0, 215603.0],\n", - " 'min': 215603.0,\n", - " 'max': 215603.0,\n", - " 'mean': 215603.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 3): {'time': {'q': [323519.0, 323519.0, 323519.0, 323519.0, 323519.0],\n", - " 'min': 323519.0,\n", - " 'max': 323519.0,\n", - " 'mean': 323519.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 2): {'time': {'q': [171635.0, 171635.0, 171635.0, 171635.0, 171635.0],\n", - " 'min': 171635.0,\n", - " 'max': 171635.0,\n", - " 'mean': 171635.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 1): {'time': {'q': [212402.0, 212402.0, 212402.0, 212402.0, 212402.0],\n", - " 'min': 212402.0,\n", - " 'max': 212402.0,\n", - " 'mean': 212402.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 0): {'time': {'q': [418469.0, 418469.0, 418469.0, 418469.0, 418469.0],\n", - " 'min': 418469.0,\n", - " 'max': 418469.0,\n", - " 'mean': 418469.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset0'}},\n", - " (23,\n", - " 7): {'time': {'q': [540.0, 540.0, 540.0, 540.0, 540.0],\n", - " 'min': 540.0,\n", - " 'max': 540.0,\n", - " 'mean': 540.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset5'}},\n", - " (23,\n", - " 6): {'time': {'q': [423809.0, 423809.0, 423809.0, 423809.0, 423809.0],\n", - " 'min': 423809.0,\n", - " 'max': 423809.0,\n", - " 'mean': 423809.0,\n", - " 'var': 0.0,\n", - " 'imb': 0.0,\n", - " 'kurt': -3.0,\n", - " 'skew': 0.0,\n", - " 'name': 'TimeIncrement',\n", - " 'node': Node({'name': 'TimeIncrement', 'type': 'region'}),\n", - " 'dataset': 'dset1'}}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "bp_json" ] diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index 7ec24c66..953d779a 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: MIT import pandas as pd -import pandas.api.types as ptypes import hatchet as ht from hatchet.util.boxplot import BoxPlot @@ -26,7 +25,6 @@ def test_gf_format(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) - gf_indexes = gf.dataframe.index.names bp = BoxPlot(multi_index_gf=gf) metrics = gf.inc_metrics + gf.exc_metrics @@ -51,10 +49,18 @@ def test_gf_format(calc_pi_hpct_db): "kurt", "skew", ] - assert all(bp.gf[metric].dataframe.columns.tolist().sort() == columns.sort() for metric in metrics) + assert all( + bp.gf[metric].dataframe.columns.tolist().sort() == columns.sort() + for metric in metrics + ) + + assert all( + len(list(bp.gf[metric].dataframe.index.names)) == 1 for metric in metrics + ) + assert all( + list(bp.gf[metric].dataframe.index.names) == ["node"] for metric in metrics + ) - assert all(len(list(bp.gf[metric].dataframe.index.names)) == 1 for metric in metrics) - assert all(list(bp.gf[metric].dataframe.index.names) == ["node"] for metric in metrics) # def test_output_dtypes(calc_pi_hpct_db): # gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 1272c1e8..a52c3141 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -13,7 +13,7 @@ class BoxPlot: def __init__( self, multi_index_gf, - drop_index="", + drop_index_levels=[], metrics=[], ): """ @@ -22,82 +22,93 @@ def __init__( Arguments: multi_index_gf: (ht.GraphFrame) Target GraphFrame. - drop_index: (string) Categorical column to aggregate the boxplot - computation. (Optional, as long as there is only 2 indexes in the - ht.GraphFrame) - metrics: (list) List of metrics to compute. + drop_index_levels (Optional): (list) List of columns to aggregate the boxplot + computation. + metrics (Optional): (list) List of metrics to compute. Return: None """ assert isinstance(multi_index_gf, ht.GraphFrame) - assert isinstance(drop_index, str) + assert isinstance(drop_index_levels, list) assert isinstance(metrics, list) - df_index = list(multi_index_gf.dataframe.index.names) + # Reset the indexes in the dataframe. + self.multi_index_gf = multi_index_gf.copy() + self.multi_index_gf.dataframe = self.multi_index_gf.dataframe.reset_index() + self.multi_index_gf.dataframe["_hatchet_nid"] = self.multi_index_gf.dataframe[ + "node" + ].apply(lambda _: _._hatchet_nid) - # Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`. - if len(df_index) > 2 and not drop_index: - raise Exception( - "multi_index_gf contains len(self.df_index) indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity." - ) + self.drop_indexes, self.output_indexes = BoxPlot.validate_drop_index_level( + multi_index_gf, drop_index_levels + ) + self.metrics = BoxPlot.validate_metrics(multi_index_gf, metrics) + + self.agg_columns = ["_hatchet_nid"] + self.output_indexes + self.output_columns = list( + set(self.multi_index_gf.dataframe.columns) + .difference(set(self.agg_columns)) + .difference(set(self.metrics)) + ) + + # Compute the boxplot dictionary keyed by "index" and valued as a dataframe. + self.boxplot_df_dict = BoxPlot.compute( + multi_index_df=self.multi_index_gf.dataframe, + groupby=self.agg_columns, + cols=self.output_columns, + metrics=self.metrics, + ) + + # Convert it to a GraphFrame. + self.gf = self.to_gf() + + @staticmethod + def validate_drop_index_level( + multi_index_gf: ht.GraphFrame, drop_index_levels: list + ): + df_index_levels = list(multi_index_gf.dataframe.index.names) # Validate primary index is 'node'. - if "node" not in df_index: + if "node" not in df_index_levels: raise Exception( - "BoxPlot expects 'node' to be a primary index of 'multi_index_gf'." + "ht.util.BoxPlot expects the primary index of `multi_index_gf` to be `ht.Graph.Node`." ) # Validate drop_index in the dataframe, if provided. - if drop_index and drop_index not in df_index: - raise Exception( - f"'drop_index: {drop_index}' is not a valid index of 'multi_index_gf'." - ) + if len(drop_index_levels) > 0: + for _index in drop_index_levels: + if _index not in df_index_levels: + raise Exception( + f"'drop_index_level: {_index}' is not a valid index of 'multi_index_gf'." + ) + elif len(drop_index_levels) == 0: + # Validate if only 2 indexes are provided. Else, warn the user to pass `drop_column`. + if len(df_index_levels) > 2: + raise Exception( + f"multi_index_gf contains {len(df_index_levels)} indexes = {df_index_levels}. ht.util.BoxPlot is limited to processing GraphFrames with 2 indexes. Please specify the `drop_index` by which BoxPlot API will compute the distribution to avoid ambiguity." + ) + elif len(df_index_levels) == 2: + drop_index_levels = [multi_index_gf.dataframe.index.names[1]] + + # Drop the 'node' and `drop_index_levels` from the + # ht.GraphFrame.DataFrame's indexes. + df_index_levels.remove("node") + for index in drop_index_levels: + df_index_levels.remove(index) + + return drop_index_levels, df_index_levels + @staticmethod + def validate_metrics(multi_index_gf: ht.GraphFrame, metrics: list): # Validate metrics are columns in the dataframe, if provided. if len(metrics) > 0: for metric in metrics: if metric not in multi_index_gf.dataframe.columns: raise Exception(f"{metric} not found in the gf.dataframe.") - # Set drop_index as the secondary index. - if len(df_index) == 2: - self.drop_index = multi_index_gf.dataframe.index.names[1] - else: - self.drop_index = drop_index - - # Reset the indexes in the dataframe. - self.multi_index_gf = multi_index_gf.copy() - self.multi_index_gf.dataframe = self.multi_index_gf.dataframe.reset_index() - - # Set the metrics for computation. if len(metrics) == 0: - self.metrics = ( - self.multi_index_gf.inc_metrics + self.multi_index_gf.exc_metrics - ) - else: - self.metrics = metrics - - # Drop the 'node' and `drop_index` from the ht.GraphFrame.DataFrame's indexes. - df_index.remove("node") - df_index.remove(self.drop_index) - - self.df_index = df_index - # BoxPlot API will aggregate considering the `hatchet_nid` and the - # `drop_index`. - self.group_by = ["nid"] + self.df_index - - # Hatchet columns that are required by BoxPlot API for computation. - self.ht_columns = ["name", "node"] - - # Compute the boxplot dictionary keyed by "index" and valued as a dataframe. - self.boxplot_df_dict = self.compute( - multi_index_df=self.multi_index_gf.dataframe, - groupby=self.group_by, - cols=self.metrics + self.ht_columns + [self.drop_index], - ) - - # Convert it to a GraphFrame. - self.gf = self.to_gf() + return multi_index_gf.inc_metrics + multi_index_gf.exc_metrics + return metrics @staticmethod def df_groupby(df, groupby, cols): @@ -153,7 +164,8 @@ def outliers(data, scale=1.5, side="both"): if side == "both": return np.logical_or(upper_outlier, lower_outlier) - def compute(self, multi_index_df, groupby, cols): + @staticmethod + def compute(multi_index_df, groupby, metrics, cols): """ Compute boxplot quartiles and statistics. @@ -179,13 +191,13 @@ def compute(self, multi_index_df, groupby, cols): group_df_dict = BoxPlot.df_groupby( df=multi_index_df, groupby=groupby, - cols=cols, + cols=cols + metrics, ) boxplot_dict_df = {_: {} for _ in group_df_dict.keys()} for callsite, callsite_df in group_df_dict.items(): - ret = {_: {} for _ in self.metrics} - for tk, tv in zip(self.metrics, self.metrics): + ret = {_: {} for _ in metrics} + for tk, tv in zip(metrics, metrics): q = np.percentile(callsite_df[tv], [0.0, 25.0, 50.0, 75.0, 100.0]) mask = BoxPlot.outliers(callsite_df[tv]) mask = np.where(mask)[0] @@ -212,8 +224,8 @@ def compute(self, multi_index_df, groupby, cols): "ks": (_kurt, _skew), } - for ht_column in self.ht_columns + [self.drop_index]: - ret[tk][ht_column] = callsite_df[ht_column].iloc[0] + for _column in cols: + ret[tk][_column] = callsite_df[_column].iloc[0] boxplot_dict_df[callsite] = ret @@ -278,8 +290,8 @@ def _unpack_callsite(self, callsite): "skew": box["ks"][1], } - for ht_column in self.ht_columns + [self.drop_index]: - ret[metric][ht_column] = box[ht_column] + for _column in self.output_columns: + ret[metric][_column] = box[_column] return ret @@ -315,11 +327,11 @@ def _to_gf_by_metric(self, gf, metric): } tmp_df = pd.DataFrame.from_dict(data=_dict).T tmp_df = tmp_df.astype(_dtype) - tmp_df.index.names = self.group_by + tmp_df.index.names = self.agg_columns tmp_df.reset_index(inplace=True) - tmp_df = tmp_df.drop(columns=[self.drop_index]) - tmp_df.set_index(["node"] + self.df_index, inplace=True) + tmp_df = tmp_df.drop(columns=self.drop_indexes + ["_hatchet_nid"]) + tmp_df.set_index(["node"] + self.output_indexes, inplace=True) # TODO: Would we need to squash the graph. (Check in the to_gf() method.) # Call into the gf.groupby_aggregate() (in PR) before returning the gf. From 69b005a26997f2393216e970814165da95d6d173 Mon Sep 17 00:00:00 2001 From: Connor Date: Thu, 9 Dec 2021 15:01:34 -0700 Subject: [PATCH 20/29] Added roundtrip files to vis/external subdirectory; removed empty example files which can be re-added by with content. Modified cct to be built with webpack and loaded using new roundtrip. --- .gitignore | 3 + hatchet/vis/__init__.py | 2 + .../{roundtrip/roundtrip.py => __init__.py} | 0 hatchet/vis/external/roundtrip/LICENSE | 21 + hatchet/vis/external/roundtrip/NOTICE | 2 + hatchet/vis/external/roundtrip/README.md | 67 + .../roundtrip/__init__.py} | 0 .../vis/external/roundtrip/package-lock.json | 7773 +++++++ hatchet/vis/external/roundtrip/package.json | 36 + hatchet/vis/external/roundtrip/pyproject.toml | 28 + .../vis/external/roundtrip/requirements.txt | 2 + .../roundtrip/roundtrip/__init__.py} | 0 .../external/roundtrip/roundtrip/manager.py | 505 + .../external/roundtrip/roundtrip/roundtrip.js | 320 + .../external/roundtrip/roundtrip/version.py | 2 + hatchet/vis/external/roundtrip/setup.py | 37 + hatchet/vis/loader.py | 38 + hatchet/vis/notebooks/cct.ipynb | 18073 ++++++++++++++++ hatchet/vis/package.json | 17 +- hatchet/vis/scripts/cct.js | 1425 ++ hatchet/vis/styles/boxplot.css | 0 hatchet/vis/styles/cct.css | 0 hatchet/vis/templates/boxplot.html | 0 hatchet/vis/webpack.config.js | 41 + 24 files changed, 28391 insertions(+), 1 deletion(-) rename hatchet/vis/external/{roundtrip/roundtrip.py => __init__.py} (100%) create mode 100644 hatchet/vis/external/roundtrip/LICENSE create mode 100644 hatchet/vis/external/roundtrip/NOTICE create mode 100644 hatchet/vis/external/roundtrip/README.md rename hatchet/vis/{notebooks/boxplot.ipynb => external/roundtrip/__init__.py} (100%) create mode 100644 hatchet/vis/external/roundtrip/package-lock.json create mode 100644 hatchet/vis/external/roundtrip/package.json create mode 100644 hatchet/vis/external/roundtrip/pyproject.toml create mode 100644 hatchet/vis/external/roundtrip/requirements.txt rename hatchet/vis/{scripts/boxplot.js => external/roundtrip/roundtrip/__init__.py} (100%) create mode 100644 hatchet/vis/external/roundtrip/roundtrip/manager.py create mode 100644 hatchet/vis/external/roundtrip/roundtrip/roundtrip.js create mode 100644 hatchet/vis/external/roundtrip/roundtrip/version.py create mode 100644 hatchet/vis/external/roundtrip/setup.py create mode 100644 hatchet/vis/scripts/cct.js delete mode 100644 hatchet/vis/styles/boxplot.css delete mode 100644 hatchet/vis/styles/cct.css delete mode 100644 hatchet/vis/templates/boxplot.html diff --git a/.gitignore b/.gitignore index b622a897..9db63ebe 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ build docs/_build hatchet/cython_modules/libs/graphframe_modules.*.so hatchet/cython_modules/libs/reader_modules.*.so +hatchet/vis/*node_modules* +hatchet/vis/static/*_bundle* +*package-lock.json diff --git a/hatchet/vis/__init__.py b/hatchet/vis/__init__.py index e69de29b..16ae2804 100644 --- a/hatchet/vis/__init__.py +++ b/hatchet/vis/__init__.py @@ -0,0 +1,2 @@ +from .external.roundtrip.roundtrip.manager import Roundtrip + diff --git a/hatchet/vis/external/roundtrip/roundtrip.py b/hatchet/vis/external/__init__.py similarity index 100% rename from hatchet/vis/external/roundtrip/roundtrip.py rename to hatchet/vis/external/__init__.py diff --git a/hatchet/vis/external/roundtrip/LICENSE b/hatchet/vis/external/roundtrip/LICENSE new file mode 100644 index 00000000..5e5e2581 --- /dev/null +++ b/hatchet/vis/external/roundtrip/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Humans, Data, and Computers Lab + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hatchet/vis/external/roundtrip/NOTICE b/hatchet/vis/external/roundtrip/NOTICE new file mode 100644 index 00000000..18c96103 --- /dev/null +++ b/hatchet/vis/external/roundtrip/NOTICE @@ -0,0 +1,2 @@ +This work was supported by the United States Department of Defense through DTIC Contract FA8075-14-D-0002-0007, +the National Science Foundation under NSF III-1656958, and the Department of Energy under DE-SC0022044. diff --git a/hatchet/vis/external/roundtrip/README.md b/hatchet/vis/external/roundtrip/README.md new file mode 100644 index 00000000..402edef6 --- /dev/null +++ b/hatchet/vis/external/roundtrip/README.md @@ -0,0 +1,67 @@ +## Roundtrip + +A python/javascript library for loading and managing Javascript code and visualization in Jupyter notebook cells. + +This library supports: +- Loading HTML, CSS, and JavaScript Files +- Loading Webpack-Generated Files +- Passing Jupyter-scoped data into Javascript code +- Returnng Javascript generated data back to the calling Jupyter Notebook +- Binding data between a Jupyter notebook and embedded Javascript visualizations +- Automatic updating of bound visualizations enabling: + - fluid gui-scripting based workflows + - linked views across cells + +### Important Links +- [Roundtrip Wiki](https://github.com/hdc-arizona/roundtrip/wiki) + + +### Try It Out +1) Install [Jupyter notebook](https://jupyter.org/install) & [Node.js](https://nodejs.org/en/download/) +2) Clone this repository: +```bash +git clone https://github.com/hdc-arizona/roundtrip.git +``` +3) Run the automatic installer: +```bash +cd roundtrip +pip3 install roundtrip-lib +chmod +x buuild_examples.sh +./build_examples.sh +``` +4) Start a jupyter server from the `roundtrip` base directory: +```bash +jupyter notebook +``` +5) From your web browser navigate to the `docs/examples/` folder and open the `Manual Workflow Example` notebook. + +On load, you may need to clean the output by running `Restart & Clear Output` +from the `Kernel` menu in Jupyter. + +Running the cells in the first example will demonstrate: + +1. The loading of a real pandas dataset into a javascript visualization +2. Interaction with the visualization +3. Returning data back from the visualization to the Jupyter notebook + +Once you understand the functionality in this notebook please open the `Advanced Workflow Example` + +Running the cells in this example will demonstrate: +1. The `?` operator and how it links python data with visualization data +2. How the `?` can provide linked-view functionality between cells +3. How the linking of data and automatic updating of cells can be easily turned off by removing the `?` +4. How cells update when data is update inside the jupyter notebook as well as in the visualizations + + +### License + +Roundtrip is distributed under the terms of the MIT license. + +All contributions must be made under the MIT license. Copyrights in the +Roundtrip project are retained by contributors. No copyright assignment is +required to contribute to Roundtrip. + +See [LICENSE](https://github.com/hdc-arizona/roundtrip/blob/master/LICENSE) and +[NOTICE](https://github.com/hdc-arizona/roundtrip/blob/master/NOTICE) for details. + +SPDX-License-Identifier: MIT diff --git a/hatchet/vis/notebooks/boxplot.ipynb b/hatchet/vis/external/roundtrip/__init__.py similarity index 100% rename from hatchet/vis/notebooks/boxplot.ipynb rename to hatchet/vis/external/roundtrip/__init__.py diff --git a/hatchet/vis/external/roundtrip/package-lock.json b/hatchet/vis/external/roundtrip/package-lock.json new file mode 100644 index 00000000..61e7279a --- /dev/null +++ b/hatchet/vis/external/roundtrip/package-lock.json @@ -0,0 +1,7773 @@ +{ + "name": "roundtrip", + "version": "0.2.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "0.2.1", + "license": "ISC", + "dependencies": { + "css-loader": "^6.5.0", + "d3": "^7.0.4", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "style-loader": "^3.3.1" + }, + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "babel-loader": "^8.2.3", + "html-webpack-plugin": "^5.3.2", + "webpack": "^5.58.2", + "webpack-cli": "^4.9.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", + "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", + "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", + "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", + "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", + "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", + "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-react-jsx-development": "^7.16.0", + "@babel/plugin-transform-react-pure-annotations": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@types/eslint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", + "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "node_modules/@types/node": { + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dependencies": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001285", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", + "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-css": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", + "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", + "dev": true, + "dependencies": { + "browserslist": "^4.18.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/d3": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.0.tgz", + "integrity": "sha512-0bh5lPzD6R/I/SjkcgyQlMaIsrZDgh40yMkdJaiZ/58YEbh4zz5EvtjaudzmI6ruwQNvxGm00trYUyPa992NSQ==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", + "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", + "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", + "integrity": "sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", + "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz", + "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", + "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", + "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "acorn": "^8.5.0" + }, + "peerDependenciesMeta": { + "acorn": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "dependencies": { + "jest-worker": "^27.0.6", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.65.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", + "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.2" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", + "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", + "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", + "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", + "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.0" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", + "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", + "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-react-jsx-development": "^7.16.0", + "@babel/plugin-transform-react-pure-annotations": "^7.16.0" + } + }, + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, + "@types/eslint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", + "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "@types/node": { + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "caniuse-lite": { + "version": "1.0.30001285", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", + "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "clean-css": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js-compat": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", + "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", + "dev": true, + "requires": { + "browserslist": "^4.18.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "d3": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.0.tgz", + "integrity": "sha512-0bh5lPzD6R/I/SjkcgyQlMaIsrZDgh40yMkdJaiZ/58YEbh4zz5EvtjaudzmI6ruwQNvxGm00trYUyPa992NSQ==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", + "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", + "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" + }, + "d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", + "integrity": "sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", + "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "electron-to-chromium": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz", + "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-worker": { + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", + "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", + "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "requires": {} + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "requires": { + "jest-worker": "^27.0.6", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.65.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", + "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/hatchet/vis/external/roundtrip/package.json b/hatchet/vis/external/roundtrip/package.json new file mode 100644 index 00000000..df2302fc --- /dev/null +++ b/hatchet/vis/external/roundtrip/package.json @@ -0,0 +1,36 @@ +{ + "name": "roundtrip", + "version": "0.2.1", + "description": "An interface for loading Javascript (notably D3 visualizations) into Jupyter Notebooks. Supports transferring data from Python Jupyter cells to Javascript—and back.", + "private": true, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hdc-arizona/roundtrip.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/hdc-arizona/roundtrip/issues" + }, + "homepage": "https://github.com/hdc-arizona/roundtrip#readme", + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "babel-loader": "^8.2.3", + "html-webpack-plugin": "^5.3.2", + "webpack": "^5.58.2", + "webpack-cli": "^4.9.0" + }, + "dependencies": { + "css-loader": "^6.5.0", + "d3": "^7.0.4", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "style-loader": "^3.3.1" + } +} diff --git a/hatchet/vis/external/roundtrip/pyproject.toml b/hatchet/vis/external/roundtrip/pyproject.toml new file mode 100644 index 00000000..802ddf2f --- /dev/null +++ b/hatchet/vis/external/roundtrip/pyproject.toml @@ -0,0 +1,28 @@ +[tool.poetry] +name = "roundtrip" +version = "0.2" +description = "A Python library for the loading of JS visualizations into Jupyter notebooks." +authors = [ + "Connor Scully-Allison " +] +license = "MIT" + +[tool.black] +line-length = 88 +target-version = ['py27', 'py35', 'py36', 'py37', 'py38'] +include = '\.pyi?$' +exclude = ''' +/( + \.eggs + | \.git + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist +)/ +''' \ No newline at end of file diff --git a/hatchet/vis/external/roundtrip/requirements.txt b/hatchet/vis/external/roundtrip/requirements.txt new file mode 100644 index 00000000..ff1ccabb --- /dev/null +++ b/hatchet/vis/external/roundtrip/requirements.txt @@ -0,0 +1,2 @@ +beautifulsoup4 +pycountry_convert diff --git a/hatchet/vis/scripts/boxplot.js b/hatchet/vis/external/roundtrip/roundtrip/__init__.py similarity index 100% rename from hatchet/vis/scripts/boxplot.js rename to hatchet/vis/external/roundtrip/roundtrip/__init__.py diff --git a/hatchet/vis/external/roundtrip/roundtrip/manager.py b/hatchet/vis/external/roundtrip/roundtrip/manager.py new file mode 100644 index 00000000..630b7a8e --- /dev/null +++ b/hatchet/vis/external/roundtrip/roundtrip/manager.py @@ -0,0 +1,505 @@ +from IPython.display import Javascript, HTML, display +from IPython import get_ipython +from bs4 import BeautifulSoup + +import io +import tokenize +import json +import inspect +import pathlib +import os + + + +def _default_converter(data): + """ + The default converter from an active python datatype to + a string encoding for transfer to JavaScript. + + :param data: The python varaible/object we are encoding. + :returns: A string representation of the variable/object which was passed. + + TODO: Raise error if unconvertable. + """ + + if data is None: + return "{}" + elif type(data) in [type(""), type(0), type(0.0)]: + return str(data) + elif type(data) in [type({}), type([])]: + return json.dumps(data) + elif "DataFrame" in str(type(data)) or "Series" in str(type(data)): + return data.to_json() + return data + + +def _default_from_converter(data): + """ + The default converter from a string representation of JavaScript data. + Does not do any conversion right now but is required for the javascript code. + + :param data: The string representation of the JavaScript object/data we are decoding. + :returns: The string representation of the JavaScript object/data passed in. + + """ + return data + + +class RoundTrip: + """ + Core Roundtrip class. + + Instantiated as a singleton object "Roundtrip", inside of this file. + + Calls all necessary ipython functions required to load javascript and + web files. Additionally, it keeps track of python-code specific watched cells + in the jupyter notebook. + + Most implementation details of automatic running and data binding are deferred + to the roundtrip object in roundtrip.js. + """ + + def __init__(self, ipy_shell=get_ipython()): + """ + Initialize our singelton roundtrip instance. + + :param ipy_shell: The current Jupyter shell. + + TODO: Throw an error if attempting to run outside of a Jupyter notebook. + """ + self.shell = ipy_shell + self.tags = { + "script": "", + "style": "", + } + self.line = "{tags}\n" + self.bridges = {} + self.last_id = None + self.watched = {} + self.scrid = 0 + self.relative_html_caches = {} + + js_directory = pathlib.Path(__file__).parent.resolve() + + # Load the javascript roundtrip object upon creation of the python object + with open(js_directory.joinpath("roundtrip.js"), "r") as f: + script = f.read() + + display(Javascript(script)) + + script_map = {"csv": "text/csv", "json": "text/json"} + + def _get_file_type(self, file): + """ + Get the file extenstion from the filename by retireving the string after the last '.' + + :param file: A string of the format . + """ + return file.split(".")[-1] + + def _file_formatter(self, file): + ft = self._get_file_type(file) + if ft in self.script_map.keys(): + tag = self.tags["script"].format(src=file, type=self.script_map[ft]) + return self.line.format(tags=tag) + if ft == "css": + tag = self.tags["style"].format(src=file) + return self.line.format(tags=tag) + elif ft == "html": + return open(file).read() + + def load_webpack(self, file, cache=True): + """ + The primary interface for loading visualizations. + + :param file: A html file containg refrences to all the required javascript required for a visualization to run. + This html file should be constructed using the HTMLWebpackPlugin with a "public path" defined in the webpack.config.js, + to simplify the difficulty of routing to find/load local files relative to the location of the visualization extension code. + See the example_webpack.config.js provided in the roundtrip directory. + """ + output_html = "" + + #use generic javascript loading for these now + if (cache is False or file not in self.relative_html_caches): + output_html += self._file_formatter(file) + html = BeautifulSoup(output_html, 'html.parser') + scripts = [] + for tag in html.select('script'): + # TODO: Add option for server based loading with this + # So JS can be dynamically loaded + # tag['src'] = os.path.relpath(tag['src'], self.shell.user_ns['_dh'][0]) + t = tag.extract() + with open(t['src']) as f: + src = f.read() + scrpt = html.new_tag('script') + scrpt.string = src + html.select('head')[0].append(scrpt) + + output_html = str(html) + self.relative_html_caches[file] = {'html': output_html} + else: + output_html = self.relative_html_caches[file]['html'] + + + # This line is needed to expose the current `element` to the webpack bundled scripts as though + # the scripts were run using display(Javascript()). + scope_var = """ + """.format( + id=self.scrid + ) + output_html = scope_var + output_html + + bdg = Bridge(output_html, ipy_shell=self.shell) + + self.scrid += 1 + + self.bridges[bdg.id] = bdg + self.last_id = bdg.id + + return id + + def load_web_files(self, files): + """ + The secondary interface for loading visualizations, included for simple visualizations and + legacy support. + + :param file: A list of filepaths to be loaded into the visualization. These files load + in-order. So be sure to manage dependencies between scripts correctly by specifying + dependant scripts after their dependencies. + + """ + output_html = "" + + # this initial string is where variable bindings go + scripts = [""] + + scope_tag = """ +
+
+ """.format( + id=self.scrid + ) + + locator_script = 'var element = document.getElementById("locator-{id}").parentNode;'.format(id=self.scrid) + + output_html += scope_tag + scripts.append(locator_script) + + # load files based on their individual properties + for file in files: + ft = self._get_file_type(file) + if ft == "js": + scripts.append(open(file).read()) + else: + output_html += self._file_formatter(file) + + + + + bdg = Bridge(output_html, scripts, self.shell) + + # bdg.add_javascript("cells = Jupyter.notebook.get_cell_elements();") + + self.bridges[bdg.id] = bdg + self.last_id = bdg.id + + return id + + # Passing to JS is working now + def data_to_js( + self, + data, + js_variable, + to_js_converter=_default_converter, + from_js_converter=_default_from_converter, + ): + """ + Pass python data, one-way, into the Javascript Roundtrip oject for retireval in + loaded visualization/gui code. Intended primarily for passing down data initalized + within the local scope of a visualization loader. + + :param data: The data to be passed down, can be a variable or literal. + :param js_variable: String of the key where the data can be found on the window.Roundtrip object in the javascript code. + :param to_js_converter: Function which defines how to convert the data in 'data' into a serilaizable string format like JSON. + This function takes one argument "data" and returns a string. + :param from_js_converter: Function which defines how to convert a string in an specific encoding to an active Python object + This function takes one argument "data", a string and returns either a python object or the string itself. + """ + self.bridges[self.last_id].pass_to_js( + js_variable, + data, + py_to_js_converter=to_js_converter, + js_to_py_converter=from_js_converter, + ) + + # consider seperating watchable and reloadable? + def var_to_js( + self, + jup_var, + js_variable, + watch=False, + to_js_converter=_default_converter, + from_js_converter=_default_from_converter, + ): + """ + Bind a variable in the Jupyter notebook scope to a member of the Roundtrip JS object. + + If 'watch' is True, this binding will propogate data changes to the variable in the Jupyter Notebook + to the JavaScript code and will also propogate changes to the associated member of the JS Roundtrip object back up to + the notebook. Changes made under this watch will also cause all cells associated with 'jup_var' and + annotated with a '?' operator to be automically refreshed and re-run. + + Otherwise it will pass the data in jup_var down one-way like data_to_jS. + + :param jup_var: A string containing the name of a variable in the Jupyter Notebook namespace. + :param js_variable: String of the key where the data can be found on the window.Roundtrip object in the javascript code. + :param watch: A boolean which specifies if the two-way binding of the data in jup_var and auto-updating of this cell should be turned on or not. + :param to_js_converter: Function which defines how to convert the data in 'data' into a serilaizable string format like JSON. + This function takes one argument "data" and returns a string. + :param from_js_converter: Function which defines how to convert a string in an specific encoding to an active Python object + This function takes one argument "data", a string and returns either a python object or the string itself. + """ + if jup_var[0] == "?": + if watch is False: + print( + """WARNING: + This magic function does not support automatic reloading. + Please remove the '?' character in front of '{0}'. + """.format( + jup_var[1:] + ) + ) + watch = "false" + else: + watch = "true" + + jup_var = jup_var[1:] + + if ( + jup_var in self.watched.keys() + and js_variable not in self.watched[jup_var]["js_var"] + ): + self.watched[jup_var]["js_var"].append(js_variable) + else: + self.watched[jup_var] = { + "converter": to_js_converter, + "js_var": [js_variable], + } + else: + watch = "false" + + if jup_var not in self.shell.user_ns: + self.shell.user_ns[jup_var] = None + + + data = self.shell.user_ns[jup_var] + + self.bridges[self.last_id].pass_to_js( + js_variable, + data, + two_way=watch, + python_var=jup_var, + py_to_js_converter=to_js_converter, + js_to_py_converter=from_js_converter, + ) + + def manage_jupter_change(self): + """ + Callback function which runs after a cell is executed. + + Checks to see if a watched variable in a visualization is upaded in the regular python notebook code. Triggers the re-running of all cells + which have the "?" before the updated variable as an argument to a roundtrip magic function. Also, propogates the data change to the JavaScript code. + + """ + + tokens = [ + token + for token in tokenize.tokenize( + io.BytesIO(self.shell.user_ns["_ih"][-1].encode("utf-8")).readline + ) + ] + assignment_tokens = [ + "=", + "+=", + "-=", + "*=", + "/=", + "%=", + "//=", + "**=", + "&=", + "|=", + "^=", + ">>=", + "<<=", + ] + update_flags = {} + update_hook = """\n (function(){{ + window.Roundtrip[\'{js_var}\'] = {{ + \'data\': \'{data}\', + \'python_var\': \'{var}\', + \'origin\': \'PYASSIGN\' + }}; + }})();\n""" + code = "" + + + # TODO: FIX BUG WHICH MAKES THIS CODE BLOCK READ AS AN ASSIGNMENT + ''' + subselection = [] + rng = ranges + for r in rng: + subselection += rng[r] + + subselection = np.array(subselection) + ''' + for var in self.watched.keys(): + for i, token in enumerate(tokens): + if token.string == var: + lookahead = i + while ( + lookahead < len(tokens) + and tokenize.tok_name[tokens[lookahead].type] != "NEWLINE" + ): + if tokens[lookahead].string in assignment_tokens: + update_flags[var] = True + break + else: + lookahead += 1 + + if var in update_flags.keys(): + break + + for flag in update_flags: + new_data = self.watched[flag]["converter"](self.shell.user_ns[flag]) + for var in self.watched[flag]["js_var"]: + code += update_hook.format(js_var=var, data=new_data, var=flag) + if code != "": + display(Javascript(code)) + + + def fetch_data(self, js_var, ipy_var): + """ + Retrieves data from the javascript Roundtrip object. + + :param js_var: String containing the key in the Javascript roundtrip object where the desired data can be found + :param ipy_var: A String containing the name of a variable in the Jupyter notebook namespace where the retrieved data can be stored + """ + self.bridges[self.last_id].retrieve_from_js(js_var, ipy_var) + + def initialize(self): + """ + Function which manages the running and loading of specificed visualization files, data, and variable bindings. Should be called last in + a visualization magic function. + """ + self.bridges[self.last_id].run() + + +class Bridge: + def __init__(self, html, js=None, ipy_shell=get_ipython()): + self.html = html + self.scripts = js + self.shell = ipy_shell + self.display = display(HTML(""), display_id=True) + self.id = self.display.display_id + self.converter = _default_converter + args = [] + + def _extract_simple_dt(self, dt_str): + return dt_str.split("'")[1] + + def run(self): + self.display.update(HTML(self.html)) + + if self.scripts is not None: + js_exe = "" + for script in self.scripts: + js_exe += script + + display(Javascript(js_exe)) + + def add_javascript(self, code): + display(Javascript(code)) + + # put down explicit write notification (maybe) + # watch errors with user documentation + # run some stress tests on this + # with weird waits for java script + # watch gives us an explicit way to link views + def pass_to_js( + self, + js_variable, + data, + two_way="false", + python_var="", + datatype=None, + py_to_js_converter=None, + js_to_py_converter=None, + ): + # This may have a race condition; keep an eye on that. + pass_hook = """\n (function(){{ + window.Roundtrip[\'{js_var}\'] = {{ + \'origin\': \'INIT\', + \'two_way\': {binding}, + \'python_var\':\'{py_var}\', + \'type\':\'{type}\', + \'data\':\'{data}\', + \'converter\':{converter}, + }}; + }})();\n""" + + if datatype is None: + datatype = type(data) + datatype = self._extract_simple_dt(str(datatype)) + + try: + # some default conversion + # we may want to push this off to the application + # developer + if py_to_js_converter == None: + data = self._default_converter(data) + else: + data = py_to_js_converter(data) + self.converter = py_to_js_converter + except: + pass + + conv_spec = None + + if js_to_py_converter is not None: + conv_spec = { + "name": js_to_py_converter.__name__, + "code": inspect.getsource(js_to_py_converter), + } + + self.add_javascript( + pass_hook.format( + js_var=js_variable, + binding=two_way, + py_var=python_var, + type=datatype, + data=data, + converter=json.dumps(conv_spec), + ) + ) + + def retrieve_from_js(self, js_variable, notebook_var): + # TODO: add validator(s) + hook_template = """ + (function(){{ + var holder = Roundtrip['{src}']; + holder = `\'${{holder}}\'`; + var code = `{dest} = ${{holder}}`; + IPython.notebook.kernel.execute(code); + }})() + """ + hook = hook_template.format(src=str(js_variable), dest=str(notebook_var)) + display(Javascript(hook)) + # self.add_javascript(hook) + + +# Singelton declaration of the roundtrip object. +Roundtrip = RoundTrip() +# Roundtrip.shell.events.register("post_run_cell", Roundtrip.manage_jupter_change) diff --git a/hatchet/vis/external/roundtrip/roundtrip/roundtrip.js b/hatchet/vis/external/roundtrip/roundtrip/roundtrip.js new file mode 100644 index 00000000..1bebf92c --- /dev/null +++ b/hatchet/vis/external/roundtrip/roundtrip/roundtrip.js @@ -0,0 +1,320 @@ +var Roundtrip_Obj = {}; +var refresh_cycle = false; +var clicked_cell = null; +var cached_cells = Jupyter.notebook.get_cell_elements(); + +/** + * @name unindentPyCode + * @description Removes leading indentations from a python code string. + * + * @param {string} code Python code in string form + * @returns Passed code string but with no leading indentations + */ +function unindentPyCode(code){ + let uicode = code.split('\n'); + let indent = 0; + + uicode.forEach((l,i, arr)=>{ + if(i == 0){ + indent = l.search(/\S/); + } + arr[i] = l.slice(indent); + }) + uicode = uicode.join('\n'); + return uicode; +} + +/** + * @name buildPythonAssignment + * @description Builds up a python code string which assigns javascript data back into jypyter notebook namespace + * + * @param {string} val This is data assigned back to the python code + * @param {string} py_var This is the variable into which val is assigned + * @param {string} converter This is a definition of a python function which translates data back to the desired format + * @returns The python code to be run in the jupyter shell + */ +function buildPythonAssignment(val, py_var, converter){ + // console.log(val, py_var, converter); + var holder = `'${val}'`; + var code = `${unindentPyCode(converter.code)}` + code += `\ntmp = ${holder}`; + code += `\n${py_var} = ${converter.name}(tmp)` + + return code +} + +/** + * @name manageNewCell + * + * @description Increments all two way bound cell ids by the number of new cells which proceed them. + * Ex. Adding one cell at position 2 will increment a bound cell at position 3 from 3->4. + * + * @param {array} newCells A list of our current cells in the notebook to be compared against cached cells + * @param {} obj The current roundtrip object containing all data bindings + */ +function manageNewCell(newCells, obj){ + let newIds = []; + + Object.keys(newCells).forEach(function(i){ + if(!Object.values(cached_cells).includes(newCells[i]) && !isNaN(i)){ + newIds.push(i); + } + }); + + //increment all bindings past each new id + for(let js_var in obj){ + for(let id of newIds){ + for(let key in obj[js_var]["two_way"]){ + obj[js_var]["two_way"][key].forEach((two_way_id, i) => { + if(two_way_id > id){ + obj[js_var]["two_way"][key][i] += 1; + } + }); + } + } + } + + cached_cells = newCells; +} + +function manageDeletedCell(newCells, obj){ + let deletedId = null; + + for(i of Object.keys(cachedCells)){ + if (cached_cells[i] !== newCells[i]){ + deletedId = i; + break; + } + } + +} + + +function bindClickDetectToCells(){ + let cells = Jupyter.notebook.get_cell_elements(); + + for(let i in Object.keys(cells)){ + let cell = cells[i]; + + if(cell !== undefined){ + cell.addEventListener('mousedown', () => { + clicked_cell = i; + }, true) + } + } +} + +bindClickDetectToCells(); + +/** + * @name RT_Handler + * @description A wrapper for our roundtrip object. It is called as a proxy for the + * roundtrip object defined above. This enables us to define custom call backs for + * gets and sets on the roundtrip object. The custom set handles necessary data conversion, + * the registering of two-way bound variables and automatic updating of watched cells. The get + * allows users to interact with the underlying object without worrying about the proxy. + */ +var RT_Handler = { + set(obj, prop, value){ + //Do cell housekeeping + + + //Initial pass of value into roundtrip object + // from python code; there may be multiple different + // visualizations of the same type we need to catch + if (typeof value === 'object' && value.hasOwnProperty('origin') && value.origin == 'INIT'){ + + /** + * In this code block we need to check if there is already a + * an array of id's which are two way bound already defined and + * add to it or remove from it + */ + let ida = Jupyter.notebook.get_selected_index()-1; + value.id = ida; + let new_val = value; + + // Block updating bindings while jupyter is running + if(refresh_cycle){ + new_val = obj[prop]; + new_val.data = value.data; + return Reflect.set(obj, prop, new_val); + } + + /** + * The broad case where we are updating bindings + * on existing data + */ + if(obj[prop] != undefined){ + new_val = obj[prop]; + new_val.data = value.data; + new_val.converter = value.converter; + + // If there is no two way array, create one + // Else push on our new id + if(value.two_way === true){ + if(!Object.keys(new_val.two_way).includes(value['python_var'])){ + new_val.two_way[value['python_var']] = []; + } + + let pybinding = new_val.two_way[value['python_var']]; + + if(!pybinding.includes(value.id)){ + pybinding.push(value.id); + } + + } + + //Deregister a cell id from being two-way bound now + else if(value.two_way === false && Object.keys(new_val.two_way).includes(value['python_var'])){ + let pybinding = new_val.two_way[value['python_var']]; + const index = pybinding.indexOf(value.id); + + if (index > -1) { + pybinding.splice(index, 1); + } + } + } + + //Initalize a new two-way object if + // one did not exist + else{ + if(new_val.two_way == true){ + new_val.two_way = {}; + new_val.two_way[value['python_var']] = [value.id]; + } + else{ + new_val.two_way = {}; + } + delete new_val.id; + delete new_val.from_py; + delete new_val.python_var; + } + + return Reflect.set(obj, prop, new_val); + } + //Assignment from javascript code + else { + // TODO: make the py/js data identification object a + // formal class + if(obj[prop] === undefined){ + obj[prop] = { + two_way: {}, + origin: "JS", + data: null, + python_var: "", + converter: null, + type: typeof(value) + } + } + + var execable_cells = []; + let origin = 'STANDARD'; + let python_var = ''; + + if (typeof value === 'object' && + value.hasOwnProperty('origin') && + value.origin == 'PYASSIGN'){ + + origin = value.origin; + python_var = value.python_var; + value = value.data; + } + + //TODO: Replace with imported, webpacked D3 + require(['https://d3js.org/d3.v4.min.js'], function(d3) { + + // When 2 way bound this calls automatically when something changes + if (obj[prop] !== undefined && Object.keys(obj[prop]["two_way"]).length > 0){ + + let current_cell = Number(clicked_cell); + let py_var = ''; + + //ust set the data without updating if our current cell is not two way bound + if(origin == 'STANDARD'){ + let found = false; + for(let key in obj[prop]["two_way"]){ + if (obj[prop]["two_way"][key].includes(current_cell)){ + found = true; + py_var = key; + } + } + + if(!found){ + return Reflect.set(obj[prop], "data", value); + } + } + + + if(origin == 'PYASSIGN'){ + py_var = python_var; + } + + + /** + * We now have a list of registered cells we can execute. + * So we look through our javascript variables to see if they + * are bound to the same py variable as our current assignment + * TODO: Make this list update when cells are moved up or down + */ + + for(let js_var in obj){ + let boundpyvars = Object.keys(obj[js_var]["two_way"]); + + if(boundpyvars.includes(py_var)){ + let clls = obj[js_var]["two_way"][py_var].filter(x => x != current_cell ); + execable_cells = execable_cells.concat(clls); + } + } + + if(origin == 'STANDARD'){ + // TODO:THROW AN ERROR IF CONVERTER == NONE + const code = buildPythonAssignment(value, py_var, obj[prop]["converter"]); + + //TODO: Turn this into a function that manages error reporting and printing + Jupyter.notebook.kernel.execute(code, { + shell:{ + reply: function(r){ + //consider putting this in a reserved jupyter variable + if(r.content.status == 'error'){ + console.error(`${r.content.ename} in JS->Python coversion:\n ${r.content.evalue}`) + } + } + } + }); + } + + refresh_cycle = true; + Jupyter.notebook.execute_cells(execable_cells); + + /** + * Test every half second to see if some of the + * jupyter cells are still running. Avoids a race condition + * where incorrect ids were stored in our roundtrip object. + */ + const test_running = function(){ + let runtest = d3.selectAll(".running"); + if(runtest.empty()){ + refresh_cycle = false; + return; + } + else{ + setTimeout(test_running, 500); + } + } + + test_running(); + } + + }); + } + + return Reflect.set(obj[prop], "data", value); + }, + get(obj, prop, reciever){ + // console.log("Get: ",...arguments); + let ret = obj[prop].data + return ret; + } +} + +window.Roundtrip = new Proxy(Roundtrip_Obj, RT_Handler); diff --git a/hatchet/vis/external/roundtrip/roundtrip/version.py b/hatchet/vis/external/roundtrip/roundtrip/version.py new file mode 100644 index 00000000..ec44a371 --- /dev/null +++ b/hatchet/vis/external/roundtrip/roundtrip/version.py @@ -0,0 +1,2 @@ +__version_info__ = ("0", "2", "1") +__version__ = ".".join(__version_info__) \ No newline at end of file diff --git a/hatchet/vis/external/roundtrip/setup.py b/hatchet/vis/external/roundtrip/setup.py new file mode 100644 index 00000000..89549f92 --- /dev/null +++ b/hatchet/vis/external/roundtrip/setup.py @@ -0,0 +1,37 @@ + +from setuptools import setup +from codecs import open +from os import path + +here = path.abspath(path.dirname(__file__)) + +with open("README.md", "r", encoding="utf-8") as fh: + long_description = fh.read() + +# Get the version in a safe way +# per python docs: https://packaging.python.org/guides/single-sourcing-package-version/ +version = {} +with open("./roundtrip/version.py") as fp: + exec(fp.read(), version) + + +setup( + name="roundtrip-lib", + version=version["__version__"], + description="A Python library for loading JS visualizations into jupyter notebooks.", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/hdc-arizona/roundtrip", + author="Connor Scully-Allison", + author_email="cscullyallison@email.arizona.edu", + license="MIT", + keywords="", + packages=[ + "roundtrip" + ], + install_requires=[ + "numpy", + "pandas", + ], + include_package_data=True, +) \ No newline at end of file diff --git a/hatchet/vis/loader.py b/hatchet/vis/loader.py index e69de29b..ac1c84ce 100644 --- a/hatchet/vis/loader.py +++ b/hatchet/vis/loader.py @@ -0,0 +1,38 @@ +from IPython.core.magic import Magics, magics_class, line_magic +from hatchet.vis import Roundtrip as RT +from hatchet import GraphFrame +from os import path +from os.path import dirname + +import json + +vis_dir = dirname(path.abspath(__file__)) + +def _gf_to_json(data): + try: + if type(data) is type(GraphFrame): + return json.dumps(data.to_literal()) + else: + return json.dumps(data) + except: + raise "Input data is not of type graphframe or json serializable." + + +@magics_class +class CCT(Magics): + def __init__(self, shell): + super(CCT, self).__init__(shell) + self.vis_dist = path.join(vis_dir, 'static') + + @line_magic + def cct(self, line): + args = line.split(" ") + + RT.load_webpack(path.join(self.vis_dist, 'cct_bundle.html'), cache=False) + RT.var_to_js(args[0], "hatchet_tree_def", watch=False, to_js_converter=_gf_to_json) + + RT.initialize() + + +def load_ipython_extension(ipython): + ipython.register_magics(CCT) \ No newline at end of file diff --git a/hatchet/vis/notebooks/cct.ipynb b/hatchet/vis/notebooks/cct.ipynb index e69de29b..c6b91c19 100644 --- a/hatchet/vis/notebooks/cct.ipynb +++ b/hatchet/vis/notebooks/cct.ipynb @@ -0,0 +1,18073 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "552be895", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "var Roundtrip_Obj = {};\n", + "var refresh_cycle = false;\n", + "var clicked_cell = null;\n", + "var cached_cells = Jupyter.notebook.get_cell_elements();\n", + "\n", + "/**\n", + " * @name unindentPyCode\n", + " * @description Removes leading indentations from a python code string.\n", + " * \n", + " * @param {string} code Python code in string form\n", + " * @returns Passed code string but with no leading indentations\n", + " */\n", + "function unindentPyCode(code){\n", + " let uicode = code.split('\\n');\n", + " let indent = 0;\n", + "\n", + " uicode.forEach((l,i, arr)=>{\n", + " if(i == 0){\n", + " indent = l.search(/\\S/);\n", + " }\n", + " arr[i] = l.slice(indent);\n", + " })\n", + " uicode = uicode.join('\\n');\n", + " return uicode;\n", + "}\n", + "\n", + "/**\n", + " * @name buildPythonAssignment\n", + " * @description Builds up a python code string which assigns javascript data back into jypyter notebook namespace\n", + " * \n", + " * @param {string} val This is data assigned back to the python code\n", + " * @param {string} py_var This is the variable into which val is assigned\n", + " * @param {string} converter This is a definition of a python function which translates data back to the desired format\n", + " * @returns The python code to be run in the jupyter shell\n", + " */\n", + "function buildPythonAssignment(val, py_var, converter){\n", + " // console.log(val, py_var, converter);\n", + " var holder = `'${val}'`;\n", + " var code = `${unindentPyCode(converter.code)}`\n", + " code += `\\ntmp = ${holder}`;\n", + " code += `\\n${py_var} = ${converter.name}(tmp)`\n", + "\n", + " return code\n", + "}\n", + "\n", + "/**\n", + " * @name manageNewCell\n", + " * \n", + " * @description Increments all two way bound cell ids by the number of new cells which proceed them. \n", + " * Ex. Adding one cell at position 2 will increment a bound cell at position 3 from 3->4. \n", + " * \n", + " * @param {array} newCells A list of our current cells in the notebook to be compared against cached cells\n", + " * @param {} obj The current roundtrip object containing all data bindings\n", + " */\n", + "function manageNewCell(newCells, obj){\n", + " let newIds = [];\n", + "\n", + " Object.keys(newCells).forEach(function(i){\n", + " if(!Object.values(cached_cells).includes(newCells[i]) && !isNaN(i)){\n", + " newIds.push(i);\n", + " }\n", + " });\n", + "\n", + " //increment all bindings past each new id\n", + " for(let js_var in obj){\n", + " for(let id of newIds){\n", + " for(let key in obj[js_var][\"two_way\"]){\n", + " obj[js_var][\"two_way\"][key].forEach((two_way_id, i) => {\n", + " if(two_way_id > id){\n", + " obj[js_var][\"two_way\"][key][i] += 1;\n", + " }\n", + " });\n", + " }\n", + " } \n", + " }\n", + "\n", + " cached_cells = newCells;\n", + "}\n", + "\n", + "function manageDeletedCell(newCells, obj){\n", + " let deletedId = null;\n", + " \n", + " for(i of Object.keys(cachedCells)){\n", + " if (cached_cells[i] !== newCells[i]){\n", + " deletedId = i;\n", + " break;\n", + " }\n", + " }\n", + "\n", + "}\n", + "\n", + "\n", + "function bindClickDetectToCells(){\n", + " let cells = Jupyter.notebook.get_cell_elements();\n", + "\n", + " for(let i in Object.keys(cells)){\n", + " let cell = cells[i];\n", + "\n", + " if(cell !== undefined){\n", + " cell.addEventListener('mousedown', () => {\n", + " clicked_cell = i;\n", + " }, true)\n", + " }\n", + " }\n", + "}\n", + "\n", + "bindClickDetectToCells();\n", + "\n", + "/**\n", + " * @name RT_Handler\n", + " * @description A wrapper for our roundtrip object. It is called as a proxy for the\n", + " * roundtrip object defined above. This enables us to define custom call backs for\n", + " * gets and sets on the roundtrip object. The custom set handles necessary data conversion,\n", + " * the registering of two-way bound variables and automatic updating of watched cells. The get\n", + " * allows users to interact with the underlying object without worrying about the proxy.\n", + " */\n", + "var RT_Handler = {\n", + " set(obj, prop, value){\n", + " //Do cell housekeeping\n", + "\n", + "\n", + " //Initial pass of value into roundtrip object\n", + " // from python code; there may be multiple different\n", + " // visualizations of the same type we need to catch\n", + " if (typeof value === 'object' && value.hasOwnProperty('origin') && value.origin == 'INIT'){\n", + " \n", + " /**\n", + " * In this code block we need to check if there is already a \n", + " * an array of id's which are two way bound already defined and \n", + " * add to it or remove from it\n", + " */\n", + " let ida = Jupyter.notebook.get_selected_index()-1;\n", + " value.id = ida;\n", + " let new_val = value;\n", + "\n", + " // Block updating bindings while jupyter is running\n", + " if(refresh_cycle){\n", + " new_val = obj[prop];\n", + " new_val.data = value.data;\n", + " return Reflect.set(obj, prop, new_val);\n", + " }\n", + "\n", + " /**\n", + " * The broad case where we are updating bindings \n", + " * on existing data\n", + " */\n", + " if(obj[prop] != undefined){\n", + " new_val = obj[prop];\n", + " new_val.data = value.data;\n", + " new_val.converter = value.converter;\n", + "\n", + " // If there is no two way array, create one\n", + " // Else push on our new id\n", + " if(value.two_way === true){\n", + " if(!Object.keys(new_val.two_way).includes(value['python_var'])){\n", + " new_val.two_way[value['python_var']] = [];\n", + " }\n", + "\n", + " let pybinding = new_val.two_way[value['python_var']];\n", + "\n", + " if(!pybinding.includes(value.id)){\n", + " pybinding.push(value.id);\n", + " }\n", + "\n", + " }\n", + "\n", + " //Deregister a cell id from being two-way bound now\n", + " else if(value.two_way === false && Object.keys(new_val.two_way).includes(value['python_var'])){\n", + " let pybinding = new_val.two_way[value['python_var']];\n", + " const index = pybinding.indexOf(value.id);\n", + " \n", + " if (index > -1) {\n", + " pybinding.splice(index, 1);\n", + " }\n", + " }\n", + " }\n", + "\n", + " //Initalize a new two-way object if\n", + " // one did not exist\n", + " else{\n", + " if(new_val.two_way == true){\n", + " new_val.two_way = {};\n", + " new_val.two_way[value['python_var']] = [value.id];\n", + " }\n", + " else{\n", + " new_val.two_way = {};\n", + " }\n", + " delete new_val.id;\n", + " delete new_val.from_py;\n", + " delete new_val.python_var;\n", + " }\n", + "\n", + " return Reflect.set(obj, prop, new_val);\n", + " }\n", + " //Assignment from javascript code\n", + " else {\n", + " // TODO: make the py/js data identification object a\n", + " // formal class\n", + " if(obj[prop] === undefined){\n", + " obj[prop] = {\n", + " two_way: {},\n", + " origin: \"JS\",\n", + " data: null,\n", + " python_var: \"\",\n", + " converter: null,\n", + " type: typeof(value)\n", + " }\n", + " }\n", + "\n", + " var execable_cells = [];\n", + " let origin = 'STANDARD';\n", + " let python_var = '';\n", + "\n", + " if (typeof value === 'object' && \n", + " value.hasOwnProperty('origin') && \n", + " value.origin == 'PYASSIGN'){\n", + "\n", + " origin = value.origin;\n", + " python_var = value.python_var;\n", + " value = value.data;\n", + " }\n", + "\n", + " //TODO: Replace with imported, webpacked D3\n", + " require(['https://d3js.org/d3.v4.min.js'], function(d3) {\n", + "\n", + " // When 2 way bound this calls automatically when something changes\n", + " if (obj[prop] !== undefined && Object.keys(obj[prop][\"two_way\"]).length > 0){\n", + "\n", + " let current_cell = Number(clicked_cell);\n", + " let py_var = '';\n", + "\n", + " //ust set the data without updating if our current cell is not two way bound\n", + " if(origin == 'STANDARD'){\n", + " let found = false;\n", + " for(let key in obj[prop][\"two_way\"]){\n", + " if (obj[prop][\"two_way\"][key].includes(current_cell)){\n", + " found = true;\n", + " py_var = key;\n", + " }\n", + " }\n", + "\n", + " if(!found){\n", + " return Reflect.set(obj[prop], \"data\", value);\n", + " }\n", + " }\n", + "\n", + "\n", + " if(origin == 'PYASSIGN'){\n", + " py_var = python_var;\n", + " }\n", + "\n", + "\n", + " /**\n", + " * We now have a list of registered cells we can execute.\n", + " * So we look through our javascript variables to see if they\n", + " * are bound to the same py variable as our current assignment\n", + " * TODO: Make this list update when cells are moved up or down\n", + " */\n", + "\n", + " for(let js_var in obj){\n", + " let boundpyvars = Object.keys(obj[js_var][\"two_way\"]);\n", + "\n", + " if(boundpyvars.includes(py_var)){\n", + " let clls = obj[js_var][\"two_way\"][py_var].filter(x => x != current_cell );\n", + " execable_cells = execable_cells.concat(clls);\n", + " }\n", + " }\n", + "\n", + " if(origin == 'STANDARD'){\n", + " // TODO:THROW AN ERROR IF CONVERTER == NONE\n", + " const code = buildPythonAssignment(value, py_var, obj[prop][\"converter\"]);\n", + " \n", + " //TODO: Turn this into a function that manages error reporting and printing\n", + " Jupyter.notebook.kernel.execute(code, { \n", + " shell:{\n", + " reply: function(r){\n", + " //consider putting this in a reserved jupyter variable\n", + " if(r.content.status == 'error'){\n", + " console.error(`${r.content.ename} in JS->Python coversion:\\n ${r.content.evalue}`)\n", + " }\n", + " }\n", + " }\n", + " });\n", + " }\n", + "\n", + " refresh_cycle = true;\n", + " Jupyter.notebook.execute_cells(execable_cells);\n", + "\n", + " /**\n", + " * Test every half second to see if some of the\n", + " * jupyter cells are still running. Avoids a race condition\n", + " * where incorrect ids were stored in our roundtrip object.\n", + " */\n", + " const test_running = function(){\n", + " let runtest = d3.selectAll(\".running\");\n", + " if(runtest.empty()){\n", + " refresh_cycle = false;\n", + " return;\n", + " }\n", + " else{\n", + " setTimeout(test_running, 500);\n", + " }\n", + " }\n", + "\n", + " test_running();\n", + " }\n", + "\n", + " });\n", + " } \n", + "\n", + " return Reflect.set(obj[prop], \"data\", value);\n", + " },\n", + " get(obj, prop, reciever){\n", + " // console.log(\"Get: \",...arguments);\n", + " let ret = obj[prop].data\n", + " return ret; \n", + " }\n", + "}\n", + "\n", + "window.Roundtrip = new Proxy(Roundtrip_Obj, RT_Handler);\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%load_ext hatchet.vis.loader" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9afef2c1", + "metadata": {}, + "outputs": [], + "source": [ + "literal_tree = [\n", + " {\n", + " \"name\": \"foo\",\n", + " \"frame\": {\"name\": \"foo\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 130.0, \"time\": 0.0, \"module\": \"a\"},\n", + " \"children\": [\n", + " {\n", + " \"name\": \"bar\",\n", + " \"frame\": {\"name\": \"bar\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 20.0, \"time\": 5.0, \"module\": \"b\"},\n", + " \"children\": [\n", + " {\n", + " \"name\": \"baz\",\n", + " \"frame\": {\"name\": \"baz\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 5.0, \"time\": 5.0, \"module\": \"c\"},\n", + " },\n", + " {\n", + " \"name\": \"grault\",\n", + " \"frame\": {\"name\": \"grault\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 10.0, \"time\": 10.0, \"module\": \"c\"},\n", + " },\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"qux\",\n", + " \"frame\": {\"name\": \"qux\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 60.0, \"time\": 0.0, \"module\": \"b\"},\n", + " \"children\": [\n", + " {\n", + " \"name\": \"quux\",\n", + " \"frame\": {\"name\": \"quux\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 60.0, \"time\": 5.0, \"module\": \"c\"},\n", + " \"children\": [\n", + " {\n", + " \"name\": \"corge\",\n", + " \"frame\": {\"name\": \"corge\", \"type\": \"function\"},\n", + " \"metrics\": {\"time (inc)\": 55.0, \"time\": 10.0, \"module\": \"c\"},\n", + " \"children\": [\n", + " {\n", + " \"name\": \"bar\",\n", + " \"frame\": {\"name\": \"bar\", \"type\": \"function\"},\n", + " \"metrics\": {\n", + " \"time (inc)\": 20.0,\n", + " \"time\": 5.0,\n", + " \"module\": \"d\"\n", + " },\n", + " \"children\": [\n", + " {\n", + " \"name\": \"baz\",\n", + " \"frame\": {\"name\": \"baz\", \"type\": \"function\"},\n", + " \"metrics\": {\n", + " \"time (inc)\": 5.0,\n", + " \"time\": 5.0,\n", + " \"module\": \"d\"\n", + " },\n", + " },\n", + " {\n", + " \"name\": \"grault\",\n", + " \"frame\": {\"name\": \"grault\", \"type\": \"function\"},\n", + " \"metrics\": {\n", + " \"time (inc)\": 10.0,\n", + " \"time\": 10.0,\n", + " \"module\": \"c\"\n", + " },\n", + " },\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"grault\",\n", + " \"frame\": {\"name\": \"grault\", \"type\": \"function\"},\n", + " \"metrics\": {\n", + " \"time (inc)\": 10.0,\n", + " \"time\": 10.0,\n", + " \"module\": \"c\"\n", + " },\n", + " },\n", + " {\n", + " \"name\": \"garply\",\n", + " \"frame\": {\"name\": \"garply\", \"type\": \"function\"},\n", + " \"metrics\": {\n", + " \"time (inc)\": 15.0,\n", + " \"time\": 15.0,\n", + " \"module\": \"c\"\n", + " },\n", + " },\n", + " ],\n", + " }\n", + " ],\n", + " }\n", + " ],\n", + " },\n", + " ],\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fe207746", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + " (function(){\n", + " window.Roundtrip['hatchet_tree_def'] = {\n", + " 'origin': 'INIT',\n", + " 'two_way': false,\n", + " 'python_var':'literal_tree', \n", + " 'type':'list', \n", + " 'data':'[{\"name\": \"foo\", \"frame\": {\"name\": \"foo\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 130.0, \"time\": 0.0, \"module\": \"a\"}, \"children\": [{\"name\": \"bar\", \"frame\": {\"name\": \"bar\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 20.0, \"time\": 5.0, \"module\": \"b\"}, \"children\": [{\"name\": \"baz\", \"frame\": {\"name\": \"baz\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 5.0, \"time\": 5.0, \"module\": \"c\"}}, {\"name\": \"grault\", \"frame\": {\"name\": \"grault\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 10.0, \"time\": 10.0, \"module\": \"c\"}}]}, {\"name\": \"qux\", \"frame\": {\"name\": \"qux\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 60.0, \"time\": 0.0, \"module\": \"b\"}, \"children\": [{\"name\": \"quux\", \"frame\": {\"name\": \"quux\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 60.0, \"time\": 5.0, \"module\": \"c\"}, \"children\": [{\"name\": \"corge\", \"frame\": {\"name\": \"corge\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 55.0, \"time\": 10.0, \"module\": \"c\"}, \"children\": [{\"name\": \"bar\", \"frame\": {\"name\": \"bar\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 20.0, \"time\": 5.0, \"module\": \"d\"}, \"children\": [{\"name\": \"baz\", \"frame\": {\"name\": \"baz\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 5.0, \"time\": 5.0, \"module\": \"d\"}}, {\"name\": \"grault\", \"frame\": {\"name\": \"grault\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 10.0, \"time\": 10.0, \"module\": \"c\"}}]}, {\"name\": \"grault\", \"frame\": {\"name\": \"grault\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 10.0, \"time\": 10.0, \"module\": \"c\"}}, {\"name\": \"garply\", \"frame\": {\"name\": \"garply\", \"type\": \"function\"}, \"metrics\": {\"time (inc)\": 15.0, \"time\": 15.0, \"module\": \"c\"}}]}]}]}]}]', \n", + " 'converter':{\"name\": \"_default_from_converter\", \"code\": \"def _default_from_converter(data):\\n \\\"\\\"\\\"\\n The default converter from a string representation of JavaScript data.\\n Does not do any conversion right now but is required for the javascript code.\\n\\n :param data: The string representation of the JavaScript object/data we are decoding.\\n :returns: The string representation of the JavaScript object/data passed in.\\n\\n \\\"\\\"\\\"\\n return data\\n\"},\n", + " };\n", + " })();\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%cct literal_tree" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8ecc07a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/hatchet/vis/package.json b/hatchet/vis/package.json index ddc5edb0..024e821d 100644 --- a/hatchet/vis/package.json +++ b/hatchet/vis/package.json @@ -21,5 +21,20 @@ "bugs": { "url": "https://github.com/hatchet/hatchet/issues" }, - "homepage": "https://github.com/hatchet/hatchet#readme" + "homepage": "https://github.com/hatchet/hatchet#readme", + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "babel-loader": "^8.2.3", + "html-webpack-plugin": "^5.3.2", + "webpack": "^5.58.2", + "webpack-cli": "^4.9.0" + }, + "dependencies": { + "css-loader": "^6.5.0", + "d3": "^7.0.4", + "d3v4": "^4.2.2", + "style-loader": "^3.3.1" + } } diff --git a/hatchet/vis/scripts/cct.js b/hatchet/vis/scripts/cct.js new file mode 100644 index 00000000..d698d01d --- /dev/null +++ b/hatchet/vis/scripts/cct.js @@ -0,0 +1,1425 @@ + +//d3.v4 +import * as d3 from 'd3v4'; + + +const RT = window.Roundtrip; + +(function (element) { + const globals = Object.freeze({ + UNIFIED: 0, + DEFAULT: 0, + signals: { + CLICK: "CLICK", + DBLCLICK: "DBLCLICK", + BRUSH: "BRUSH", + TOGGLEBRUSH: "TOGGLEBRUSH", + COLLAPSE: "COLLAPSE", + METRICCHANGE: "METRICCHANGE", + TREECHANGE: "TREECHANGE", + COLORCLICK: "COLORCLICK", + LEGENDCLICK: "LEGENDCLICK", + ZOOM: "ZOOM" + }, + layout: { + margin: {top: 20, right: 20, bottom: 20, left: 20}, + }, + duration: 750, + treeHeight: 300 + }); + + var jsNodeSelected = "['*']"; + + var makeColorManager = function(model){ + + var _regularColors = [ + ['#006d2c', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#edf8e9'], //green + ['#a50f15', '#de2d26', '#fb6a4a', '#fc9272', '#fcbba1', '#fee5d9'], //red + ['#08519c', '#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#eff3ff'], //blue + ['#54278f', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#f2f0f7'], //purple + ['#a63603', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#feedde'], //orange + ['#252525', '#636363', '#969696', '#bdbdbd', '#d9d9d9', '#f7f7f7']]; //black + + var _invertColors = [ + ['#edf8e9', '#c7e9c0', '#a1d99b', '#74c476', '#31a354', '#006d2c'], //green + ['#fee5d9', '#fcbba1', '#fc9272', '#fb6a4a', '#de2d26', '#a50f15'], //red + ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#3182bd', '#08519c'], //blue + ['#f2f0f7', '#dadaeb', '#bcbddc', '#9e9ac8', '#756bb1', '#54278f'], //purple + ['#feedde', '#fdd0a2', '#fdae6b', '#fd8d3c', '#e6550d', '#a63603'], //orange + ['#f7f7f7', '#d9d9d9', '#bdbdbd', '#969696', '#636363', '#252525']]; //black + + + var _allTreesColors = ['#d73027', '#fc8d59', '#fee090', '#e0f3f8', '#91bfdb', '#4575b4']; + var _invertedAllTreesColors = ['#4575b4', '#91bfdb', '#e0f3f8', '#fee090', '#fc8d59', '#d73027']; + + let _state = model.state; + let _forestMinMax = model.data["forestMinMax"]; + let _modelForestStats = model.data["forestStats"]; + + return { + setColors: function(treeIndex){ + /** + * Sets the color pallet per tree to be either inverse or regular or unified/unique to each tree + * + * @param {Int} treeIndex - The index of the current tree's colors being set + */ + + var colorSchemeUsed; + + if (treeIndex == -1) { //all trees are displayed + if (_state["colorScheme"] == 0) { + colorSchemeUsed = _allTreesColors; + } else { + colorSchemeUsed = _invertedAllTreesColors; + } + } + else { //single tree is displayed + if (_state["colorScheme"] == 0) { + colorSchemeUsed = _regularColors[treeIndex]; + } else { + colorSchemeUsed = _invertColors[treeIndex]; + } + } + + return colorSchemeUsed; + }, + getLegendDomains: function(treeIndex){ + /** + * Sets the min and max of the legend. + * + * @param {Int} treeIndex - The index of the current tree's legend being set + */ + + var colorScaleDomain; + var metricRange; + var curMetric = _state["selectedMetric"]; + + // so hacky: need to fix later + if (model.data["legends"][_state["legend"]].includes("Unified")) { + treeIndex = -1; + } + + if (treeIndex == -1) { //unified color legend + metricRange = _forestMinMax[curMetric].max - _forestMinMax[curMetric].min; + colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map(function (x) { + return x * metricRange + _forestMinMax[curMetric].min; + }); + } + else{ + metricRange = _modelForestStats[treeIndex][curMetric].max - _modelForestStats[treeIndex][curMetric].min; + colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map(function (x) { + return x * metricRange + _modelForestStats[treeIndex][curMetric].min; + }); + } + + return colorScaleDomain; + }, + getColorLegend: function(treeIndex) { + /** + * Gets the color scheme used for a legend, contigent on individual tree-specific schemes or one unified color scheme. + * + * @param {Int} treeIndex - The index of the current tree's legend being set + */ + + //hacky need to fix later + if (model.data["legends"][_state["legend"]].includes("Unified")) { + treeIndex = -1; + } + + if (treeIndex == -1) { //unified color legend + var colorSchemeUsed = this.setColors(treeIndex); + + } else { + var colorSchemeUsed = this.setColors(treeIndex); + } + return colorSchemeUsed; + }, + calcColorScale: function(nodeMetric, treeIndex) { + /** + * Calculates the bins for the color scheme based on the current, user-selected metric. + * + * @param {String} nodeMetric - the name of the current metric being mapped to a color range + * @param {Int} treeIndex - The index of the current tree's legend being set + */ + + var curMetric = d3.select(element).select('#metricSelect').property('value'); + var colorSchemeUsed = this.setColors(treeIndex); + + if (treeIndex == -1) { + var metric_range = _forestMinMax[curMetric].max - _forestMinMax[curMetric].min; + var proportion_of_total = (nodeMetric - _forestMinMax[curMetric].min) / metric_range; + } else { + var metric_range = _modelForestStats[treeIndex][curMetric].max - _modelForestStats[treeIndex][curMetric].min; + var proportion_of_total = nodeMetric / 1; + + if (metric_range != 0) { + proportion_of_total = (nodeMetric - _modelForestStats[treeIndex][curMetric].min) / metric_range; + } + } + + if (proportion_of_total > 0.9) { + return colorSchemeUsed[0]; + } + if (proportion_of_total > 0.7) { + return colorSchemeUsed[1]; + } + if (proportion_of_total > 0.5) { + return colorSchemeUsed[2]; + } + if (proportion_of_total > 0.3) { + return colorSchemeUsed[3]; + } + if (proportion_of_total > 0.1) { + return colorSchemeUsed[4]; + } else { + return colorSchemeUsed[5]; + } + } + + } + } + + // This is the makeSignaller from class + var makeSignaller = function() { + let _subscribers = []; // Private member + + // Return the object that's created + return { + // Register a function with the notification system + add: function(handlerFunction) {_subscribers.push(handlerFunction); }, + + // Loop through all registered function and call them with passed + // arguments + notify: function(args) { + for (var i = 0; i < _subscribers.length; i++) { + _subscribers[i](args); + } + } + }; + } + + // Create an object that handles user interaction and events + var createController = function(model) { + var _model = model; + + return { + // All types of events run through a central dispatch + // function. The dispatch function decides what to do. + dispatch: function(evt) { + switch(evt.type) { + case (globals.signals.CLICK): + _model.updateSelected([evt.node]); + break; + case (globals.signals.DBLCLICK): + _model.handleDoubleClick(evt.node,evt.tree); + break; + case(globals.signals.TOGGLEBRUSH): + _model.toggleBrush(); + break; + case (globals.signals.BRUSH): + _model.setBrushedPoints(evt.selection, evt.end); + break; + case (globals.signals.METRICCHANGE): + _model.changeMetric(evt.newMetric); + break; + case(globals.signals.COLORCLICK): + _model.changeColorScheme(); + break; + case(globals.signals.TREECHANGE): + _model.updateActiveTrees(evt.display); + break; + case(globals.signals.LEGENDCLICK): + _model.updateLegends(); + break; + case(globals.signals.ZOOM): + _model.updateNodeLocations(evt.index, evt.transformation); + break; + default: + console.log('Unknown event type', evt.type); + } + } + }; + } + + + var createModel = function(){ + var _observers = makeSignaller(); + + //initialize default data and state + var _data = { + "trees":[], + "legends": ["Unified", "Indiv."], + "colors": ["Default", "Inverted"], + "forestData": null, + "rootNodeNames": [], + "numberOfTrees": 0, + "metricColumns": [], + "forestMinMax": [], + "forestStats": [] + }; + + var _state = { + "selectedNodes":[], + "collapsedNodes":[], + "selectedMetric": [], + "lastClicked": null, + "legend": 0, + "colorScheme": 0, + "brushOn": -1 + }; + + //setup model + + var cleanTree = RT["hatchet_tree_def"]; + + _data["forestData"] = JSON.parse(cleanTree); + _data["rootNodeNames"].push("Show all trees"); + _data["numberOfTrees"] = _data["forestData"].length; + _data["metricColumns"] = d3.keys(_data["forestData"][0].metrics); + + // pick the first metric listed to color the nodes + _state["selectedMetric"] = _data["metricColumns"][0]; + _state["lastClicked"] = d3.hierarchy(_data["forestData"][0], d => d.children) + _state["activeTree"] = "Show all trees"; + + //forest stats holds statistical descriptions of + // the metrics on each tree in the forest + var _forestStats = []; + var _forestMinMax = {}; + for (var i = 0; i < _data["numberOfTrees"]; i++) { + var thisTree = _data["forestData"][i]; + + // Get tree names for the display select options + _data["rootNodeNames"].push(thisTree.frame.name); + + var thisTreeMetrics = {}; + + // init the min/max for all trees' metricColumns + for(let d of _data["metricColumns"]){ + thisTreeMetrics[d] = { + "min": Number.MAX_VALUE, + "max": Number.MIN_VALUE + } + } + + _forestStats.push(thisTreeMetrics); + } + + for(let d of _data["metricColumns"]) { + _forestMinMax[d] = { + "min": Number.MAX_VALUE, + "max": Number.MIN_VALUE + } + } + + _data["forestMinMax"] = _forestMinMax; + _data["forestStats"] = _forestStats; + + // HELPER FUNCTION DEFINTIONS + function _printNodeData(nodeList) { + /** + * To pretty print the node data as a IPython table + * + * @param {Array} nodeList - An array of selected nodes for formatting + */ + + var nodeStr = ''; + var numNodes = nodeList.length; + var metricColumns = model.data["metricColumns"]; + + //lay the nodes out in a table + for (var i = 0; i < metricColumns.length; i++) { + nodeStr += ''; + } + nodeStr += ''; + for (var i = 0; i < numNodes; i++) { + for (var j = 0; j < metricColumns.length; j++) { + if (j == 0) { + nodeStr += ''; + } + else { + nodeStr += nodeList[i].data.metrics[metricColumns[j]]; + } + } + } + nodeStr = nodeStr + '
name' + metricColumns[i] + '
' + nodeList[i].data.frame.name + '' + nodeList[i].data.metrics[metricColumns[j]] + ''; + } + else if (j == metricColumns.length - 1) { + nodeStr += nodeList[i].data.metrics[metricColumns[j]] + '
'; + return nodeStr; + } + + function _printQuery(nodeList) { + /** + * Prints out user selected nodes as a query string which can be used in the GraphFrame.filter() function. + * + * @param {Array} nodeList - An array of selected nodes for formatting + */ + var leftMostNode = {depth: Number.MAX_VALUE, data: {name: 'default'}}; + var rightMostNode = {depth: 0, data: {name: 'default'}}; + var lastNode = ""; + var selectionIsAChain = false; + + for (var i = 0; i < nodeList.length; i++) { + if (nodeList[i].depth < leftMostNode.depth) { + leftMostNode = nodeList[i]; + } + if (nodeList[i].depth > rightMostNode.depth) { + rightMostNode = nodeList[i]; + } + if ((i > 1) && (nodeList[i].x == nodeList[i-1].x)) { + selectionIsAChain = true; + } + else { + selectionIsAChain = false; + } + } + + //do some evaluation for other subtrees + // we could generate python code that does this + var queryStr = "['']"; + if ((nodeList.length > 1) && (selectionIsAChain)) { + // This query is for chains + queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'name': '" + rightMostNode.data.frame.name + "'}]"; + } + else if (nodeList.length > 1) { + // This query is for subtrees + queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'depth': '<= " + rightMostNode.depth + "' }]"; + } + else { + //Single node query + queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}]"; + } + + return queryStr; + } + + + /* Class object created from call to createModel */ + return{ + data: _data, + state: _state, + register: function(s){ + /** + * Registers a signaller (a callback function) to be run with _observers.notify() + * + * @param {Function} s - (a callback function) to be run with _observers.notify() + */ + _observers.add(s); + }, + addTree: function(tm){ + /** + * Pushes a tree into the model. + * + * @param {Object} tm - A d3 tree constructed from a d3 hierarchy + */ + + _data['trees'].push(tm); + }, + getTree: function(index){ + /** + * Retrieves a tree from the model. + * + * @param {Number} index - The index of the tree we want to get + */ + return _data['trees'][index]; + }, + getNodesFromMap: function(index){ + /** + * Retrieves tree nodes from the model + * + * @param {Number} index - The index of the tree nodes we want to get + */ + return _data['trees'][index].descendants(); + }, + getLinksFromMap: function(index){ + /** + * Retrieves tree links from the model + * + * @param {Number} index - The index of the tree links we want to get + */ + return _data['trees'][index].descendants().slice(1); + }, + updateNodes: function(index, f){ + /** + * Updates the nodes in the model according to the passed in callback function. + * + * @param {Number} index - The index of the tree we are updating + * @param {Function} f - The callback function being applied to the nodes + */ + f(_data['trees'][index].descendants()); + }, + updateforestStats: function(index){ + /** + * Updates the local maximum and minimum metrics for a single tree in the forest. + * Updates the global maximum and minimum metrics across all trees in our forest. + * Stores these values in the model. + * + * @param {Number} index - The index of the tree we are updating + */ + + var curTreeData = _forestStats[index]; + for(let metric of _data["metricColumns"]) { + //get local minimum and maximum for our current tree + // for each metric + _data['trees'][index].descendants().forEach(function (d) { + curTreeData[metric].max = Math.max(curTreeData[metric].max, d.data.metrics[metric]); + curTreeData[metric].min = Math.min(curTreeData[metric].min, d.data.metrics[metric]); + }); + + //Update global minimum and maximum per metric + _forestMinMax[metric].max = Math.max(_forestMinMax[metric].max, curTreeData[metric].max); + _forestMinMax[metric].min = Math.min(_forestMinMax[metric].min, curTreeData[metric].min); + } + + _data["forestStats"] = _forestStats; + _data["forestMinMax"] = _forestMinMax; + }, + updateSelected: function(nodes){ + /** + * Updates which nodes are "Selected" by the user in the model + * + * @param {Array} nodes - A list of selected nodes + */ + + _state['selectedNodes'] = nodes; + this.updateTooltip(nodes); + + if(nodes.length > 0){ + jsNodeSelected = _printQuery(nodes); + } else { + jsNodeSelected = "['*']"; + } + + _observers.notify(); + }, + handleDoubleClick: function(d){ + /** + * Handles the model functionlaity of hiding and un-hiding subtrees + * on double click + * + * @param {Object} d - The node which was double clicked + */ + + // if the node is not already collapsed + // keep track of collapsed nodes + if (! _state["collapsedNodes"].includes(d) ){ + _state["collapsedNodes"].push(d); + } + else{ + index = _state["collapsedNodes"].indexOf(d); + _state["collapsedNodes"].splice(index, 1); + } + + //this is kind of a hack for this paradigm + // but it updates the passed data directly + // and hides children nodes triggering update + // when view is re-rendered + if (d.children) { + d._children = d.children; + d.children = null; + } else { + d.children = d._children; + d._children = null; + } + + _state["lastClicked"] = d; + + _observers.notify(); + }, + toggleBrush: function(){ + /** + * Toggles the brushing functionality with a button click + * + */ + + _state["brushOn"] = -_state["brushOn"]; + _observers.notify(); + }, + setBrushedPoints(selection, end){ + /** + * Calculates which nodes are in the brushing area. + * + * @param {Array} selection - A d3 selection matrix with svg coordinates showing the selected space + * @param {Boolean} end - A variable which tests if the brushing is over or not + * + */ + + var brushedNodes = []; + + if(selection){ + //calculate brushed points + for(var i = 0; i < _data["numberOfTrees"]; i++){ + nodes = _data['trees'][i].descendants(); + nodes.forEach(function(d){ + if(selection[0][0] <= d.yMainG && selection[1][0] >= d.yMainG + && selection[0][1] <= d.xMainG && selection[1][1] >= d.xMainG){ + brushedNodes.push(d); + } + }) + } + + //update if end + if(end){ + //call update selected + this.updateSelected(brushedNodes); + } + } + else{ + this.updateSelected([]); + } + + }, + updateTooltip: function(nodes){ + /** + * Updates the model with new tooltip information based on user selection + * + * @param {Array} nodes - A list of selected nodes + * + */ + + if(nodes.length > 0){ + var longestName = 0; + nodes.forEach(function (d) { + var nodeData = d.data.frame.name + ': ' + d.data.metrics.time + 's (' + d.data.metrics["time (inc)"] + 's inc)'; + if (nodeData.length > longestName) { + longestName = nodeData.length; + } + }); + _data["tipText"] = _printNodeData(nodes); + } + else{ + _data["tipText"] = '

Click a node or "Select nodes" to see more info

'; + } + }, + changeMetric: function(newMetric){ + /** + * Changes the currently selected metric in the model. + * + * @param {String} newMetric - the most recently selected metric + * + */ + + _state["selectedMetric"] = newMetric; + _observers.notify(); + }, + changeColorScheme: function(){ + /** + * Changes the current color scheme to inverse or regular. Updates the view + * + */ + + //loop through the possible color schemes + _state["colorScheme"] = (_state["colorScheme"] + 1) % _data["colors"].length; + _observers.notify(); + }, + updateLegends: function(){ + /** + * Toggles between divergent or unified legends. Updates the view + * + */ + //loop through legend configruations + _state["legend"] = (_state["legend"] + 1) % _data["legends"].length; + _observers.notify(); + }, + updateActiveTrees: function(activeTree){ + /** + * Sets which tree is currently "active" in the model. Updates the view. + * + */ + _state["activeTree"] = activeTree; + _observers.notify(); + }, + updateNodeLocations: function(index, transformation){ + /** + * Transforms the x and y values of nodes based on transformations + * applied to their parent group + * + * @param {Number} index - Index of the tree who's nodes are being updated + * @param {Object} transformation - The current transformation matrix (CTM) of an parent group + * + */ + _data["trees"][index].descendants().forEach(function(d, i) { + // This function gets the absolute location for each point based on the relative + // locations of the points based on transformations + // the margins were being added into the .e and .f values so they have to be subtracted + // I think they come from the margins being added into the "main group" when it is created + // We can brush regardless of zoom or pan + // Adapted from: https://stackoverflow.com/questions/18554224/getting-screen-positions-of-d3-nodes-after-transform + d.yMainG = transformation.e + d.y0*transformation.d + d.x0*transformation.c - globals.layout.margin.left; + d.xMainG = transformation.f + d.y0*transformation.b + d.x0*transformation.a - globals.layout.margin.top; + }); + } + } + } + + var createMenuView = function(elem, model){ + /** + * View class for the menu portion of the visualization + * + * @param {DOMElement} elem - The current cell of the calling jupyter notebook + * @param {Model} model - The model object + */ + + let _observers = makeSignaller(); + var rootNodeNames = model.data["rootNodeNames"]; + var metricColumns = model.data["metricColumns"]; + var brushOn = model.state["brushOn"]; + + + //initialize bounds for svg + var width = element.clientWidth - globals.layout.margin.right - globals.layout.margin.left; + var height = globals.treeHeight * (model.data["numberOfTrees"] + 1); + + // ---------------------------------------------- + // Create HTML interactables + // ---------------------------------------------- + const htmlInputs = d3.select(elem).insert('div', '.canvas').attr('class','html-inputs'); + + htmlInputs.append('label').attr('for', 'metricSelect').text('Color by:'); + var metricInput = htmlInputs.append("select") //element + .attr("id", "metricSelect") + .selectAll('option') + .data(metricColumns) + .enter() + .append('option') + .text(d => d) + .attr('value', d => d); + document.getElementById("metricSelect").style.margin = "10px 10px 10px 0px"; + + htmlInputs.append('label').style('margin', '0 0 0 10px').attr('for', 'treeRootSelect').text(' Display:'); + var treeRootInput = htmlInputs.append("select") //element + .attr("id", "treeRootSelect") + .selectAll('option') + .data(rootNodeNames) + .enter() + .append('option') + .attr('selected', d => d.includes('Show all trees') ? "selected" : null) + .text(d => d) + .attr('value', (d, i) => i + "|" + d); + + document.getElementById("treeRootSelect").style.margin = "10px 10px 10px 10px"; + + d3.select(elem).select('#treeRootSelect') + .on('change', function () { + _observers.notify({ + type: globals.signals.TREECHANGE, + display: this.value + }); + }); + + // ---------------------------------------------- + // Create SVG and SVG-based interactables + // ---------------------------------------------- + + //make an svg in the scope of the current + // element/drawing space + var _svg = d3.select(elem).append('svg').attr('class','inputCanvas'); + + + var brushButton = _svg.append('g') + .attr('id', 'selectButton') + .append('rect') + .attr('width', '80px') + .attr('height', '15px') + .attr('x', 0).attr('y', 0).attr('rx', 5) + .style('fill', '#ccc') + .on('click', function () { + _observers.notify({ + type: globals.signals.TOGGLEBRUSH + }) + }); + var brushButtonText = d3.select(elem).select('#selectButton').append('text') + .attr("x", 3) + .attr("y", 12) + .text('Select nodes') + .attr("font-family", "sans-serif") + .attr("font-size", "12px") + .attr('cursor', 'pointer') + .on('click', function () { + _observers.notify({ + type: globals.signals.TOGGLEBRUSH + }) + }); + + var colorButton = _svg.append('g') + .attr('id', 'colorButton') + .append('rect') + .attr('width', '90px') + .attr('height', '15px') + .attr('x', 90).attr('y', 0).attr('rx', 5) + .style('fill', '#ccc'); + + var colorButtonText = d3.select(elem).select('#colorButton').append('text') + .attr("x", 93) + .attr("y", 12) + .text(function(){ + return `Colors: ${model.data["colors"][model.state["colorScheme"]]}` + }) + .attr("font-family", "sans-serif") + .attr("font-size", "12px") + .attr('cursor', 'pointer') + .on('click', function () { + _observers.notify({ + type: globals.signals.COLORCLICK + }) + }); + + var unifyLegends = _svg.append('g') + .attr('id', 'unifyLegends') + .append('rect') + .attr('width', '100px') + .attr('height', '15px') + .attr('x', 190) + .attr('y', 0) + .attr('rx', 5) + .style('fill', '#ccc'); + var legendText = d3.select(elem).select('#unifyLegends').append('text') + .attr("x", 195) + .attr("y", 12) + .text(function(){ return `Legends: ${model.data["legends"][model.state["legend"]]}`}) + .attr("font-family", "sans-serif") + .attr("font-size", "12px") + .attr('cursor', 'pointer') + .on('click', function () { + _observers.notify({ + type: globals.signals.LEGENDCLICK + }); + }); + + _svg.attr('height', '15px').attr('width', width); + + + // ---------------------------------------------- + // Define and set d3 callbacks for changes + // ---------------------------------------------- + var brush = d3.brush() + .extent([[0, 0], [2 * width, 2 * (height + globals.layout.margin.top + globals.layout.margin.bottom)]]) + .on('brush', function(){ + _observers.notify({ + type: globals.signals.BRUSH, + selection: d3.event.selection, + end: false + }) + }) + .on('end', function(){ + _observers.notify({ + type: globals.signals.BRUSH, + selection: d3.event.selection, + end: true + }) + }); + + const gBrush = d3.select("#mainG").append('g') + .attr('class', 'brush') + .call(brush); + + + //When metricSelect is changed (metric_col) + d3.select(element).select('#metricSelect') + .on('change', function () { + _observers.notify({ + type: globals.signals.METRICCHANGE, + newMetric: this.value + }) + }); + + return{ + register: function(s){ + _observers.add(s); + }, + render: function(){ + /** + * Core call for drawing menu related screen elements + */ + + let selectedMetric = model.state["selectedMetric"]; + let brushOn = model.state["brushOn"]; + let curColor = model.state["colorScheme"]; + let colors = model.data["colors"]; + let curLegend = model.state["legend"]; + let legends = model.data["legends"]; + + //Remove brush and reset if active + d3.selectAll('.brush').remove(); + + //updates + brushButton.style("fill", function(){ + if(brushOn > 0){ + return "black"; + } + else{ + return "#ccc"; + } + }) + .attr('cursor', 'pointer'); + + brushButtonText.style("fill", function(){ + if(brushOn > 0){ + return "white"; + } + else{ + return "black"; + } + }) + .attr('cursor', 'pointer'); + + + //add brush if there should be one + if(brushOn > 0){ + d3.select("#mainG").append('g') + .attr('class', 'brush') + .call(brush); + } + + colorButtonText + .text(function(){ + return `Colors: ${colors[curColor]}`; + }) + + legendText + .text(function(){ + return `Legends: ${legends[curLegend]}`; + }) + } + } + } + + var createChartView = function(elem, model){ + let _observers = makeSignaller(); + var _colorManager = makeColorManager(model); + var forestData = model.data["forestData"]; + var width = elem.clientWidth - globals.layout.margin.right - globals.layout.margin.left; + var height = globals.layout.margin.top + globals.layout.margin.bottom; + var _margin = globals.layout.margin; + var _nodeRadius = 30; + var treeLayoutHeights = []; + + + var svg = d3.select(elem) + .append('svg') + .attr("class", "canvas") + .attr("width", width) + .attr("height", height); + + //layout variables + var spreadFactor = 0; + var legendOffset = 0; + var maxHeight = 0; + var chartOffset = 0; + var treeOffset = 0; + var minmax = []; + + + + function diagonal(s, d) { + /** + * Creates a curved diagonal path from parent to child nodes + * + * @param {Object} s - parent node + * @param {Object} d - child node + * + */ + + let path = `M ${s.y} ${s.x} + C ${(s.y + d.y) / 2} ${s.x}, + ${(s.y + d.y) / 2} ${d.x}, + ${d.y} ${d.x}` + + return path + } + + function _getMinxMaxxFromTree(root){ + /** + * Get the minimum x value and maximum x value from a tree layout + * Used for calculating canvas offsets before drawing + * + * @param {Object} root - The root node of the working tree + */ + + var obj = {} + var min = Infinity; + var max = -Infinity; + root.descendants().forEach(function(d){ + max = Math.max(d.x, max); + min = Math.min(d.x, min); + }) + + obj.min = min; + obj.max = max; + + return obj; + } + + function _getHeightFromTree(root){ + /** + * Get the vertical space required to draw the tree + * by subtracting the min x value from the maximum + * + * @param {Object} root - The root node of the working tree + */ + let minmax = _getMinxMaxxFromTree(root); + let min = minmax["min"]; + let max = minmax["max"]; + + return max - min; + } + + // -------------------------------------------------------------- + // Initialize layout before first render + // -------------------------------------------------------------- + + var mainG = svg.append("g") + .attr('id', "mainG") + .attr("transform", "translate(" + globals.layout.margin.left + "," + 0 + ")"); + + var tree = d3.tree().nodeSize([_nodeRadius, _nodeRadius]); + + // Find the tallest tree for layout purposes (used to set a uniform spreadFactor) + for (var treeIndex = 0; treeIndex < forestData.length; treeIndex++) { + var currentTreeData = forestData[treeIndex]; + var currentRoot = d3.hierarchy(currentTreeData, d => d.children); + + currentRoot.x0 = height; + currentRoot.y0 = _margin.left; + + var currentTree = tree(currentRoot); + + if (currentTree.height > maxHeight) { + maxHeight = currentTree.height; + } + + model.addTree(currentTree); + + treeLayoutHeights.push(_getHeightFromTree(currentRoot)); + minmax.push(_getMinxMaxxFromTree(currentRoot)) + } + + //layout variables + spreadFactor = width / (maxHeight + 1); + + // Add a group and tree for each tree in the current forest + for (var treeIndex = 0; treeIndex < forestData.length; treeIndex++) { + model.updateforestStats(treeIndex); + + var currentTree = model.getTree(treeIndex); + var newg = mainG.append("g") + .attr('class', 'group-' + treeIndex + ' subchart') + .attr('tree_id', treeIndex) + .attr("transform", "translate(" + _margin.left + "," + chartOffset + ")"); + + const legGroup = newg + .append('g') + .attr('class', 'legend-grp-' + treeIndex) + .attr('transform', 'translate(0, 0)'); + + const legendGroups = legGroup.selectAll("g") + .data([0, 1, 2, 3, 4, 5]) + .enter() + .append('g') + .attr('class', 'legend legend' + treeIndex) + .attr('transform', (d, i) => { + const y = 18 * i; + return "translate(-20, " + y + ")"; + }); + const legendRects = legendGroups.append('rect') + .attr('class', 'legend legend' + treeIndex) + .attr('x', 0) + .attr('y', 0) + .attr('height', 15) + .attr('width', 10) + .style('stroke', 'black'); + const legendText = legendGroups.append('text') + .attr('class', 'legend legend' + treeIndex) + .attr('x', 12) + .attr('y', 13) + .text("0.0 - 0.0") + .style('font-family', 'monospace') + .style('font-size', '12px'); + + legendOffset = legGroup.node().getBBox().height; + + + //make an invisible rectangle for zooming on + newg.append('rect') + .attr('height', treeLayoutHeights[treeIndex]) + .attr('width', width) + .attr('fill', 'rgba(0,0,0,0)'); + + //put tree itself into a group + newg.append('g') + .attr('class', 'chart') + .attr('chart-id', treeIndex) + .attr('height', globals.treeHeight) + .attr('width', width) + .attr('fill', 'rgba(0,0,0,0)'); + + //Create d3 zoom element and affix to each tree individually + var zoom = d3.zoom().on("zoom", function (){ + let zoomObj = d3.select(this).selectAll(".chart"); + + zoomObj.attr("transform", d3.event.transform); + + //update for scale view + _observers.notify({ + type: globals.signals.ZOOM, + index: zoomObj.attr("chart-id"), + transformation: zoomObj.node().getCTM() + }) + }); + + newg.call(zoom) + .on("dblclick.zoom", null); + + //X value where tree should start being drawn + treeOffset = 0 + legendOffset + _margin.top; + + //Initialize nodes with x/y data based on their current location + model.updateNodes(treeIndex, + function(n){ + // Normalize for fixed-depth. + n.forEach(function (d) { + d.x = d.x + treeOffset - minmax[treeIndex]["min"]; + d.y = (d.depth * spreadFactor); + + d.x0 = d.x; + d.y0 = d.y; + + // Store the overall position based on group + d.xMainG = d.x + chartOffset; + d.yMainG = d.y + _margin.left; + + d.xMainG0 = d.xMainG; + d.yMainG0 = d.yMainG; + }); + } + ); + + newg.style("display", "inline-block"); + } //end for-loop "add tree" + + + + return{ + register: function(s){ + _observers.add(s); + }, + render: function(){ + /** + * Core render function for the chart portion of the view, including legends + * Called from the model with observers.notify + * + */ + + chartOffset = _margin.top; + height = _margin.top + _margin.bottom; + + //render for any number of trees + for(var treeIndex = 0; treeIndex < model.data["numberOfTrees"]; treeIndex++){ + + let lastClicked = model.state["lastClicked"]; + + var source = d3.hierarchy(model.data["forestData"][treeIndex], d => d.children); + var selectedMetric = model.state["selectedMetric"]; + var nodes = model.getNodesFromMap(treeIndex); + var links = model.getLinksFromMap(treeIndex); + var chart = svg.selectAll('.group-' + treeIndex); + var tree = chart.selectAll('.chart'); + + // --------------------------------------------- + // ENTER + // --------------------------------------------- + // Update the nodes… + var i = 0; + var node = tree.selectAll("g.node") + .data(nodes, function (d) { + return d.id || (d.id = ++i); + }); + + // Enter any new nodes at the parent's previous position. + var nodeEnter = node.enter().append('g') + .attr('class', 'node') + .attr("transform", () => {return "translate(" + lastClicked.y + "," + lastClicked.x + ")"}) + .on("click", function(d){ + _observers.notify({ + type: globals.signals.CLICK, + node: d + }) + }) + .on('dblclick', function (d) { + _observers.notify({ + type: globals.signals.DBLCLICK, + node: d, + tree: treeIndex + }) + }); + + nodeEnter.append("circle") + .attr('class', 'circleNode') + .attr("r", 1e-6) + .style("fill", function (d) { + if(model.state["legend"] == globals.UNIFIED){ + return _colorManager.calcColorScale(d.data.metrics[selectedMetric], -1); + } + return _colorManager.calcColorScale(d.data.metrics[selectedMetric], treeIndex); + }) + .style('stroke-width', '1px') + .style('stroke', 'black'); + + //Append text to nodes + nodeEnter.append("text") + .attr("x", function (d) { + return d.children || model.state['collapsedNodes'].includes(d) ? -13 : 13; + }) + .attr("dy", ".75em") + .attr("text-anchor", function (d) { + return d.children || model.state['collapsedNodes'].includes(d) ? "end" : "start"; + }) + .text(function (d) { + if(!d.children){ + return d.data.name; + } + else if(d.children.length == 1){ + return ""; + } + else { + return d.data.name.slice(0,5) + "..."; + } + }) + .style("font", "12px monospace"); + + + + // links + var link = tree.selectAll("path.link") + .data(links, function (d) { + return d.id; + }); + + // Enter any new links at the parent's previous position. + var linkEnter = link.enter().insert("path", "g") + .attr("class", "link") + .attr("d", function (d) { + var o = {x: nodes[0].x, y: nodes[0].y}; + return diagonal(o, o); + }) + .attr('fill', 'none') + .attr('stroke', '#ccc') + .attr('stroke-width', '2px'); + + + // --------------------------------------------- + // Updates + // --------------------------------------------- + var nodeUpdate = nodeEnter.merge(node); + var linkUpdate = linkEnter.merge(link); + + // Chart updates + chart + .transition() + .duration(globals.duration) + .attr("transform", function(){ + if(model.state["activeTree"].includes(model.data["rootNodeNames"][treeIndex+1])){ + return `translate(${_margin.left}, ${_margin.top})`; + } + else { + return `translate(${_margin.left}, ${chartOffset})`; + } + }) + .style("display", function(){ + if(model.state["activeTree"].includes("Show all trees")){ + return "inline-block"; + } + else if(model.state["activeTree"].includes(model.data["rootNodeNames"][treeIndex+1])){ + return "inline-block"; + } + else { + return "none"; + } + }); + + //legend updates + chart.selectAll(".legend rect") + .transition() + .duration(globals.duration) + .attr('fill', function (d, i) { + return _colorManager.getColorLegend(treeIndex)[d]; + }) + .attr('stroke', 'black'); + + chart.selectAll('.legend text') + .transition() + .duration(globals.duration) + .text((d) => { return _colorManager.getLegendDomains(treeIndex)[6 - d - 1] + ' - ' + _colorManager.getLegendDomains(treeIndex)[6 - d]; }); + + + // Transition links to their new position. + linkUpdate.transition() + .duration(globals.duration) + .attr("d", function (d) { + return diagonal(d, d.parent); + }); + + + // Transition nodes to their new position. + nodeUpdate.transition() + .duration(globals.duration) + .attr("transform", function (d) { + return `translate(${d.y}, ${d.x})`; + }); + + nodeUpdate.select('circle.circleNode') + .attr("r", 5) + .style('stroke', function(d){ + if (model.state['collapsedNodes'].includes(d)){ + return "#89c3e0"; + } + else{ + return 'black'; + } + }) + .style("stroke-dasharray", function (d) { + return model.state['collapsedNodes'].includes(d) ? '4' : '0'; + }) //lightblue + .style('stroke-width', function(d){ + if (model.state['collapsedNodes'].includes(d)){ + return '6px'; + } + else if (model.state['selectedNodes'].includes(d)){ + return '4px'; + } + else { + return '1px'; + } + }) + .attr('cursor', 'pointer') + .transition() + .duration(globals.duration) + .style('fill', function (d) { + if(model.state["legend"] == globals.UNIFIED){ + return _colorManager.calcColorScale(d.data.metrics[selectedMetric], -1); + } + return _colorManager.calcColorScale(d.data.metrics[selectedMetric], treeIndex); + + }) + + nodeUpdate.select('text') + .attr("x", function (d) { + return d.children || model.state['collapsedNodes'].includes(d) ? -13 : 13; + }) + .attr("dy", ".75em") + .attr("text-anchor", function (d) { + return d.children || model.state['collapsedNodes'].includes(d) ? "end" : "start"; + }) + .text(function (d) { + if(!d.children){ + return d.data.name; + } + else if(d.children.length == 1){ + return ""; + } + else { + return d.data.name.slice(0,5) + "..."; + } + }) + .style("font", "12px monospace") + .attr("fill", "black"); + + + + // --------------------------------------------- + // Exit + // --------------------------------------------- + // Transition exiting nodes to the parent's new position. + var nodeExit = node.exit().transition() + .duration(globals.duration) + .attr("transform", function (d) { + return "translate(" + lastClicked.y + "," + lastClicked.x + ")"; + }) + .remove(); + + nodeExit.select("circle") + .attr("r", 1e-6); + + nodeExit.select("text") + .style("fill-opacity", 1); + + // Transition exiting links to the parent's new position. + var linkExit = link.exit().transition() + .duration(globals.duration) + .attr("d", function (d) { + var o = {x: source.x, y: source.y}; + return diagonal(o, o); + }) + .remove(); + + chartOffset = treeLayoutHeights[treeIndex] + treeOffset + _margin.top; + height += chartOffset; + } + + svg.attr("height", height); + } + } + + } + + var createTooltipView = function(elem, model){ + /** + * Class that instantiates the view for the tooltip that appears with selected nodes. + * + * @param {DOM Element} elem - The current cell of the calling Jupyter notebook + * @param {Model} model - The model object containg data for the view + */ + var _observers = makeSignaller(); + var _tooltip = d3.select(elem).append("div") + .attr('id', 'tooltip') + .style('position', 'absolute') + .style('top', '5px') + .style('right', '15px') + .style('padding', '5px') + .style('border-radius', '5px') + .style('background', '#ccc') + .style('color', 'black') + .style('font-size', '14px') + .style('font-family', 'monospace') + .html('

Click a node or "Select nodes" to see more info

'); + + return { + register: function(s){ + _observers.add(s); + }, + render: function(){ + _tooltip.html(model.data["tipText"]); + } + } + } + + // --------------------------------------------- + // Main driver area + // --------------------------------------------- + + //model + var model = createModel(); + //controller + var controller = createController(model); + //views + var menu = createMenuView(element, model); + var tooltip = createTooltipView(element, model); + var chart = createChartView(element, model); + + //render all views one time + menu.render(); + tooltip.render(); + chart.render(); + + //register signallers with each class + // tooltip is not interactive so + // it does not need a signaller yet + menu.register(controller.dispatch); + chart.register(controller.dispatch); + + model.register(menu.render); + model.register(chart.render); + model.register(tooltip.render); + +})(element); diff --git a/hatchet/vis/styles/boxplot.css b/hatchet/vis/styles/boxplot.css deleted file mode 100644 index e69de29b..00000000 diff --git a/hatchet/vis/styles/cct.css b/hatchet/vis/styles/cct.css deleted file mode 100644 index e69de29b..00000000 diff --git a/hatchet/vis/templates/boxplot.html b/hatchet/vis/templates/boxplot.html deleted file mode 100644 index e69de29b..00000000 diff --git a/hatchet/vis/webpack.config.js b/hatchet/vis/webpack.config.js index e69de29b..9b02ab06 100644 --- a/hatchet/vis/webpack.config.js +++ b/hatchet/vis/webpack.config.js @@ -0,0 +1,41 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const path = require('path'); + +module.exports = { + module:{ + rules:[ + { + test: /\.css$/i, + use: ["style-loader", "css-loader"] + }, + { + test: /\.(js|jsx)$/, + exclude: /node_modules/, + loader: 'babel-loader', + options:{ + cwd: path.resolve(__dirname), + presets:["@babel/preset-env"] + } + } + ] + }, + entry: { + cct: [path.resolve(__dirname,'scripts/cct.js')], + }, + output: { + publicPath: path.resolve(__dirname, 'static'), + filename: '[name]_bundle.js', + path: path.resolve(__dirname, 'static') + }, + optimization: { + minimize: false + }, + plugins:[ + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, 'templates/cct.html'), + chunks: ['cct'], + filename: 'cct_bundle.html' + }) + ], + mode: 'production' +} \ No newline at end of file From 283c937a1927f82222e67d6302ef931aba25097c Mon Sep 17 00:00:00 2001 From: Connor Date: Thu, 9 Dec 2021 15:22:26 -0700 Subject: [PATCH 21/29] Update to hatchet.vis.external for roundtrip retrieval --- hatchet/vis/__init__.py | 1 - hatchet/vis/external/__init__.py | 1 + hatchet/vis/loader.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hatchet/vis/__init__.py b/hatchet/vis/__init__.py index 16ae2804..8b137891 100644 --- a/hatchet/vis/__init__.py +++ b/hatchet/vis/__init__.py @@ -1,2 +1 @@ -from .external.roundtrip.roundtrip.manager import Roundtrip diff --git a/hatchet/vis/external/__init__.py b/hatchet/vis/external/__init__.py index e69de29b..e9a68dc5 100644 --- a/hatchet/vis/external/__init__.py +++ b/hatchet/vis/external/__init__.py @@ -0,0 +1 @@ +from .roundtrip.roundtrip.manager import Roundtrip diff --git a/hatchet/vis/loader.py b/hatchet/vis/loader.py index ac1c84ce..0d0f4795 100644 --- a/hatchet/vis/loader.py +++ b/hatchet/vis/loader.py @@ -1,5 +1,5 @@ from IPython.core.magic import Magics, magics_class, line_magic -from hatchet.vis import Roundtrip as RT +from hatchet.vis.external import Roundtrip as RT from hatchet import GraphFrame from os import path from os.path import dirname From 4f6f2193f7fe522df29b6fb1ac9b6497bd2b3c98 Mon Sep 17 00:00:00 2001 From: Connor Date: Wed, 15 Dec 2021 20:45:02 -0700 Subject: [PATCH 22/29] Should be working for python 2 and 3; with a warning to Python 2 users --- docs/examples/tutorial/roundtrip-demo.ipynb | 381 +- hatchet/external/__init__.py | 4 + hatchet/{vis => }/external/roundtrip/LICENSE | 0 hatchet/{vis => }/external/roundtrip/NOTICE | 0 .../{vis => }/external/roundtrip/README.md | 0 .../{vis => }/external/roundtrip/__init__.py | 0 .../{vis => }/external/roundtrip/package.json | 0 .../external/roundtrip/pyproject.toml | 0 hatchet/external/roundtrip/requirements.txt | 5 + hatchet/external/roundtrip/roundtrip.py | 136 - .../external/roundtrip/roundtrip/__init__.py | 0 .../external/roundtrip/roundtrip/manager.py | 173 +- .../external/roundtrip/roundtrip/roundtrip.js | 1 - .../roundtrip/roundtrip/tests/data/test.html | 6 + .../roundtrip/roundtrip/tests/data/test.js | 7 + .../roundtrip/roundtrip/tests/rt_test.py | 99 + .../external/roundtrip/roundtrip/version.py | 2 + hatchet/external/roundtrip/roundtripTree.js | 1422 --- hatchet/{vis => }/external/roundtrip/setup.py | 12 +- hatchet/vis/__init__.py | 1 - hatchet/vis/external/__init__.py | 1 - .../vis/external/roundtrip/package-lock.json | 7773 ----------------- .../vis/external/roundtrip/requirements.txt | 2 - .../external/roundtrip/roundtrip/version.py | 2 - hatchet/vis/loader.py | 39 +- hatchet/vis/scripts/cct.js | 27 +- 26 files changed, 631 insertions(+), 9462 deletions(-) rename hatchet/{vis => }/external/roundtrip/LICENSE (100%) rename hatchet/{vis => }/external/roundtrip/NOTICE (100%) rename hatchet/{vis => }/external/roundtrip/README.md (100%) rename hatchet/{vis => }/external/roundtrip/__init__.py (100%) rename hatchet/{vis => }/external/roundtrip/package.json (100%) rename hatchet/{vis => }/external/roundtrip/pyproject.toml (100%) create mode 100644 hatchet/external/roundtrip/requirements.txt delete mode 100644 hatchet/external/roundtrip/roundtrip.py rename hatchet/{vis => }/external/roundtrip/roundtrip/__init__.py (100%) rename hatchet/{vis => }/external/roundtrip/roundtrip/manager.py (76%) rename hatchet/{vis => }/external/roundtrip/roundtrip/roundtrip.js (99%) create mode 100644 hatchet/external/roundtrip/roundtrip/tests/data/test.html create mode 100644 hatchet/external/roundtrip/roundtrip/tests/data/test.js create mode 100644 hatchet/external/roundtrip/roundtrip/tests/rt_test.py create mode 100644 hatchet/external/roundtrip/roundtrip/version.py delete mode 100644 hatchet/external/roundtrip/roundtripTree.js rename hatchet/{vis => }/external/roundtrip/setup.py (88%) delete mode 100644 hatchet/vis/external/__init__.py delete mode 100644 hatchet/vis/external/roundtrip/package-lock.json delete mode 100644 hatchet/vis/external/roundtrip/requirements.txt delete mode 100644 hatchet/vis/external/roundtrip/roundtrip/version.py diff --git a/docs/examples/tutorial/roundtrip-demo.ipynb b/docs/examples/tutorial/roundtrip-demo.ipynb index f5aa0108..9286ba69 100644 --- a/docs/examples/tutorial/roundtrip-demo.ipynb +++ b/docs/examples/tutorial/roundtrip-demo.ipynb @@ -15,28 +15,354 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/javascript": [ + "var Roundtrip_Obj = {};\n", + "var refresh_cycle = false;\n", + "var clicked_cell = null;\n", + "var cached_cells = Jupyter.notebook.get_cell_elements();\n", + "\n", + "/**\n", + " * @name unindentPyCode\n", + " * @description Removes leading indentations from a python code string.\n", + " * \n", + " * @param {string} code Python code in string form\n", + " * @returns Passed code string but with no leading indentations\n", + " */\n", + "function unindentPyCode(code){\n", + " let uicode = code.split('\\n');\n", + " let indent = 0;\n", + "\n", + " uicode.forEach((l,i, arr)=>{\n", + " if(i == 0){\n", + " indent = l.search(/\\S/);\n", + " }\n", + " arr[i] = l.slice(indent);\n", + " })\n", + " uicode = uicode.join('\\n');\n", + " return uicode;\n", + "}\n", + "\n", + "/**\n", + " * @name buildPythonAssignment\n", + " * @description Builds up a python code string which assigns javascript data back into jypyter notebook namespace\n", + " * \n", + " * @param {string} val This is data assigned back to the python code\n", + " * @param {string} py_var This is the variable into which val is assigned\n", + " * @param {string} converter This is a definition of a python function which translates data back to the desired format\n", + " * @returns The python code to be run in the jupyter shell\n", + " */\n", + "function buildPythonAssignment(val, py_var, converter){\n", + " // console.log(val, py_var, converter);\n", + " var holder = `'${val}'`;\n", + " var code = `${unindentPyCode(converter.code)}`\n", + " code += `\\ntmp = ${holder}`;\n", + " code += `\\n${py_var} = ${converter.name}(tmp)`\n", + "\n", + " return code\n", + "}\n", + "\n", + "/**\n", + " * @name manageNewCell\n", + " * \n", + " * @description Increments all two way bound cell ids by the number of new cells which proceed them. \n", + " * Ex. Adding one cell at position 2 will increment a bound cell at position 3 from 3->4. \n", + " * \n", + " * @param {array} newCells A list of our current cells in the notebook to be compared against cached cells\n", + " * @param {} obj The current roundtrip object containing all data bindings\n", + " */\n", + "function manageNewCell(newCells, obj){\n", + " let newIds = [];\n", + "\n", + " Object.keys(newCells).forEach(function(i){\n", + " if(!Object.values(cached_cells).includes(newCells[i]) && !isNaN(i)){\n", + " newIds.push(i);\n", + " }\n", + " });\n", + "\n", + " //increment all bindings past each new id\n", + " for(let js_var in obj){\n", + " for(let id of newIds){\n", + " for(let key in obj[js_var][\"two_way\"]){\n", + " obj[js_var][\"two_way\"][key].forEach((two_way_id, i) => {\n", + " if(two_way_id > id){\n", + " obj[js_var][\"two_way\"][key][i] += 1;\n", + " }\n", + " });\n", + " }\n", + " } \n", + " }\n", + "\n", + " cached_cells = newCells;\n", + "}\n", + "\n", + "function manageDeletedCell(newCells, obj){\n", + " let deletedId = null;\n", + " \n", + " for(i of Object.keys(cachedCells)){\n", + " if (cached_cells[i] !== newCells[i]){\n", + " deletedId = i;\n", + " break;\n", + " }\n", + " }\n", + "\n", + "}\n", + "\n", + "\n", + "function bindClickDetectToCells(){\n", + " let cells = Jupyter.notebook.get_cell_elements();\n", + "\n", + " for(let i in Object.keys(cells)){\n", + " let cell = cells[i];\n", + "\n", + " if(cell !== undefined){\n", + " cell.addEventListener('mousedown', () => {\n", + " clicked_cell = i;\n", + " }, true)\n", + " }\n", + " }\n", + "}\n", + "\n", + "bindClickDetectToCells();\n", + "\n", + "/**\n", + " * @name RT_Handler\n", + " * @description A wrapper for our roundtrip object. It is called as a proxy for the\n", + " * roundtrip object defined above. This enables us to define custom call backs for\n", + " * gets and sets on the roundtrip object. The custom set handles necessary data conversion,\n", + " * the registering of two-way bound variables and automatic updating of watched cells. The get\n", + " * allows users to interact with the underlying object without worrying about the proxy.\n", + " */\n", + "var RT_Handler = {\n", + " set(obj, prop, value){\n", + " //Do cell housekeeping\n", + "\n", + "\n", + " //Initial pass of value into roundtrip object\n", + " // from python code; there may be multiple different\n", + " // visualizations of the same type we need to catch\n", + " if (typeof value === 'object' && value.hasOwnProperty('origin') && value.origin == 'INIT'){\n", + " \n", + " /**\n", + " * In this code block we need to check if there is already a \n", + " * an array of id's which are two way bound already defined and \n", + " * add to it or remove from it\n", + " */\n", + " let ida = Jupyter.notebook.get_selected_index()-1;\n", + " value.id = ida;\n", + " let new_val = value;\n", + "\n", + " // Block updating bindings while jupyter is running\n", + " if(refresh_cycle){\n", + " new_val = obj[prop];\n", + " new_val.data = value.data;\n", + " return Reflect.set(obj, prop, new_val);\n", + " }\n", + "\n", + " /**\n", + " * The broad case where we are updating bindings \n", + " * on existing data\n", + " */\n", + " if(obj[prop] != undefined){\n", + " new_val = obj[prop];\n", + " new_val.data = value.data;\n", + " new_val.converter = value.converter;\n", + "\n", + " // If there is no two way array, create one\n", + " // Else push on our new id\n", + " if(value.two_way === true){\n", + " if(!Object.keys(new_val.two_way).includes(value['python_var'])){\n", + " new_val.two_way[value['python_var']] = [];\n", + " }\n", + "\n", + " let pybinding = new_val.two_way[value['python_var']];\n", + "\n", + " if(!pybinding.includes(value.id)){\n", + " pybinding.push(value.id);\n", + " }\n", + "\n", + " }\n", + "\n", + " //Deregister a cell id from being two-way bound now\n", + " else if(value.two_way === false && Object.keys(new_val.two_way).includes(value['python_var'])){\n", + " let pybinding = new_val.two_way[value['python_var']];\n", + " const index = pybinding.indexOf(value.id);\n", + " \n", + " if (index > -1) {\n", + " pybinding.splice(index, 1);\n", + " }\n", + " }\n", + " }\n", + "\n", + " //Initalize a new two-way object if\n", + " // one did not exist\n", + " else{\n", + " if(new_val.two_way == true){\n", + " new_val.two_way = {};\n", + " new_val.two_way[value['python_var']] = [value.id];\n", + " }\n", + " else{\n", + " new_val.two_way = {};\n", + " }\n", + " delete new_val.id;\n", + " delete new_val.from_py;\n", + " delete new_val.python_var;\n", + " }\n", + "\n", + " return Reflect.set(obj, prop, new_val);\n", + " }\n", + " //Assignment from javascript code\n", + " else {\n", + " // TODO: make the py/js data identification object a\n", + " // formal class\n", + " if(obj[prop] === undefined){\n", + " obj[prop] = {\n", + " two_way: {},\n", + " origin: \"JS\",\n", + " data: null,\n", + " python_var: \"\",\n", + " converter: null,\n", + " type: typeof(value)\n", + " }\n", + " }\n", + "\n", + " var execable_cells = [];\n", + " let origin = 'STANDARD';\n", + " let python_var = '';\n", + "\n", + " if (typeof value === 'object' && \n", + " value.hasOwnProperty('origin') && \n", + " value.origin == 'PYASSIGN'){\n", + "\n", + " origin = value.origin;\n", + " python_var = value.python_var;\n", + " value = value.data;\n", + " }\n", + "\n", + " //TODO: Replace with imported, webpacked D3\n", + " require(['https://d3js.org/d3.v4.min.js'], function(d3) {\n", + "\n", + " // When 2 way bound this calls automatically when something changes\n", + " if (obj[prop] !== undefined && Object.keys(obj[prop][\"two_way\"]).length > 0){\n", + "\n", + " let current_cell = Number(clicked_cell);\n", + " let py_var = '';\n", + "\n", + " //ust set the data without updating if our current cell is not two way bound\n", + " if(origin == 'STANDARD'){\n", + " let found = false;\n", + " for(let key in obj[prop][\"two_way\"]){\n", + " if (obj[prop][\"two_way\"][key].includes(current_cell)){\n", + " found = true;\n", + " py_var = key;\n", + " }\n", + " }\n", + "\n", + " if(!found){\n", + " return Reflect.set(obj[prop], \"data\", value);\n", + " }\n", + " }\n", + "\n", + "\n", + " if(origin == 'PYASSIGN'){\n", + " py_var = python_var;\n", + " }\n", + "\n", + "\n", + " /**\n", + " * We now have a list of registered cells we can execute.\n", + " * So we look through our javascript variables to see if they\n", + " * are bound to the same py variable as our current assignment\n", + " * TODO: Make this list update when cells are moved up or down\n", + " */\n", + "\n", + " for(let js_var in obj){\n", + " let boundpyvars = Object.keys(obj[js_var][\"two_way\"]);\n", + "\n", + " if(boundpyvars.includes(py_var)){\n", + " let clls = obj[js_var][\"two_way\"][py_var].filter(x => x != current_cell );\n", + " execable_cells = execable_cells.concat(clls);\n", + " }\n", + " }\n", + "\n", + " if(origin == 'STANDARD'){\n", + " // TODO:THROW AN ERROR IF CONVERTER == NONE\n", + " const code = buildPythonAssignment(value, py_var, obj[prop][\"converter\"]);\n", + " \n", + " //TODO: Turn this into a function that manages error reporting and printing\n", + " Jupyter.notebook.kernel.execute(code, { \n", + " shell:{\n", + " reply: function(r){\n", + " //consider putting this in a reserved jupyter variable\n", + " if(r.content.status == 'error'){\n", + " console.error(`${r.content.ename} in JS->Python coversion:\\n ${r.content.evalue}`)\n", + " }\n", + " }\n", + " }\n", + " });\n", + " }\n", + "\n", + " refresh_cycle = true;\n", + " Jupyter.notebook.execute_cells(execable_cells);\n", + "\n", + " /**\n", + " * Test every half second to see if some of the\n", + " * jupyter cells are still running. Avoids a race condition\n", + " * where incorrect ids were stored in our roundtrip object.\n", + " */\n", + " const test_running = function(){\n", + " let runtest = d3.selectAll(\".running\");\n", + " if(runtest.empty()){\n", + " refresh_cycle = false;\n", + " return;\n", + " }\n", + " else{\n", + " setTimeout(test_running, 500);\n", + " }\n", + " }\n", + "\n", + " test_running();\n", + " }\n", + "\n", + " });\n", + " } \n", + "\n", + " return Reflect.set(obj[prop], \"data\", value);\n", + " },\n", + " get(obj, prop, reciever){\n", + " let ret = obj[prop].data\n", + " return ret; \n", + " }\n", + "}\n", + "\n", + "window.Roundtrip = new Proxy(Roundtrip_Obj, RT_Handler);\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: Your Roundtrip visualizations may not load properly. Roundtrip only supports Python Version 3.x.x. You are using Python v2.7.18\n" + ] + } + ], "source": [ "import os, sys\n", "from IPython.display import HTML, display\n", "\n", "import hatchet as ht\n", "\n", - "# This is the relative path from the notebook to Roundtrip files in hatchet/external/roundtrip/\n", - "roundtrip_path = '../../../hatchet/external/roundtrip/'\n", - "\n", - "# Add the path so that the notebook can find the Roundtrip extension\n", - "module_path = os.path.abspath(os.path.join(roundtrip_path)) \n", - "if module_path not in sys.path:\n", - " sys.path.append(module_path)\n", - " \n", - "# Uncomment this line to widen the cells to handle large trees \n", - "#display(HTML(\"\"))\n", - "\n", - "# Load the Roundtrip extension. This only needs to be loaded once.\n", - "%load_ext roundtrip" + "%load_ext hatchet.vis.loader" ] }, { @@ -174,7 +500,7 @@ }, "outputs": [], "source": [ - "%loadVisualization roundtrip_path literal_tree" + "%cct literal_tree" ] }, { @@ -194,7 +520,7 @@ "outputs": [], "source": [ "# Execute this cell first to populate myQuery with your selection\n", - "%fetchData myQuery" + "%cct_fetch_query myQuery" ] }, { @@ -441,7 +767,7 @@ }, "outputs": [], "source": [ - "%loadVisualization roundtrip_path multiple_roots" + "%cct multiple_roots" ] }, { @@ -451,7 +777,7 @@ "outputs": [], "source": [ "# Execute this cell first to load anotherQuery\n", - "%fetchData anotherQuery" + "%cct_fetch_query anotherQuery" ] }, { @@ -491,25 +817,32 @@ "\n", "print(multi_sgf.tree())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "py2_env", "language": "python", - "name": "python3" + "name": "py2_env" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.5" + "pygments_lexer": "ipython2", + "version": "2.7.18" } }, "nbformat": 4, diff --git a/hatchet/external/__init__.py b/hatchet/external/__init__.py index 37d5369c..36263be5 100644 --- a/hatchet/external/__init__.py +++ b/hatchet/external/__init__.py @@ -2,3 +2,7 @@ # Hatchet Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: MIT + +from .roundtrip.roundtrip.manager import Roundtrip + +Roundtrip diff --git a/hatchet/vis/external/roundtrip/LICENSE b/hatchet/external/roundtrip/LICENSE similarity index 100% rename from hatchet/vis/external/roundtrip/LICENSE rename to hatchet/external/roundtrip/LICENSE diff --git a/hatchet/vis/external/roundtrip/NOTICE b/hatchet/external/roundtrip/NOTICE similarity index 100% rename from hatchet/vis/external/roundtrip/NOTICE rename to hatchet/external/roundtrip/NOTICE diff --git a/hatchet/vis/external/roundtrip/README.md b/hatchet/external/roundtrip/README.md similarity index 100% rename from hatchet/vis/external/roundtrip/README.md rename to hatchet/external/roundtrip/README.md diff --git a/hatchet/vis/external/roundtrip/__init__.py b/hatchet/external/roundtrip/__init__.py similarity index 100% rename from hatchet/vis/external/roundtrip/__init__.py rename to hatchet/external/roundtrip/__init__.py diff --git a/hatchet/vis/external/roundtrip/package.json b/hatchet/external/roundtrip/package.json similarity index 100% rename from hatchet/vis/external/roundtrip/package.json rename to hatchet/external/roundtrip/package.json diff --git a/hatchet/vis/external/roundtrip/pyproject.toml b/hatchet/external/roundtrip/pyproject.toml similarity index 100% rename from hatchet/vis/external/roundtrip/pyproject.toml rename to hatchet/external/roundtrip/pyproject.toml diff --git a/hatchet/external/roundtrip/requirements.txt b/hatchet/external/roundtrip/requirements.txt new file mode 100644 index 00000000..72c9616b --- /dev/null +++ b/hatchet/external/roundtrip/requirements.txt @@ -0,0 +1,5 @@ +numpy +pandas +beautifulsoup4 +ipython +pathlib \ No newline at end of file diff --git a/hatchet/external/roundtrip/roundtrip.py b/hatchet/external/roundtrip/roundtrip.py deleted file mode 100644 index 9b5aeb00..00000000 --- a/hatchet/external/roundtrip/roundtrip.py +++ /dev/null @@ -1,136 +0,0 @@ -from __future__ import print_function -from IPython.core.magic import Magics, magics_class, line_magic -from IPython.display import HTML, Javascript, display - -""" - File: roundtrip.py - Purpose: Pass data between Jupyter Python cells and - Javascript variables. - Hatchet-specific. -""" - - -@magics_class -class Roundtrip(Magics): - - # Note to self: Custom magic classes MUST call parent's constructor - def __init__(self, shell): - super(Roundtrip, self).__init__(shell) - self.id_number = 0 - # Clean up namespace function - display( - HTML( - "" - ) - ) - - inputType = { - "js": "text/javascript", - "csv": "text/csv", - "html": "text/html", - "json": "text/json", - "css": "text/css", - } - codeMap = {} - - @line_magic - def loadVisualization(self, line): - # Get command line args for loading the vis - args = line.split(" ") - name = "roundtripTreeVis" + str(self.id_number) - path = "" - if '"' in args[0]: - path = args[0].replace('"', "") - elif "'" in args[0]: - path = args[0].replace("'", "") - else: - # Path is a variable from the nb namespace - path = self.shell.user_ns[args[0]] - - fileAndPath = "" - if path[-1] == "/": - fileAndPath = path + "roundtripTree.js" - else: - fileAndPath = path + "/roundtripTree.js" - - javascriptFile = open(fileAndPath).read() - - # Source input files - # Set up the object to map input files to what javascript expects - argList = "" - - displayObj = display(HTML(argList), display_id=True) - - args[1] = self.shell.user_ns[args[1]] - displayObj.update(Javascript('argList.push("' + str(args[1]) + '")')) - - # Check that users provided a tree literal - if not isinstance(args[1], list): - print( - """The argument is not a tree literal or it is not a valid Python list. Please check that you have provided a list of nodes and nested children of the following form to loadVisualization: - literal_tree = [{ - "frame": {"name": "foo", "type": "function"}, - "metrics": {"time (inc)": 130.0, "time": 0.0}, - "children":[ . . . ] - }, - { - "frame": {"name": "bar", "type": "function"}, - "metrics": {"time (inc)": 30.0, "time": 0.0}, - "children":[ . . . ] - }] - """ - ) - raise Exception("Bad argument") - - # Get curent cell id - self.codeMap[name] = javascriptFile - - preRun = """ - // Grab current context - elementTop = element.get(0);""" - displayObj.update(Javascript(preRun)) - - self.runVis(name, javascriptFile) - self.id_number += 1 - - def runVis(self, name, javascriptFile): - name = "roundtripTreeVis" + str(self.id_number) - - javascriptExport = """ -
-
- - """.format( - name, str(name), javascriptFile - ) - display(HTML(javascriptExport)) - - @line_magic - def fetchData(self, dest): - # added eval() to 'execute' the JS list-as-string as a Python list - - hook = ( - """ - var holder = jsNodeSelected; - holder = '"' + holder + '"'; - IPython.notebook.kernel.execute('""" - + str(dest) - + """ = '+ eval(holder)); - //console.log('""" - + str(dest) - + """ = '+ holder); - """ - ) - - display(Javascript(hook)) - - return display(Javascript(hook)) - - -# Function to make module loading possible -def load_ipython_extension(ipython): - ipython.register_magics(Roundtrip) diff --git a/hatchet/vis/external/roundtrip/roundtrip/__init__.py b/hatchet/external/roundtrip/roundtrip/__init__.py similarity index 100% rename from hatchet/vis/external/roundtrip/roundtrip/__init__.py rename to hatchet/external/roundtrip/roundtrip/__init__.py diff --git a/hatchet/vis/external/roundtrip/roundtrip/manager.py b/hatchet/external/roundtrip/roundtrip/manager.py similarity index 76% rename from hatchet/vis/external/roundtrip/roundtrip/manager.py rename to hatchet/external/roundtrip/roundtrip/manager.py index 630b7a8e..2af0870d 100644 --- a/hatchet/vis/external/roundtrip/roundtrip/manager.py +++ b/hatchet/external/roundtrip/roundtrip/manager.py @@ -6,9 +6,8 @@ import tokenize import json import inspect -import pathlib import os - +import sys def _default_converter(data): @@ -30,6 +29,7 @@ def _default_converter(data): return json.dumps(data) elif "DataFrame" in str(type(data)) or "Series" in str(type(data)): return data.to_json() + return data @@ -59,7 +59,7 @@ class RoundTrip: to the roundtrip object in roundtrip.js. """ - def __init__(self, ipy_shell=get_ipython()): + def __init__(self, ipy_shell=get_ipython(), test=False): """ Initialize our singelton roundtrip instance. @@ -67,6 +67,14 @@ def __init__(self, ipy_shell=get_ipython()): TODO: Throw an error if attempting to run outside of a Jupyter notebook. """ + + if sys.version_info[0] < 3: + print( + "Warning: Your Roundtrip visualizations may not load properly. Roundtrip only supports Python v3.x.x. You are using Python v{}.{}.{}".format( + sys.version_info[0], sys.version_info[1], sys.version_info[2] + ) + ) + self.shell = ipy_shell self.tags = { "script": "", @@ -78,14 +86,19 @@ def __init__(self, ipy_shell=get_ipython()): self.watched = {} self.scrid = 0 self.relative_html_caches = {} + self.istest = test - js_directory = pathlib.Path(__file__).parent.resolve() + js_directory = os.path.dirname(os.path.realpath(__file__)) # Load the javascript roundtrip object upon creation of the python object - with open(js_directory.joinpath("roundtrip.js"), "r") as f: + with open(os.path.join(js_directory, "roundtrip.js"), "r") as f: script = f.read() - display(Javascript(script)) + if test is not True: + display(Javascript(script)) + else: + self.rt_js = Javascript(script) + display(self.rt_js) script_map = {"csv": "text/csv", "json": "text/json"} @@ -119,27 +132,25 @@ def load_webpack(self, file, cache=True): """ output_html = "" - #use generic javascript loading for these now - if (cache is False or file not in self.relative_html_caches): + # use generic javascript loading for these now + if cache is False or file not in self.relative_html_caches: output_html += self._file_formatter(file) - html = BeautifulSoup(output_html, 'html.parser') - scripts = [] - for tag in html.select('script'): + html = BeautifulSoup(output_html, "html.parser") + for tag in html.select("script"): # TODO: Add option for server based loading with this # So JS can be dynamically loaded # tag['src'] = os.path.relpath(tag['src'], self.shell.user_ns['_dh'][0]) t = tag.extract() - with open(t['src']) as f: + with open(t["src"]) as f: src = f.read() - scrpt = html.new_tag('script') + scrpt = html.new_tag("script") scrpt.string = src - html.select('head')[0].append(scrpt) + html.select("head")[0].append(scrpt) output_html = str(html) - self.relative_html_caches[file] = {'html': output_html} + self.relative_html_caches[file] = {"html": output_html} else: - output_html = self.relative_html_caches[file]['html'] - + output_html = self.relative_html_caches[file]["html"] # This line is needed to expose the current `element` to the webpack bundled scripts as though # the scripts were run using display(Javascript()). @@ -151,7 +162,7 @@ def load_webpack(self, file, cache=True): ) output_html = scope_var + output_html - bdg = Bridge(output_html, ipy_shell=self.shell) + bdg = Bridge(output_html, ipy_shell=self.shell, test=self.istest) self.scrid += 1 @@ -182,7 +193,11 @@ def load_web_files(self, files): id=self.scrid ) - locator_script = 'var element = document.getElementById("locator-{id}").parentNode;'.format(id=self.scrid) + locator_script = ( + 'var element = document.getElementById("locator-{id}").parentNode;'.format( + id=self.scrid + ) + ) output_html += scope_tag scripts.append(locator_script) @@ -195,10 +210,7 @@ def load_web_files(self, files): else: output_html += self._file_formatter(file) - - - - bdg = Bridge(output_html, scripts, self.shell) + bdg = Bridge(output_html, scripts, self.shell, self.istest) # bdg.add_javascript("cells = Jupyter.notebook.get_cell_elements();") @@ -293,7 +305,6 @@ def var_to_js( if jup_var not in self.shell.user_ns: self.shell.user_ns[jup_var] = None - data = self.shell.user_ns[jup_var] self.bridges[self.last_id].pass_to_js( @@ -345,16 +356,6 @@ def manage_jupter_change(self): }})();\n""" code = "" - - # TODO: FIX BUG WHICH MAKES THIS CODE BLOCK READ AS AN ASSIGNMENT - ''' - subselection = [] - rng = ranges - for r in rng: - subselection += rng[r] - - subselection = np.array(subselection) - ''' for var in self.watched.keys(): for i, token in enumerate(tokens): if token.string == var: @@ -378,16 +379,15 @@ def manage_jupter_change(self): code += update_hook.format(js_var=var, data=new_data, var=flag) if code != "": display(Javascript(code)) - - def fetch_data(self, js_var, ipy_var): + def fetch_data(self, js_var, ipy_var, converter=_default_from_converter): """ Retrieves data from the javascript Roundtrip object. :param js_var: String containing the key in the Javascript roundtrip object where the desired data can be found :param ipy_var: A String containing the name of a variable in the Jupyter notebook namespace where the retrieved data can be stored """ - self.bridges[self.last_id].retrieve_from_js(js_var, ipy_var) + self.bridges[self.last_id].retrieve_from_js(js_var, ipy_var, converter) def initialize(self): """ @@ -398,30 +398,49 @@ def initialize(self): class Bridge: - def __init__(self, html, js=None, ipy_shell=get_ipython()): + def __init__(self, html, js=None, ipy_shell=get_ipython(), test=False): self.html = html self.scripts = js self.shell = ipy_shell self.display = display(HTML(""), display_id=True) self.id = self.display.display_id self.converter = _default_converter - args = [] + self.istest = test + + if self.istest: + self.active_scripts = [] + self.active_html = None def _extract_simple_dt(self, dt_str): return dt_str.split("'")[1] def run(self): - self.display.update(HTML(self.html)) - - if self.scripts is not None: - js_exe = "" - for script in self.scripts: - js_exe += script - - display(Javascript(js_exe)) + if not self.istest: + display(HTML(self.html)) + else: + new_HTML = HTML(self.html) + self.active_html = new_HTML + self.display.update(new_HTML) + + # if self.scripts is not None: + # js_exe = "" + # for script in self.scripts: + # js_exe += script + + # if not self.istest: + # display(Javascript(js_exe)) + # else: + # new_Javascript = Javascript(js_exe) + # self.active_scripts.append(new_Javascript) + # display(new_Javascript) def add_javascript(self, code): - display(Javascript(code)) + if not self.istest: + display(Javascript(code)) + else: + new_Javascript = Javascript(code) + self.active_scripts.append(new_Javascript) + display(new_Javascript) # put down explicit write notification (maybe) # watch errors with user documentation @@ -443,9 +462,9 @@ def pass_to_js( window.Roundtrip[\'{js_var}\'] = {{ \'origin\': \'INIT\', \'two_way\': {binding}, - \'python_var\':\'{py_var}\', - \'type\':\'{type}\', - \'data\':\'{data}\', + \'python_var\':\'{py_var}\', + \'type\':\'{type}\', + \'data\':\'{data}\', \'converter\':{converter}, }}; }})();\n""" @@ -454,17 +473,14 @@ def pass_to_js( datatype = type(data) datatype = self._extract_simple_dt(str(datatype)) - try: - # some default conversion - # we may want to push this off to the application - # developer - if py_to_js_converter == None: - data = self._default_converter(data) - else: - data = py_to_js_converter(data) - self.converter = py_to_js_converter - except: - pass + # some default conversion + # we may want to push this off to the application + # developer + if py_to_js_converter is None: + data = self._default_converter(data) + else: + data = py_to_js_converter(data) + self.converter = py_to_js_converter conv_spec = None @@ -485,18 +501,41 @@ def pass_to_js( ) ) - def retrieve_from_js(self, js_variable, notebook_var): + def retrieve_from_js(self, js_variable, notebook_var, converter): # TODO: add validator(s) + hook_template = """ (function(){{ var holder = Roundtrip['{src}']; holder = `\'${{holder}}\'`; - var code = `{dest} = ${{holder}}`; - IPython.notebook.kernel.execute(code); + var code = {converter_code}; + code += `\n{dest} = {converter_name}(${{holder}})`; + IPython.notebook.kernel.execute(code, {{ + shell:{{ + reply: function(r){{ + //consider putting this in a reserved jupyter variable + if(r.content.status == \'error\'){{ + console.error(`${{r.content.ename}} in JS->Python coversion: \n ${{r.content.evalue}}`); + }} + }} + }} + }} + ); }})() """ - hook = hook_template.format(src=str(js_variable), dest=str(notebook_var)) - display(Javascript(hook)) + hook = hook_template.format( + src=str(js_variable), + dest=str(notebook_var), + converter_code=json.dumps(inspect.getsource(converter)), + converter_name=converter.__name__, + ) + + if not self.istest: + display(Javascript(hook)) + else: + new_Javascript = Javascript(hook) + self.active_scripts.append(new_Javascript) + display(new_Javascript) # self.add_javascript(hook) diff --git a/hatchet/vis/external/roundtrip/roundtrip/roundtrip.js b/hatchet/external/roundtrip/roundtrip/roundtrip.js similarity index 99% rename from hatchet/vis/external/roundtrip/roundtrip/roundtrip.js rename to hatchet/external/roundtrip/roundtrip/roundtrip.js index 1bebf92c..309fd2d1 100644 --- a/hatchet/vis/external/roundtrip/roundtrip/roundtrip.js +++ b/hatchet/external/roundtrip/roundtrip/roundtrip.js @@ -311,7 +311,6 @@ var RT_Handler = { return Reflect.set(obj[prop], "data", value); }, get(obj, prop, reciever){ - // console.log("Get: ",...arguments); let ret = obj[prop].data return ret; } diff --git a/hatchet/external/roundtrip/roundtrip/tests/data/test.html b/hatchet/external/roundtrip/roundtrip/tests/data/test.html new file mode 100644 index 00000000..77d1346a --- /dev/null +++ b/hatchet/external/roundtrip/roundtrip/tests/data/test.html @@ -0,0 +1,6 @@ + + + + +
Loaded successfully.
+ \ No newline at end of file diff --git a/hatchet/external/roundtrip/roundtrip/tests/data/test.js b/hatchet/external/roundtrip/roundtrip/tests/data/test.js new file mode 100644 index 00000000..82d1f92d --- /dev/null +++ b/hatchet/external/roundtrip/roundtrip/tests/data/test.js @@ -0,0 +1,7 @@ +RT = window.Roundtrip; + +data_from_py = RT["data_from_py"] + +data_to_py = data_from_py + 10 + +RT["to_py"] = data_to_py \ No newline at end of file diff --git a/hatchet/external/roundtrip/roundtrip/tests/rt_test.py b/hatchet/external/roundtrip/roundtrip/tests/rt_test.py new file mode 100644 index 00000000..a52901af --- /dev/null +++ b/hatchet/external/roundtrip/roundtrip/tests/rt_test.py @@ -0,0 +1,99 @@ +import os +import sys +from IPython.testing.globalipapp import start_ipython + +from hatchet.external.roundtrip.roundtrip.manager import RoundTrip + +no_rt = False +if sys.version_info[0] < 3: + no_rt = True + +local_dir = os.path.dirname(os.path.abspath(__file__)) + +ip = start_ipython() + +if not no_rt: + RT = RoundTrip(ipy_shell=ip, test=True) + + +def test_init_load_web_files(): + if not no_rt: + # verify that the RT Javascript was loaded + assert ( + open(os.path.join(local_dir, "../roundtrip.js"), "r").read() + in RT.rt_js._repr_javascript_() + ) + + # test loading multiple files + RT.load_web_files( + [ + str(os.path.join(local_dir, "data/test.html")), + str(os.path.join(local_dir, "data/test.js")), + ] + ) + + assert len(RT.bridges) != 0 + + RT.initialize() + + for b in RT.bridges: + for s in RT.bridges[b].active_scripts: + assert ( + open(os.path.join(local_dir, "data/test.js"), "r").read() + in s._repr_javascript_() + ) + + +def test_data_transfer(): + if not no_rt: + js_var_down = "data_from_py" + js_var_up = "data_to_py" + + RT.data_to_js(5, js_variable=js_var_down) + RT.fetch_data(js_var_up, "retrieved_from_js") + + down = False + up = False + + for b in RT.bridges: + for s in RT.bridges[b].active_scripts: + if ( + "window.Roundtrip['{}']".format(js_var_down) + in s._repr_javascript_() + ): + down = True + elif "Roundtrip['{}']".format(js_var_up) in s._repr_javascript_(): + up = True + + assert down is True + assert up is True + + +def test_var_transfer(): + if not no_rt: + js_var_down = "var_from_py" + js_var_up = "var_to_py" + py_var = "var_test" + + down = False + up = False + + # load a var in the user namespace + ip.run_cell(raw_cell="{} = 1".format(py_var)) + + RT.var_to_js(py_var, js_variable=js_var_down) + RT.fetch_data(js_var_up, "retrieved_from_js") + + for b in RT.bridges: + for s in RT.bridges[b].active_scripts: + if ( + "window.Roundtrip['{}']".format(js_var_down) + in s._repr_javascript_() + and py_var in s._repr_javascript_() + ): + down = True + elif "Roundtrip['{}']".format(js_var_up) in s._repr_javascript_(): + up = True + + assert down is True + assert up is True diff --git a/hatchet/external/roundtrip/roundtrip/version.py b/hatchet/external/roundtrip/roundtrip/version.py new file mode 100644 index 00000000..9256d55b --- /dev/null +++ b/hatchet/external/roundtrip/roundtrip/version.py @@ -0,0 +1,2 @@ +__version_info__ = ("0", "2", "1") +__version__ = ".".join(__version_info__) diff --git a/hatchet/external/roundtrip/roundtripTree.js b/hatchet/external/roundtrip/roundtripTree.js deleted file mode 100644 index 765e06e0..00000000 --- a/hatchet/external/roundtrip/roundtripTree.js +++ /dev/null @@ -1,1422 +0,0 @@ - -//d3.v4 -(function (element) { - require(['https://d3js.org/d3.v4.min.js'], function (d3) { - const globals = Object.freeze({ - UNIFIED: 0, - DEFAULT: 0, - signals: { - CLICK: "CLICK", - DBLCLICK: "DBLCLICK", - BRUSH: "BRUSH", - TOGGLEBRUSH: "TOGGLEBRUSH", - COLLAPSE: "COLLAPSE", - METRICCHANGE: "METRICCHANGE", - TREECHANGE: "TREECHANGE", - COLORCLICK: "COLORCLICK", - LEGENDCLICK: "LEGENDCLICK", - ZOOM: "ZOOM" - }, - layout: { - margin: {top: 20, right: 20, bottom: 20, left: 20}, - }, - duration: 750, - treeHeight: 300 - }); - - jsNodeSelected = "['*']"; - - var makeColorManager = function(model){ - - var _regularColors = [ - ['#006d2c', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#edf8e9'], //green - ['#a50f15', '#de2d26', '#fb6a4a', '#fc9272', '#fcbba1', '#fee5d9'], //red - ['#08519c', '#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#eff3ff'], //blue - ['#54278f', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#f2f0f7'], //purple - ['#a63603', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#feedde'], //orange - ['#252525', '#636363', '#969696', '#bdbdbd', '#d9d9d9', '#f7f7f7']]; //black - - var _invertColors = [ - ['#edf8e9', '#c7e9c0', '#a1d99b', '#74c476', '#31a354', '#006d2c'], //green - ['#fee5d9', '#fcbba1', '#fc9272', '#fb6a4a', '#de2d26', '#a50f15'], //red - ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#3182bd', '#08519c'], //blue - ['#f2f0f7', '#dadaeb', '#bcbddc', '#9e9ac8', '#756bb1', '#54278f'], //purple - ['#feedde', '#fdd0a2', '#fdae6b', '#fd8d3c', '#e6550d', '#a63603'], //orange - ['#f7f7f7', '#d9d9d9', '#bdbdbd', '#969696', '#636363', '#252525']]; //black - - - var _allTreesColors = ['#d73027', '#fc8d59', '#fee090', '#e0f3f8', '#91bfdb', '#4575b4']; - var _invertedAllTreesColors = ['#4575b4', '#91bfdb', '#e0f3f8', '#fee090', '#fc8d59', '#d73027']; - - let _state = model.state; - let _forestMinMax = model.data["forestMinMax"]; - let _modelForestStats = model.data["forestStats"]; - - return { - setColors: function(treeIndex){ - /** - * Sets the color pallet per tree to be either inverse or regular or unified/unique to each tree - * - * @param {Int} treeIndex - The index of the current tree's colors being set - */ - - var colorSchemeUsed; - - if (treeIndex == -1) { //all trees are displayed - if (_state["colorScheme"] == 0) { - colorSchemeUsed = _allTreesColors; - } else { - colorSchemeUsed = _invertedAllTreesColors; - } - } - else { //single tree is displayed - if (_state["colorScheme"] == 0) { - colorSchemeUsed = _regularColors[treeIndex]; - } else { - colorSchemeUsed = _invertColors[treeIndex]; - } - } - - return colorSchemeUsed; - }, - getLegendDomains: function(treeIndex){ - /** - * Sets the min and max of the legend. - * - * @param {Int} treeIndex - The index of the current tree's legend being set - */ - - var colorScaleDomain; - var metricRange; - var curMetric = _state["selectedMetric"]; - - // so hacky: need to fix later - if (model.data["legends"][_state["legend"]].includes("Unified")) { - treeIndex = -1; - } - - if (treeIndex == -1) { //unified color legend - metricRange = _forestMinMax[curMetric].max - _forestMinMax[curMetric].min; - colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map(function (x) { - return x * metricRange + _forestMinMax[curMetric].min; - }); - } - else{ - metricRange = _modelForestStats[treeIndex][curMetric].max - _modelForestStats[treeIndex][curMetric].min; - colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map(function (x) { - return x * metricRange + _modelForestStats[treeIndex][curMetric].min; - }); - } - - return colorScaleDomain; - }, - getColorLegend: function(treeIndex) { - /** - * Gets the color scheme used for a legend, contigent on individual tree-specific schemes or one unified color scheme. - * - * @param {Int} treeIndex - The index of the current tree's legend being set - */ - - //hacky need to fix later - if (model.data["legends"][_state["legend"]].includes("Unified")) { - treeIndex = -1; - } - - if (treeIndex == -1) { //unified color legend - var colorSchemeUsed = this.setColors(treeIndex); - - } else { - var colorSchemeUsed = this.setColors(treeIndex); - } - return colorSchemeUsed; - }, - calcColorScale: function(nodeMetric, treeIndex) { - /** - * Calculates the bins for the color scheme based on the current, user-selected metric. - * - * @param {String} nodeMetric - the name of the current metric being mapped to a color range - * @param {Int} treeIndex - The index of the current tree's legend being set - */ - - var curMetric = d3.select(element).select('#metricSelect').property('value'); - var colorSchemeUsed = this.setColors(treeIndex); - - if (treeIndex == -1) { - var metric_range = _forestMinMax[curMetric].max - _forestMinMax[curMetric].min; - var proportion_of_total = (nodeMetric - _forestMinMax[curMetric].min) / metric_range; - } else { - var metric_range = _modelForestStats[treeIndex][curMetric].max - _modelForestStats[treeIndex][curMetric].min; - var proportion_of_total = nodeMetric / 1; - - if (metric_range != 0) { - proportion_of_total = (nodeMetric - _modelForestStats[treeIndex][curMetric].min) / metric_range; - } - } - - if (proportion_of_total > 0.9) { - return colorSchemeUsed[0]; - } - if (proportion_of_total > 0.7) { - return colorSchemeUsed[1]; - } - if (proportion_of_total > 0.5) { - return colorSchemeUsed[2]; - } - if (proportion_of_total > 0.3) { - return colorSchemeUsed[3]; - } - if (proportion_of_total > 0.1) { - return colorSchemeUsed[4]; - } else { - return colorSchemeUsed[5]; - } - } - - } - } - - // This is the makeSignaller from class - var makeSignaller = function() { - let _subscribers = []; // Private member - - // Return the object that's created - return { - // Register a function with the notification system - add: function(handlerFunction) {_subscribers.push(handlerFunction); }, - - // Loop through all registered function and call them with passed - // arguments - notify: function(args) { - for (var i = 0; i < _subscribers.length; i++) { - _subscribers[i](args); - } - } - }; - } - - // Create an object that handles user interaction and events - var createController = function(model) { - var _model = model; - - return { - // All types of events run through a central dispatch - // function. The dispatch function decides what to do. - dispatch: function(evt) { - switch(evt.type) { - case (globals.signals.CLICK): - _model.updateSelected([evt.node]); - break; - case (globals.signals.DBLCLICK): - _model.handleDoubleClick(evt.node,evt.tree); - break; - case(globals.signals.TOGGLEBRUSH): - _model.toggleBrush(); - break; - case (globals.signals.BRUSH): - _model.setBrushedPoints(evt.selection, evt.end); - break; - case (globals.signals.METRICCHANGE): - _model.changeMetric(evt.newMetric); - break; - case(globals.signals.COLORCLICK): - _model.changeColorScheme(); - break; - case(globals.signals.TREECHANGE): - _model.updateActiveTrees(evt.display); - break; - case(globals.signals.LEGENDCLICK): - _model.updateLegends(); - break; - case(globals.signals.ZOOM): - _model.updateNodeLocations(evt.index, evt.transformation); - break; - default: - console.log('Unknown event type', evt.type); - } - } - }; - } - - - var createModel = function(){ - var _observers = makeSignaller(); - - //initialize default data and state - var _data = { - "trees":[], - "legends": ["Unified", "Indiv."], - "colors": ["Default", "Inverted"], - "forestData": null, - "rootNodeNames": [], - "numberOfTrees": 0, - "metricColumns": [], - "forestMinMax": [], - "forestStats": [] - }; - - var _state = { - "selectedNodes":[], - "collapsedNodes":[], - "selectedMetric": [], - "lastClicked": null, - "legend": 0, - "colorScheme": 0, - "brushOn": -1 - }; - - //setup model - var cleanTree = argList[0].replace(/'/g, '"'); - - _data["forestData"] = JSON.parse(cleanTree); - _data["rootNodeNames"].push("Show all trees"); - _data["numberOfTrees"] = _data["forestData"].length; - _data["metricColumns"] = d3.keys(_data["forestData"][0].metrics); - - // pick the first metric listed to color the nodes - _state["selectedMetric"] = _data["metricColumns"][0]; - _state["lastClicked"] = d3.hierarchy(_data["forestData"][0], d => d.children) - _state["activeTree"] = "Show all trees"; - - //forest stats holds statistical descriptions of - // the metrics on each tree in the forest - var _forestStats = []; - var _forestMinMax = {}; - for (var i = 0; i < _data["numberOfTrees"]; i++) { - var thisTree = _data["forestData"][i]; - - // Get tree names for the display select options - _data["rootNodeNames"].push(thisTree.frame.name); - - var thisTreeMetrics = {}; - - // init the min/max for all trees' metricColumns - for(let d of _data["metricColumns"]){ - thisTreeMetrics[d] = { - "min": Number.MAX_VALUE, - "max": Number.MIN_VALUE - } - } - - _forestStats.push(thisTreeMetrics); - } - - for(let d of _data["metricColumns"]) { - _forestMinMax[d] = { - "min": Number.MAX_VALUE, - "max": Number.MIN_VALUE - } - } - - _data["forestMinMax"] = _forestMinMax; - _data["forestStats"] = _forestStats; - - // HELPER FUNCTION DEFINTIONS - function _printNodeData(nodeList) { - /** - * To pretty print the node data as a IPython table - * - * @param {Array} nodeList - An array of selected nodes for formatting - */ - - var nodeStr = ''; - var numNodes = nodeList.length; - var metricColumns = model.data["metricColumns"]; - - //lay the nodes out in a table - for (var i = 0; i < metricColumns.length; i++) { - nodeStr += ''; - } - nodeStr += ''; - for (var i = 0; i < numNodes; i++) { - for (var j = 0; j < metricColumns.length; j++) { - if (j == 0) { - nodeStr += ''; - } - else { - nodeStr += nodeList[i].data.metrics[metricColumns[j]]; - } - } - } - nodeStr = nodeStr + '
name' + metricColumns[i] + '
' + nodeList[i].data.frame.name + '' + nodeList[i].data.metrics[metricColumns[j]] + ''; - } - else if (j == metricColumns.length - 1) { - nodeStr += nodeList[i].data.metrics[metricColumns[j]] + '
'; - return nodeStr; - } - - function _printQuery(nodeList) { - /** - * Prints out user selected nodes as a query string which can be used in the GraphFrame.filter() function. - * - * @param {Array} nodeList - An array of selected nodes for formatting - */ - var leftMostNode = {depth: Number.MAX_VALUE, data: {name: 'default'}}; - var rightMostNode = {depth: 0, data: {name: 'default'}}; - var lastNode = ""; - var selectionIsAChain = false; - - for (var i = 0; i < nodeList.length; i++) { - if (nodeList[i].depth < leftMostNode.depth) { - leftMostNode = nodeList[i]; - } - if (nodeList[i].depth > rightMostNode.depth) { - rightMostNode = nodeList[i]; - } - if ((i > 1) && (nodeList[i].x == nodeList[i-1].x)) { - selectionIsAChain = true; - } - else { - selectionIsAChain = false; - } - } - - //do some evaluation for other subtrees - // we could generate python code that does this - var queryStr = "['']"; - if ((nodeList.length > 1) && (selectionIsAChain)) { - // This query is for chains - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'name': '" + rightMostNode.data.frame.name + "'}]"; - } - else if (nodeList.length > 1) { - // This query is for subtrees - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'depth': '<= " + rightMostNode.depth + "' }]"; - } - else { - //Single node query - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}]"; - } - - return queryStr; - } - - - /* Class object created from call to createModel */ - return{ - data: _data, - state: _state, - register: function(s){ - /** - * Registers a signaller (a callback function) to be run with _observers.notify() - * - * @param {Function} s - (a callback function) to be run with _observers.notify() - */ - _observers.add(s); - }, - addTree: function(tm){ - /** - * Pushes a tree into the model. - * - * @param {Object} tm - A d3 tree constructed from a d3 hierarchy - */ - - _data['trees'].push(tm); - }, - getTree: function(index){ - /** - * Retrieves a tree from the model. - * - * @param {Number} index - The index of the tree we want to get - */ - return _data['trees'][index]; - }, - getNodesFromMap: function(index){ - /** - * Retrieves tree nodes from the model - * - * @param {Number} index - The index of the tree nodes we want to get - */ - return _data['trees'][index].descendants(); - }, - getLinksFromMap: function(index){ - /** - * Retrieves tree links from the model - * - * @param {Number} index - The index of the tree links we want to get - */ - return _data['trees'][index].descendants().slice(1); - }, - updateNodes: function(index, f){ - /** - * Updates the nodes in the model according to the passed in callback function. - * - * @param {Number} index - The index of the tree we are updating - * @param {Function} f - The callback function being applied to the nodes - */ - f(_data['trees'][index].descendants()); - }, - updateforestStats: function(index){ - /** - * Updates the local maximum and minimum metrics for a single tree in the forest. - * Updates the global maximum and minimum metrics across all trees in our forest. - * Stores these values in the model. - * - * @param {Number} index - The index of the tree we are updating - */ - - var curTreeData = _forestStats[index]; - for(let metric of _data["metricColumns"]) { - //get local minimum and maximum for our current tree - // for each metric - _data['trees'][index].descendants().forEach(function (d) { - curTreeData[metric].max = Math.max(curTreeData[metric].max, d.data.metrics[metric]); - curTreeData[metric].min = Math.min(curTreeData[metric].min, d.data.metrics[metric]); - }); - - //Update global minimum and maximum per metric - _forestMinMax[metric].max = Math.max(_forestMinMax[metric].max, curTreeData[metric].max); - _forestMinMax[metric].min = Math.min(_forestMinMax[metric].min, curTreeData[metric].min); - } - - _data["forestStats"] = _forestStats; - _data["forestMinMax"] = _forestMinMax; - }, - updateSelected: function(nodes){ - /** - * Updates which nodes are "Selected" by the user in the model - * - * @param {Array} nodes - A list of selected nodes - */ - - _state['selectedNodes'] = nodes; - this.updateTooltip(nodes); - - if(nodes.length > 0){ - jsNodeSelected = _printQuery(nodes); - } else { - jsNodeSelected = "['*']"; - } - - _observers.notify(); - }, - handleDoubleClick: function(d){ - /** - * Handles the model functionlaity of hiding and un-hiding subtrees - * on double click - * - * @param {Object} d - The node which was double clicked - */ - - // if the node is not already collapsed - // keep track of collapsed nodes - if (! _state["collapsedNodes"].includes(d) ){ - _state["collapsedNodes"].push(d); - } - else{ - index = _state["collapsedNodes"].indexOf(d); - _state["collapsedNodes"].splice(index, 1); - } - - //this is kind of a hack for this paradigm - // but it updates the passed data directly - // and hides children nodes triggering update - // when view is re-rendered - if (d.children) { - d._children = d.children; - d.children = null; - } else { - d.children = d._children; - d._children = null; - } - - _state["lastClicked"] = d; - - _observers.notify(); - }, - toggleBrush: function(){ - /** - * Toggles the brushing functionality with a button click - * - */ - - _state["brushOn"] = -_state["brushOn"]; - _observers.notify(); - }, - setBrushedPoints(selection, end){ - /** - * Calculates which nodes are in the brushing area. - * - * @param {Array} selection - A d3 selection matrix with svg coordinates showing the selected space - * @param {Boolean} end - A variable which tests if the brushing is over or not - * - */ - - var brushedNodes = []; - - if(selection){ - //calculate brushed points - for(var i = 0; i < _data["numberOfTrees"]; i++){ - nodes = _data['trees'][i].descendants(); - nodes.forEach(function(d){ - if(selection[0][0] <= d.yMainG && selection[1][0] >= d.yMainG - && selection[0][1] <= d.xMainG && selection[1][1] >= d.xMainG){ - brushedNodes.push(d); - } - }) - } - - //update if end - if(end){ - //call update selected - this.updateSelected(brushedNodes); - } - } - else{ - this.updateSelected([]); - } - - }, - updateTooltip: function(nodes){ - /** - * Updates the model with new tooltip information based on user selection - * - * @param {Array} nodes - A list of selected nodes - * - */ - - if(nodes.length > 0){ - var longestName = 0; - nodes.forEach(function (d) { - var nodeData = d.data.frame.name + ': ' + d.data.metrics.time + 's (' + d.data.metrics["time (inc)"] + 's inc)'; - if (nodeData.length > longestName) { - longestName = nodeData.length; - } - }); - _data["tipText"] = _printNodeData(nodes); - } - else{ - _data["tipText"] = '

Click a node or "Select nodes" to see more info

'; - } - }, - changeMetric: function(newMetric){ - /** - * Changes the currently selected metric in the model. - * - * @param {String} newMetric - the most recently selected metric - * - */ - - _state["selectedMetric"] = newMetric; - _observers.notify(); - }, - changeColorScheme: function(){ - /** - * Changes the current color scheme to inverse or regular. Updates the view - * - */ - - //loop through the possible color schemes - _state["colorScheme"] = (_state["colorScheme"] + 1) % _data["colors"].length; - _observers.notify(); - }, - updateLegends: function(){ - /** - * Toggles between divergent or unified legends. Updates the view - * - */ - //loop through legend configruations - _state["legend"] = (_state["legend"] + 1) % _data["legends"].length; - _observers.notify(); - }, - updateActiveTrees: function(activeTree){ - /** - * Sets which tree is currently "active" in the model. Updates the view. - * - */ - _state["activeTree"] = activeTree; - _observers.notify(); - }, - updateNodeLocations: function(index, transformation){ - /** - * Transforms the x and y values of nodes based on transformations - * applied to their parent group - * - * @param {Number} index - Index of the tree who's nodes are being updated - * @param {Object} transformation - The current transformation matrix (CTM) of an parent group - * - */ - _data["trees"][index].descendants().forEach(function(d, i) { - // This function gets the absolute location for each point based on the relative - // locations of the points based on transformations - // the margins were being added into the .e and .f values so they have to be subtracted - // I think they come from the margins being added into the "main group" when it is created - // We can brush regardless of zoom or pan - // Adapted from: https://stackoverflow.com/questions/18554224/getting-screen-positions-of-d3-nodes-after-transform - d.yMainG = transformation.e + d.y0*transformation.d + d.x0*transformation.c - globals.layout.margin.left; - d.xMainG = transformation.f + d.y0*transformation.b + d.x0*transformation.a - globals.layout.margin.top; - }); - } - } - } - - var createMenuView = function(elem, model){ - /** - * View class for the menu portion of the visualization - * - * @param {DOMElement} elem - The current cell of the calling jupyter notebook - * @param {Model} model - The model object - */ - - let _observers = makeSignaller(); - var rootNodeNames = model.data["rootNodeNames"]; - var metricColumns = model.data["metricColumns"]; - var brushOn = model.state["brushOn"]; - - - //initialize bounds for svg - var width = element.clientWidth - globals.layout.margin.right - globals.layout.margin.left; - var height = globals.treeHeight * (model.data["numberOfTrees"] + 1); - - // ---------------------------------------------- - // Create HTML interactables - // ---------------------------------------------- - const htmlInputs = d3.select(elem).insert('div', '.canvas').attr('class','html-inputs'); - - htmlInputs.append('label').attr('for', 'metricSelect').text('Color by:'); - var metricInput = htmlInputs.append("select") //element - .attr("id", "metricSelect") - .selectAll('option') - .data(metricColumns) - .enter() - .append('option') - .text(d => d) - .attr('value', d => d); - document.getElementById("metricSelect").style.margin = "10px 10px 10px 0px"; - - htmlInputs.append('label').style('margin', '0 0 0 10px').attr('for', 'treeRootSelect').text(' Display:'); - var treeRootInput = htmlInputs.append("select") //element - .attr("id", "treeRootSelect") - .selectAll('option') - .data(rootNodeNames) - .enter() - .append('option') - .attr('selected', d => d.includes('Show all trees') ? "selected" : null) - .text(d => d) - .attr('value', (d, i) => i + "|" + d); - - document.getElementById("treeRootSelect").style.margin = "10px 10px 10px 10px"; - - d3.select(elem).select('#treeRootSelect') - .on('change', function () { - _observers.notify({ - type: globals.signals.TREECHANGE, - display: this.value - }); - }); - - // ---------------------------------------------- - // Create SVG and SVG-based interactables - // ---------------------------------------------- - - //make an svg in the scope of the current - // element/drawing space - var _svg = d3.select(elem).append('svg').attr('class','inputCanvas'); - - - var brushButton = _svg.append('g') - .attr('id', 'selectButton') - .append('rect') - .attr('width', '80px') - .attr('height', '15px') - .attr('x', 0).attr('y', 0).attr('rx', 5) - .style('fill', '#ccc') - .on('click', function () { - _observers.notify({ - type: globals.signals.TOGGLEBRUSH - }) - }); - var brushButtonText = d3.select(elem).select('#selectButton').append('text') - .attr("x", 3) - .attr("y", 12) - .text('Select nodes') - .attr("font-family", "sans-serif") - .attr("font-size", "12px") - .attr('cursor', 'pointer') - .on('click', function () { - _observers.notify({ - type: globals.signals.TOGGLEBRUSH - }) - }); - - var colorButton = _svg.append('g') - .attr('id', 'colorButton') - .append('rect') - .attr('width', '90px') - .attr('height', '15px') - .attr('x', 90).attr('y', 0).attr('rx', 5) - .style('fill', '#ccc'); - - var colorButtonText = d3.select(elem).select('#colorButton').append('text') - .attr("x", 93) - .attr("y", 12) - .text(function(){ - return `Colors: ${model.data["colors"][model.state["colorScheme"]]}` - }) - .attr("font-family", "sans-serif") - .attr("font-size", "12px") - .attr('cursor', 'pointer') - .on('click', function () { - _observers.notify({ - type: globals.signals.COLORCLICK - }) - }); - - var unifyLegends = _svg.append('g') - .attr('id', 'unifyLegends') - .append('rect') - .attr('width', '100px') - .attr('height', '15px') - .attr('x', 190) - .attr('y', 0) - .attr('rx', 5) - .style('fill', '#ccc'); - var legendText = d3.select(elem).select('#unifyLegends').append('text') - .attr("x", 195) - .attr("y", 12) - .text(function(){ return `Legends: ${model.data["legends"][model.state["legend"]]}`}) - .attr("font-family", "sans-serif") - .attr("font-size", "12px") - .attr('cursor', 'pointer') - .on('click', function () { - _observers.notify({ - type: globals.signals.LEGENDCLICK - }); - }); - - _svg.attr('height', '15px').attr('width', width); - - - // ---------------------------------------------- - // Define and set d3 callbacks for changes - // ---------------------------------------------- - var brush = d3.brush() - .extent([[0, 0], [2 * width, 2 * (height + globals.layout.margin.top + globals.layout.margin.bottom)]]) - .on('brush', function(){ - _observers.notify({ - type: globals.signals.BRUSH, - selection: d3.event.selection, - end: false - }) - }) - .on('end', function(){ - _observers.notify({ - type: globals.signals.BRUSH, - selection: d3.event.selection, - end: true - }) - }); - - const gBrush = d3.select("#mainG").append('g') - .attr('class', 'brush') - .call(brush); - - - //When metricSelect is changed (metric_col) - d3.select(element).select('#metricSelect') - .on('change', function () { - _observers.notify({ - type: globals.signals.METRICCHANGE, - newMetric: this.value - }) - }); - - return{ - register: function(s){ - _observers.add(s); - }, - render: function(){ - /** - * Core call for drawing menu related screen elements - */ - - selectedMetric = model.state["selectedMetric"]; - brushOn = model.state["brushOn"]; - curColor = model.state["colorScheme"]; - colors = model.data["colors"]; - curLegend = model.state["legend"]; - legends = model.data["legends"]; - - //Remove brush and reset if active - d3.selectAll('.brush').remove(); - - //updates - brushButton.style("fill", function(){ - if(brushOn > 0){ - return "black"; - } - else{ - return "#ccc"; - } - }) - .attr('cursor', 'pointer'); - - brushButtonText.style("fill", function(){ - if(brushOn > 0){ - return "white"; - } - else{ - return "black"; - } - }) - .attr('cursor', 'pointer'); - - - //add brush if there should be one - if(brushOn > 0){ - d3.select("#mainG").append('g') - .attr('class', 'brush') - .call(brush); - } - - colorButtonText - .text(function(){ - return `Colors: ${colors[curColor]}`; - }) - - legendText - .text(function(){ - return `Legends: ${legends[curLegend]}`; - }) - } - } - } - - var createChartView = function(elem, model){ - let _observers = makeSignaller(); - var _colorManager = makeColorManager(model); - var forestData = model.data["forestData"]; - var width = elem.clientWidth - globals.layout.margin.right - globals.layout.margin.left; - var height = globals.layout.margin.top + globals.layout.margin.bottom; - var _margin = globals.layout.margin; - var _nodeRadius = 30; - var treeLayoutHeights = []; - - - var svg = d3.select(elem) - .append('svg') - .attr("class", "canvas") - .attr("width", width) - .attr("height", height); - - //layout variables - var spreadFactor = 0; - var legendOffset = 0; - var maxHeight = 0; - var chartOffset = 0; - var treeOffset = 0; - var minmax = []; - - - - function diagonal(s, d) { - /** - * Creates a curved diagonal path from parent to child nodes - * - * @param {Object} s - parent node - * @param {Object} d - child node - * - */ - - let path = `M ${s.y} ${s.x} - C ${(s.y + d.y) / 2} ${s.x}, - ${(s.y + d.y) / 2} ${d.x}, - ${d.y} ${d.x}` - - return path - } - - function _getMinxMaxxFromTree(root){ - /** - * Get the minimum x value and maximum x value from a tree layout - * Used for calculating canvas offsets before drawing - * - * @param {Object} root - The root node of the working tree - */ - - var obj = {} - var min = Infinity; - var max = -Infinity; - root.descendants().forEach(function(d){ - max = Math.max(d.x, max); - min = Math.min(d.x, min); - }) - - obj.min = min; - obj.max = max; - - return obj; - } - - function _getHeightFromTree(root){ - /** - * Get the vertical space required to draw the tree - * by subtracting the min x value from the maximum - * - * @param {Object} root - The root node of the working tree - */ - let minmax = _getMinxMaxxFromTree(root); - let min = minmax["min"]; - let max = minmax["max"]; - - return max - min; - } - - // -------------------------------------------------------------- - // Initialize layout before first render - // -------------------------------------------------------------- - - var mainG = svg.append("g") - .attr('id', "mainG") - .attr("transform", "translate(" + globals.layout.margin.left + "," + 0 + ")"); - - var tree = d3.tree().nodeSize([_nodeRadius, _nodeRadius]); - - // Find the tallest tree for layout purposes (used to set a uniform spreadFactor) - for (var treeIndex = 0; treeIndex < forestData.length; treeIndex++) { - var currentTreeData = forestData[treeIndex]; - var currentRoot = d3.hierarchy(currentTreeData, d => d.children); - - currentRoot.x0 = height; - currentRoot.y0 = _margin.left; - - var currentTree = tree(currentRoot); - - if (currentTree.height > maxHeight) { - maxHeight = currentTree.height; - } - - model.addTree(currentTree); - - treeLayoutHeights.push(_getHeightFromTree(currentRoot)); - minmax.push(_getMinxMaxxFromTree(currentRoot)) - } - - //layout variables - spreadFactor = width / (maxHeight + 1); - - // Add a group and tree for each tree in the current forest - for (var treeIndex = 0; treeIndex < forestData.length; treeIndex++) { - model.updateforestStats(treeIndex); - - var currentTree = model.getTree(treeIndex); - var newg = mainG.append("g") - .attr('class', 'group-' + treeIndex + ' subchart') - .attr('tree_id', treeIndex) - .attr("transform", "translate(" + _margin.left + "," + chartOffset + ")"); - - const legGroup = newg - .append('g') - .attr('class', 'legend-grp-' + treeIndex) - .attr('transform', 'translate(0, 0)'); - - const legendGroups = legGroup.selectAll("g") - .data([0, 1, 2, 3, 4, 5]) - .enter() - .append('g') - .attr('class', 'legend legend' + treeIndex) - .attr('transform', (d, i) => { - const y = 18 * i; - return "translate(-20, " + y + ")"; - }); - const legendRects = legendGroups.append('rect') - .attr('class', 'legend legend' + treeIndex) - .attr('x', 0) - .attr('y', 0) - .attr('height', 15) - .attr('width', 10) - .style('stroke', 'black'); - const legendText = legendGroups.append('text') - .attr('class', 'legend legend' + treeIndex) - .attr('x', 12) - .attr('y', 13) - .text("0.0 - 0.0") - .style('font-family', 'monospace') - .style('font-size', '12px'); - - legendOffset = legGroup.node().getBBox().height; - - - //make an invisible rectangle for zooming on - newg.append('rect') - .attr('height', treeLayoutHeights[treeIndex]) - .attr('width', width) - .attr('fill', 'rgba(0,0,0,0)'); - - //put tree itself into a group - newg.append('g') - .attr('class', 'chart') - .attr('chart-id', treeIndex) - .attr('height', globals.treeHeight) - .attr('width', width) - .attr('fill', 'rgba(0,0,0,0)'); - - //Create d3 zoom element and affix to each tree individually - var zoom = d3.zoom().on("zoom", function (){ - let zoomObj = d3.select(this).selectAll(".chart"); - - zoomObj.attr("transform", d3.event.transform); - - //update for scale view - _observers.notify({ - type: globals.signals.ZOOM, - index: zoomObj.attr("chart-id"), - transformation: zoomObj.node().getCTM() - }) - }); - - newg.call(zoom) - .on("dblclick.zoom", null); - - //X value where tree should start being drawn - treeOffset = 0 + legendOffset + _margin.top; - - //Initialize nodes with x/y data based on their current location - model.updateNodes(treeIndex, - function(n){ - // Normalize for fixed-depth. - n.forEach(function (d) { - d.x = d.x + treeOffset - minmax[treeIndex]["min"]; - d.y = (d.depth * spreadFactor); - - d.x0 = d.x; - d.y0 = d.y; - - // Store the overall position based on group - d.xMainG = d.x + chartOffset; - d.yMainG = d.y + _margin.left; - - d.xMainG0 = d.xMainG; - d.yMainG0 = d.yMainG; - }); - } - ); - - newg.style("display", "inline-block"); - } //end for-loop "add tree" - - - - return{ - register: function(s){ - _observers.add(s); - }, - render: function(){ - /** - * Core render function for the chart portion of the view, including legends - * Called from the model with observers.notify - * - */ - - chartOffset = _margin.top; - height = _margin.top + _margin.bottom; - - //render for any number of trees - for(var treeIndex = 0; treeIndex < model.data["numberOfTrees"]; treeIndex++){ - - let lastClicked = model.state["lastClicked"]; - - var source = d3.hierarchy(model.data["forestData"][treeIndex], d => d.children); - var selectedMetric = model.state["selectedMetric"]; - var nodes = model.getNodesFromMap(treeIndex); - var links = model.getLinksFromMap(treeIndex); - var chart = svg.selectAll('.group-' + treeIndex); - var tree = chart.selectAll('.chart'); - - // --------------------------------------------- - // ENTER - // --------------------------------------------- - // Update the nodes… - var i = 0; - var node = tree.selectAll("g.node") - .data(nodes, function (d) { - return d.id || (d.id = ++i); - }); - - // Enter any new nodes at the parent's previous position. - var nodeEnter = node.enter().append('g') - .attr('class', 'node') - .attr("transform", () => {return "translate(" + lastClicked.y + "," + lastClicked.x + ")"}) - .on("click", function(d){ - _observers.notify({ - type: globals.signals.CLICK, - node: d - }) - }) - .on('dblclick', function (d) { - _observers.notify({ - type: globals.signals.DBLCLICK, - node: d, - tree: treeIndex - }) - }); - - nodeEnter.append("circle") - .attr('class', 'circleNode') - .attr("r", 1e-6) - .style("fill", function (d) { - if(model.state["legend"] == globals.UNIFIED){ - return _colorManager.calcColorScale(d.data.metrics[selectedMetric], -1); - } - return _colorManager.calcColorScale(d.data.metrics[selectedMetric], treeIndex); - }) - .style('stroke-width', '1px') - .style('stroke', 'black'); - - //Append text to nodes - nodeEnter.append("text") - .attr("x", function (d) { - return d.children || model.state['collapsedNodes'].includes(d) ? -13 : 13; - }) - .attr("dy", ".75em") - .attr("text-anchor", function (d) { - return d.children || model.state['collapsedNodes'].includes(d) ? "end" : "start"; - }) - .text(function (d) { - if(!d.children){ - return d.data.name; - } - else if(d.children.length == 1){ - return ""; - } - else { - return d.data.name.slice(0,5) + "..."; - } - }) - .style("font", "12px monospace"); - - - - // links - var link = tree.selectAll("path.link") - .data(links, function (d) { - return d.id; - }); - - // Enter any new links at the parent's previous position. - var linkEnter = link.enter().insert("path", "g") - .attr("class", "link") - .attr("d", function (d) { - var o = {x: nodes[0].x, y: nodes[0].y}; - return diagonal(o, o); - }) - .attr('fill', 'none') - .attr('stroke', '#ccc') - .attr('stroke-width', '2px'); - - - // --------------------------------------------- - // Updates - // --------------------------------------------- - var nodeUpdate = nodeEnter.merge(node); - var linkUpdate = linkEnter.merge(link); - - // Chart updates - chart - .transition() - .duration(globals.duration) - .attr("transform", function(){ - if(model.state["activeTree"].includes(model.data["rootNodeNames"][treeIndex+1])){ - return `translate(${_margin.left}, ${_margin.top})`; - } - else { - return `translate(${_margin.left}, ${chartOffset})`; - } - }) - .style("display", function(){ - if(model.state["activeTree"].includes("Show all trees")){ - return "inline-block"; - } - else if(model.state["activeTree"].includes(model.data["rootNodeNames"][treeIndex+1])){ - return "inline-block"; - } - else { - return "none"; - } - }); - - //legend updates - chart.selectAll(".legend rect") - .transition() - .duration(globals.duration) - .attr('fill', function (d, i) { - return _colorManager.getColorLegend(treeIndex)[d]; - }) - .attr('stroke', 'black'); - - chart.selectAll('.legend text') - .transition() - .duration(globals.duration) - .text((d) => { return _colorManager.getLegendDomains(treeIndex)[6 - d - 1] + ' - ' + _colorManager.getLegendDomains(treeIndex)[6 - d]; }); - - - // Transition links to their new position. - linkUpdate.transition() - .duration(globals.duration) - .attr("d", function (d) { - return diagonal(d, d.parent); - }); - - - // Transition nodes to their new position. - nodeUpdate.transition() - .duration(globals.duration) - .attr("transform", function (d) { - return `translate(${d.y}, ${d.x})`; - }); - - nodeUpdate.select('circle.circleNode') - .attr("r", 5) - .style('stroke', function(d){ - if (model.state['collapsedNodes'].includes(d)){ - return "#89c3e0"; - } - else{ - return 'black'; - } - }) - .style("stroke-dasharray", function (d) { - return model.state['collapsedNodes'].includes(d) ? '4' : '0'; - }) //lightblue - .style('stroke-width', function(d){ - if (model.state['collapsedNodes'].includes(d)){ - return '6px'; - } - else if (model.state['selectedNodes'].includes(d)){ - return '4px'; - } - else { - return '1px'; - } - }) - .attr('cursor', 'pointer') - .transition() - .duration(globals.duration) - .style('fill', function (d) { - if(model.state["legend"] == globals.UNIFIED){ - return _colorManager.calcColorScale(d.data.metrics[selectedMetric], -1); - } - return _colorManager.calcColorScale(d.data.metrics[selectedMetric], treeIndex); - - }) - - nodeUpdate.select('text') - .attr("x", function (d) { - return d.children || model.state['collapsedNodes'].includes(d) ? -13 : 13; - }) - .attr("dy", ".75em") - .attr("text-anchor", function (d) { - return d.children || model.state['collapsedNodes'].includes(d) ? "end" : "start"; - }) - .text(function (d) { - if(!d.children){ - return d.data.name; - } - else if(d.children.length == 1){ - return ""; - } - else { - return d.data.name.slice(0,5) + "..."; - } - }) - .style("font", "12px monospace") - .attr("fill", "black"); - - - - // --------------------------------------------- - // Exit - // --------------------------------------------- - // Transition exiting nodes to the parent's new position. - var nodeExit = node.exit().transition() - .duration(globals.duration) - .attr("transform", function (d) { - return "translate(" + lastClicked.y + "," + lastClicked.x + ")"; - }) - .remove(); - - nodeExit.select("circle") - .attr("r", 1e-6); - - nodeExit.select("text") - .style("fill-opacity", 1); - - // Transition exiting links to the parent's new position. - var linkExit = link.exit().transition() - .duration(globals.duration) - .attr("d", function (d) { - var o = {x: source.x, y: source.y}; - return diagonal(o, o); - }) - .remove(); - - chartOffset = treeLayoutHeights[treeIndex] + treeOffset + _margin.top; - height += chartOffset; - } - - svg.attr("height", height); - } - } - - } - - var createTooltipView = function(elem, model){ - /** - * Class that instantiates the view for the tooltip that appears with selected nodes. - * - * @param {DOM Element} elem - The current cell of the calling Jupyter notebook - * @param {Model} model - The model object containg data for the view - */ - var _observers = makeSignaller(); - var _tooltip = d3.select(elem).append("div") - .attr('id', 'tooltip') - .style('position', 'absolute') - .style('top', '5px') - .style('right', '15px') - .style('padding', '5px') - .style('border-radius', '5px') - .style('background', '#ccc') - .style('color', 'black') - .style('font-size', '14px') - .style('font-family', 'monospace') - .html('

Click a node or "Select nodes" to see more info

'); - - return { - register: function(s){ - _observers.add(s); - }, - render: function(){ - _tooltip.html(model.data["tipText"]); - } - } - } - - // --------------------------------------------- - // Main driver area - // --------------------------------------------- - - //model - var model = createModel(); - //controller - var controller = createController(model); - //views - var menu = createMenuView(element, model); - var tooltip = createTooltipView(element, model); - var chart = createChartView(element, model); - - //render all views one time - menu.render(); - tooltip.render(); - chart.render(); - - //register signallers with each class - // tooltip is not interactive so - // it does not need a signaller yet - menu.register(controller.dispatch); - chart.register(controller.dispatch); - - model.register(menu.render); - model.register(chart.render); - model.register(tooltip.render); - - }); - -})(element); diff --git a/hatchet/vis/external/roundtrip/setup.py b/hatchet/external/roundtrip/setup.py similarity index 88% rename from hatchet/vis/external/roundtrip/setup.py rename to hatchet/external/roundtrip/setup.py index 89549f92..9ddbc47f 100644 --- a/hatchet/vis/external/roundtrip/setup.py +++ b/hatchet/external/roundtrip/setup.py @@ -1,4 +1,3 @@ - from setuptools import setup from codecs import open from os import path @@ -26,12 +25,7 @@ author_email="cscullyallison@email.arizona.edu", license="MIT", keywords="", - packages=[ - "roundtrip" - ], - install_requires=[ - "numpy", - "pandas", - ], + packages=["roundtrip"], + install_requires=["numpy", "pandas", "beautifulsoup4", "ipython", "pathlib"], include_package_data=True, -) \ No newline at end of file +) diff --git a/hatchet/vis/__init__.py b/hatchet/vis/__init__.py index 8b137891..e69de29b 100644 --- a/hatchet/vis/__init__.py +++ b/hatchet/vis/__init__.py @@ -1 +0,0 @@ - diff --git a/hatchet/vis/external/__init__.py b/hatchet/vis/external/__init__.py deleted file mode 100644 index e9a68dc5..00000000 --- a/hatchet/vis/external/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .roundtrip.roundtrip.manager import Roundtrip diff --git a/hatchet/vis/external/roundtrip/package-lock.json b/hatchet/vis/external/roundtrip/package-lock.json deleted file mode 100644 index 61e7279a..00000000 --- a/hatchet/vis/external/roundtrip/package-lock.json +++ /dev/null @@ -1,7773 +0,0 @@ -{ - "name": "roundtrip", - "version": "0.2.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "version": "0.2.1", - "license": "ISC", - "dependencies": { - "css-loader": "^6.5.0", - "d3": "^7.0.4", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "style-loader": "^3.3.1" - }, - "devDependencies": { - "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@babel/preset-react": "^7.16.0", - "babel-loader": "^8.2.3", - "html-webpack-plugin": "^5.3.2", - "webpack": "^5.58.2", - "webpack-cli": "^4.9.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", - "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", - "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", - "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", - "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", - "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", - "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", - "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", - "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", - "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", - "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", - "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", - "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", - "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", - "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", - "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", - "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", - "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", - "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", - "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", - "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", - "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", - "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", - "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", - "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", - "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", - "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", - "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", - "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", - "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", - "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", - "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", - "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", - "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", - "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", - "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", - "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", - "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", - "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", - "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", - "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", - "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", - "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", - "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", - "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", - "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", - "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", - "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", - "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", - "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", - "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", - "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", - "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", - "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", - "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", - "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", - "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.3", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", - "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-react-jsx-development": "^7.16.0", - "@babel/plugin-transform-react-pure-annotations": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@types/eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", - "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "node_modules/@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001285", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", - "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-css": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", - "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js-compat": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", - "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", - "dev": true, - "dependencies": { - "browserslist": "^4.18.1", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/d3": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.0.tgz", - "integrity": "sha512-0bh5lPzD6R/I/SjkcgyQlMaIsrZDgh40yMkdJaiZ/58YEbh4zz5EvtjaudzmI6ruwQNvxGm00trYUyPa992NSQ==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", - "integrity": "sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz", - "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", - "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", - "dependencies": { - "jest-worker": "^27.0.6", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true - }, - "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", - "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", - "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", - "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", - "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, - "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - } - }, - "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", - "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", - "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", - "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", - "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", - "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", - "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", - "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", - "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", - "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", - "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", - "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", - "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", - "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", - "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", - "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", - "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", - "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", - "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", - "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", - "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", - "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", - "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", - "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", - "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", - "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", - "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", - "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", - "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", - "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", - "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", - "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", - "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", - "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", - "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", - "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", - "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", - "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", - "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", - "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", - "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", - "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", - "dev": true, - "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.0" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", - "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", - "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", - "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", - "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", - "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", - "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", - "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", - "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", - "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", - "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", - "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.3", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", - "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-react-jsx-development": "^7.16.0", - "@babel/plugin-transform-react-pure-annotations": "^7.16.0" - } - }, - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "to-fast-properties": "^2.0.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", - "dev": true - }, - "@types/eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", - "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "caniuse-lite": { - "version": "1.0.30001285", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", - "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "clean-css": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", - "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js-compat": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", - "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", - "dev": true, - "requires": { - "browserslist": "^4.18.1", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "d3": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.0.tgz", - "integrity": "sha512-0bh5lPzD6R/I/SjkcgyQlMaIsrZDgh40yMkdJaiZ/58YEbh4zz5EvtjaudzmI6ruwQNvxGm00trYUyPa992NSQ==", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "3", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - } - }, - "d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" - }, - "d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } - }, - "d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" - }, - "d3-contour": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-delaunay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", - "requires": { - "delaunator": "5" - } - }, - "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" - }, - "d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - } - }, - "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" - }, - "d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "requires": { - "d3-dsv": "1 - 3" - } - }, - "d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-geo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", - "requires": { - "d3-array": "2.5.0 - 3" - } - }, - "d3-hierarchy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", - "integrity": "sha512-RZWnhsvcrf81F+khYxu2IOfoSwfCGla9je0JQaRIEuPOgJd+3cKdvAYyMXvTt0MDbluiHThYBQzIb0xxXfnqmA==" - }, - "d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "requires": { - "d3-color": "1 - 3" - } - }, - "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" - }, - "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" - }, - "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" - }, - "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" - }, - "d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - } - }, - "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" - }, - "d3-shape": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", - "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", - "requires": { - "d3-path": "1 - 3" - } - }, - "d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" - }, - "d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - } - }, - "d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", - "requires": { - "robust-predicates": "^3.0.0" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "electron-to-chromium": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz", - "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "requires": {} - }, - "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", - "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" - }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "requires": {} - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", - "requires": { - "jest-worker": "^27.0.6", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/hatchet/vis/external/roundtrip/requirements.txt b/hatchet/vis/external/roundtrip/requirements.txt deleted file mode 100644 index ff1ccabb..00000000 --- a/hatchet/vis/external/roundtrip/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -beautifulsoup4 -pycountry_convert diff --git a/hatchet/vis/external/roundtrip/roundtrip/version.py b/hatchet/vis/external/roundtrip/roundtrip/version.py deleted file mode 100644 index ec44a371..00000000 --- a/hatchet/vis/external/roundtrip/roundtrip/version.py +++ /dev/null @@ -1,2 +0,0 @@ -__version_info__ = ("0", "2", "1") -__version__ = ".".join(__version_info__) \ No newline at end of file diff --git a/hatchet/vis/loader.py b/hatchet/vis/loader.py index 0d0f4795..7e1f7ffd 100644 --- a/hatchet/vis/loader.py +++ b/hatchet/vis/loader.py @@ -1,38 +1,55 @@ from IPython.core.magic import Magics, magics_class, line_magic -from hatchet.vis.external import Roundtrip as RT +from hatchet.external import Roundtrip as RT from hatchet import GraphFrame from os import path from os.path import dirname -import json vis_dir = dirname(path.abspath(__file__)) + def _gf_to_json(data): + import json + try: if type(data) is type(GraphFrame): return json.dumps(data.to_literal()) else: return json.dumps(data) - except: + except TypeError: raise "Input data is not of type graphframe or json serializable." - + + +def _query_to_dict(json_query): + import json + + return json.loads(json_query) + @magics_class class CCT(Magics): def __init__(self, shell): super(CCT, self).__init__(shell) - self.vis_dist = path.join(vis_dir, 'static') - - @line_magic + self.vis_dist = path.join(vis_dir, "static") + + @line_magic def cct(self, line): args = line.split(" ") - RT.load_webpack(path.join(self.vis_dist, 'cct_bundle.html'), cache=False) - RT.var_to_js(args[0], "hatchet_tree_def", watch=False, to_js_converter=_gf_to_json) - + RT.load_webpack(path.join(self.vis_dist, "cct_bundle.html"), cache=False) + + RT.var_to_js( + args[0], "hatchet_tree_def", watch=False, to_js_converter=_gf_to_json + ) + RT.initialize() + @line_magic + def cct_fetch_query(self, line): + args = line.split(" ") + + RT.fetch_data("jsNodeSelected", args[0], converter=_query_to_dict) + def load_ipython_extension(ipython): - ipython.register_magics(CCT) \ No newline at end of file + ipython.register_magics(CCT) diff --git a/hatchet/vis/scripts/cct.js b/hatchet/vis/scripts/cct.js index d698d01d..54845686 100644 --- a/hatchet/vis/scripts/cct.js +++ b/hatchet/vis/scripts/cct.js @@ -2,8 +2,7 @@ //d3.v4 import * as d3 from 'd3v4'; - -const RT = window.Roundtrip; +var RT = window.Roundtrip; (function (element) { const globals = Object.freeze({ @@ -28,7 +27,7 @@ const RT = window.Roundtrip; treeHeight: 300 }); - var jsNodeSelected = "['*']"; + RT['jsNodeSelected'] = JSON.stringify(["*"]); var makeColorManager = function(model){ @@ -101,9 +100,11 @@ const RT = window.Roundtrip; if (treeIndex == -1) { //unified color legend metricRange = _forestMinMax[curMetric].max - _forestMinMax[curMetric].min; - colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map(function (x) { - return x * metricRange + _forestMinMax[curMetric].min; - }); + colorScaleDomain = [0, 0.1, 0.3, 0.5, 0.7, 0.9, 1].map( + function (x) { + return x * metricRange + _forestMinMax[curMetric].min; + } + ); } else{ metricRange = _modelForestStats[treeIndex][curMetric].max - _modelForestStats[treeIndex][curMetric].min; @@ -377,18 +378,18 @@ const RT = window.Roundtrip; //do some evaluation for other subtrees // we could generate python code that does this - var queryStr = "['']"; + var queryStr = ['']; if ((nodeList.length > 1) && (selectionIsAChain)) { // This query is for chains - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'name': '" + rightMostNode.data.frame.name + "'}]"; + queryStr = [{name: leftMostNode.data.frame.name }, '*', {name: rightMostNode.data.frame.name }]; } else if (nodeList.length > 1) { // This query is for subtrees - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}, '*', {'depth': '<= " + rightMostNode.depth + "' }]"; + queryStr = [{name: leftMostNode.data.frame.name }, '*', {depth: '<=' + rightMostNode.depth}]; } else { //Single node query - queryStr = "[{'name': '" + leftMostNode.data.frame.name + "'}]"; + queryStr = [{name: leftMostNode.data.frame.name}]; } return queryStr; @@ -486,9 +487,9 @@ const RT = window.Roundtrip; this.updateTooltip(nodes); if(nodes.length > 0){ - jsNodeSelected = _printQuery(nodes); + RT['jsNodeSelected'] = JSON.stringify(_printQuery(nodes)); } else { - jsNodeSelected = "['*']"; + RT['jsNodeSelected'] = JSON.stringify(["*"]); } _observers.notify(); @@ -550,7 +551,7 @@ const RT = window.Roundtrip; if(selection){ //calculate brushed points for(var i = 0; i < _data["numberOfTrees"]; i++){ - nodes = _data['trees'][i].descendants(); + let nodes = _data['trees'][i].descendants(); nodes.forEach(function(d){ if(selection[0][0] <= d.yMainG && selection[1][0] >= d.yMainG && selection[0][1] <= d.xMainG && selection[1][1] >= d.xMainG){ From fec16b364bcb875685b04cb92e25918698fc390e Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 16 Dec 2021 13:52:14 -0800 Subject: [PATCH 23/29] Add more unit-tests --- hatchet/tests/boxplot.py | 88 ++++++++++++++++++++-------------------- hatchet/util/boxplot.py | 2 +- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index 953d779a..a78bed8a 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -2,7 +2,7 @@ # Hatchet Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: MIT - +import jsonschema import pandas as pd import hatchet as ht @@ -65,7 +65,7 @@ def test_gf_format(calc_pi_hpct_db): # def test_output_dtypes(calc_pi_hpct_db): # gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) # metrics = ["time"] -# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +# bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=metrics) # object_dtype = ["name", "q", "ocat", "ometric"] # float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] @@ -78,53 +78,53 @@ def test_gf_format(calc_pi_hpct_db): # ) -# def test_callsite_count(calc_pi_hpct_db): -# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# metrics = ["time"] -# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +def test_callsite_count(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=metrics) -# assert len(bp.tgt["time"].graph) == len( -# bp.tgt["time"].dataframe.index.values.tolist() -# ) + assert len(bp.gf["time"].graph) == len( + bp.gf["time"].dataframe.index.values.tolist() + ) -# def test_multiple_metrics(calc_pi_hpct_db): -# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# metrics = ["time", "time (inc)"] -# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=metrics) +def test_multiple_metrics(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time", "time (inc)"] + bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=metrics) -# assert all(metric in bp.tgt for metric in metrics) + assert all(metric in bp.gf for metric in metrics) -# def test_to_json(calc_pi_hpct_db): -# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) -# json = bp.to_json() -# assert all( -# (nid in json.keys()) and ("tgt" in json[nid]) -# for nid in gf.dataframe["nid"].unique().tolist() -# ) +def test_to_json(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=["time"]) + json = bp.to_json() + assert all( + (nid in json.keys()) + for nid in gf.dataframe["nid"].unique().tolist() + ) -# # def test_to_json_schema(calc_pi_hpct_db): -# # gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# # bp = BoxPlot(cat_column="rank", tgt_gf=gf, bkg_gf=None, metrics=["time"]) -# # json = bp.to_json() -# # STATS_SCHEMA = { -# # "type": "object", -# # "properties": { -# # "name": {"type": "string"}, -# # "min": {"type": "number"}, -# # "max": {"type": "number"}, -# # "mean": {"type": "number"}, -# # "imb": {"type": "number"}, -# # "var": {"type": "number"}, -# # "kurt": {"type": "number"}, -# # "skew": {"type": "number"}, -# # "q": {"type": "array"}, -# # "ocat": {"type": "array"}, -# # "ometric": {"type": "array"} -# # }, -# # } - -# # assert all(jsonschema.validate(instance=json[nid]["tgt"]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) +# def test_to_json_schema(calc_pi_hpct_db): +# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) +# bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=["time"]) +# json = bp.to_json() +# STATS_SCHEMA = { +# "type": "object", +# "properties": { +# "name": {"type": "string"}, +# "min": {"type": "number"}, +# "max": {"type": "number"}, +# "mean": {"type": "number"}, +# "imb": {"type": "number"}, +# "var": {"type": "number"}, +# "kurt": {"type": "number"}, +# "skew": {"type": "number"}, +# "q": {"type": "array"}, +# }, +# } + +# print(json.keys()) + +# assert all(jsonschema.validate(instance=json[nid]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index a52c3141..2a5c5bc9 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -125,7 +125,7 @@ def df_groupby(df, groupby, cols): """ _df = df.set_index(groupby) _levels = _df.index.unique().tolist() - return {_: _df.xs(_)[cols] for _ in _levels} + return {_df.xs(_)["nid"].unique().tolist()[0]: _df.xs(_)[cols] for _ in _levels} @staticmethod def outliers(data, scale=1.5, side="both"): From 16c6da921441d63809c41fdd68dab6a01af63377 Mon Sep 17 00:00:00 2001 From: Connor Date: Thu, 16 Dec 2021 15:16:12 -0700 Subject: [PATCH 24/29] Added patch to fix quote closure problem in data transfer --- hatchet/external/roundtrip/roundtrip/manager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hatchet/external/roundtrip/roundtrip/manager.py b/hatchet/external/roundtrip/roundtrip/manager.py index 2af0870d..d97ced7d 100644 --- a/hatchet/external/roundtrip/roundtrip/manager.py +++ b/hatchet/external/roundtrip/roundtrip/manager.py @@ -482,6 +482,9 @@ def pass_to_js( data = py_to_js_converter(data) self.converter = py_to_js_converter + # Patch: Ensure all ' and " are escaped + data = data.replace('"', '\\"').replace("'", "\\'") + conv_spec = None if js_to_py_converter is not None: From b99f197dd34b51e83dd7ab3c224daffb6e5690e0 Mon Sep 17 00:00:00 2001 From: Connor Date: Thu, 16 Dec 2021 15:29:51 -0700 Subject: [PATCH 25/29] Uncommented some code from debugging --- .../external/roundtrip/roundtrip/manager.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/hatchet/external/roundtrip/roundtrip/manager.py b/hatchet/external/roundtrip/roundtrip/manager.py index d97ced7d..43553f22 100644 --- a/hatchet/external/roundtrip/roundtrip/manager.py +++ b/hatchet/external/roundtrip/roundtrip/manager.py @@ -422,17 +422,17 @@ def run(self): self.active_html = new_HTML self.display.update(new_HTML) - # if self.scripts is not None: - # js_exe = "" - # for script in self.scripts: - # js_exe += script - - # if not self.istest: - # display(Javascript(js_exe)) - # else: - # new_Javascript = Javascript(js_exe) - # self.active_scripts.append(new_Javascript) - # display(new_Javascript) + if self.scripts is not None: + js_exe = "" + for script in self.scripts: + js_exe += script + + if not self.istest: + display(Javascript(js_exe)) + else: + new_Javascript = Javascript(js_exe) + self.active_scripts.append(new_Javascript) + display(new_Javascript) def add_javascript(self, code): if not self.istest: From 2e9d6d55994a3bdf6428b1d208caddf37912bdfc Mon Sep 17 00:00:00 2001 From: Connor Date: Thu, 16 Dec 2021 15:36:40 -0700 Subject: [PATCH 26/29] Reinstated call back registration for roundtrip watching --- hatchet/external/roundtrip/roundtrip/manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hatchet/external/roundtrip/roundtrip/manager.py b/hatchet/external/roundtrip/roundtrip/manager.py index 43553f22..44d6cab6 100644 --- a/hatchet/external/roundtrip/roundtrip/manager.py +++ b/hatchet/external/roundtrip/roundtrip/manager.py @@ -544,4 +544,5 @@ def retrieve_from_js(self, js_variable, notebook_var, converter): # Singelton declaration of the roundtrip object. Roundtrip = RoundTrip() -# Roundtrip.shell.events.register("post_run_cell", Roundtrip.manage_jupter_change) +if Roundtrip.shell is not None: + Roundtrip.shell.events.register("post_run_cell", Roundtrip.manage_jupter_change) From 852bdf10abf69a7911cc4a62e937f20641aecf02 Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 13 Jan 2022 13:19:12 +0530 Subject: [PATCH 27/29] fix unit tests for boxplot API --- hatchet/tests/boxplot.py | 50 ++++++++-------------------------------- 1 file changed, 9 insertions(+), 41 deletions(-) diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index a78bed8a..06302c38 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -2,7 +2,6 @@ # Hatchet Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: MIT -import jsonschema import pandas as pd import hatchet as ht @@ -62,20 +61,16 @@ def test_gf_format(calc_pi_hpct_db): ) -# def test_output_dtypes(calc_pi_hpct_db): -# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# metrics = ["time"] -# bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=metrics) +def test_output_dtypes(calc_pi_hpct_db): + gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) + metrics = ["time"] + bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=metrics) -# object_dtype = ["name", "q", "ocat", "ometric"] -# float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] + object_dtype = ["name", "nid", "q"] + float_dtype = ["min", "max", "mean", "var", "imb", "kurt", "skew"] -# assert all( -# ptypes.is_float_dtype(bp.tgt["time"].dataframe[col]) for col in float_dtype -# ) -# assert all( -# ptypes.is_object_dtype(bp.tgt["time"].dataframe[col]) for col in object_dtype -# ) + assert all(bp.gf["time"].dataframe.dtypes[col] == "object" for col in object_dtype) + assert all(bp.gf["time"].dataframe.dtypes[col] == "float64" for col in float_dtype) def test_callsite_count(calc_pi_hpct_db): @@ -100,31 +95,4 @@ def test_to_json(calc_pi_hpct_db): gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=["time"]) json = bp.to_json() - assert all( - (nid in json.keys()) - for nid in gf.dataframe["nid"].unique().tolist() - ) - - -# def test_to_json_schema(calc_pi_hpct_db): -# gf = ht.GraphFrame.from_hpctoolkit(str(calc_pi_hpct_db)) -# bp = BoxPlot(multi_index_gf=gf, drop_index_levels=["rank"], metrics=["time"]) -# json = bp.to_json() -# STATS_SCHEMA = { -# "type": "object", -# "properties": { -# "name": {"type": "string"}, -# "min": {"type": "number"}, -# "max": {"type": "number"}, -# "mean": {"type": "number"}, -# "imb": {"type": "number"}, -# "var": {"type": "number"}, -# "kurt": {"type": "number"}, -# "skew": {"type": "number"}, -# "q": {"type": "array"}, -# }, -# } - -# print(json.keys()) - -# assert all(jsonschema.validate(instance=json[nid]["time"], schema=STATS_SCHEMA) for nid in gf.dataframe["nid"].unique().tolist()) + assert all((nid in json.keys()) for nid in gf.dataframe["nid"].unique().tolist()) From 1dd37cc9e347bde256a5a946425f0ea1115ef749 Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 26 May 2022 14:45:26 -0400 Subject: [PATCH 28/29] Fix headers --- hatchet/tests/boxplot.py | 3 ++- hatchet/util/boxplot.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hatchet/tests/boxplot.py b/hatchet/tests/boxplot.py index 06302c38..ef514cce 100644 --- a/hatchet/tests/boxplot.py +++ b/hatchet/tests/boxplot.py @@ -1,7 +1,8 @@ -# Copyright 2017-2021 Lawrence Livermore National Security, LLC and other +# Copyright 2017-2022 Lawrence Livermore National Security, LLC and other # Hatchet Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: MIT + import pandas as pd import hatchet as ht diff --git a/hatchet/util/boxplot.py b/hatchet/util/boxplot.py index 2a5c5bc9..2bcbb459 100644 --- a/hatchet/util/boxplot.py +++ b/hatchet/util/boxplot.py @@ -1,5 +1,5 @@ -# Copyright 2021 University of Maryland and other Hatchet Project -# Developers. See the top-level LICENSE file for details. +# Copyright 2017-2022 Lawrence Livermore National Security, LLC and other +# Hatchet Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: MIT From e0ca323a9a851aa1a5a030661af2eb0c481d4a8a Mon Sep 17 00:00:00 2001 From: jarusified Date: Thu, 26 May 2022 15:12:55 -0400 Subject: [PATCH 29/29] Fix flake8 --- hatchet/vis/loader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/hatchet/vis/loader.py b/hatchet/vis/loader.py index 5641ddab..83efa2b2 100644 --- a/hatchet/vis/loader.py +++ b/hatchet/vis/loader.py @@ -36,6 +36,7 @@ def serialize(obj): def _query_to_dict(json_query): return json_query + @magics_class class CCT(Magics): def __init__(self, shell):