From 30df111c2230ad6d7d5dc34eb3c75556b16c197a Mon Sep 17 00:00:00 2001 From: ewgenius Date: Fri, 23 Feb 2024 03:40:17 +0000 Subject: [PATCH] deploy: 47970d7dafb1af511a7a9076dbe9663349379257 --- 404.html | 2 +- acknowledgements/index.html | 2 +- api/index.html | 1 - cli/index.html | 17 +- cli/reference/index.html | 9 +- concepts/dataspaces/index.html | 1 - concepts/index.html | 5 +- concepts/interpretations/index.html | 12 - concepts/recommendations/index.html | 1 - concepts/rewards/external/index.html | 45 --- concepts/rewards/index.html | 38 --- concepts/time/index.html | 7 - deep-learning-ai/dql/index.html | 1 - deep-learning-ai/index.html | 3 - deep-learning-ai/interface/index.html | 67 ----- deep-learning-ai/sac/index.html | 2 - deep-learning-ai/vpg/index.html | 8 - getting-started/index.html | 54 +++- getting-started/install-spiceai/index.html | 10 - getting-started/next-steps/index.html | 10 - getting-started/train-pod/index.html | 18 -- images/conecpts-before-spice.png | Bin 0 -> 75563 bytes images/conecpts-with-spice.png | Bin 0 -> 106267 bytes index.html | 4 +- install/index.html | 2 +- quickstarts/index.html | 1 - reference/duration/index.html | 12 - reference/index.html | 2 +- reference/pod/index.html | 287 -------------------- reference/pod/quickstarts-trader/index.html | 105 ------- reference/pod/samples-gardener/index.html | 71 ----- reference/pod/samples-serverops/index.html | 97 ------- reference/spicepod/datasets/index.html | 44 +++ reference/spicepod/index.html | 24 ++ reference/timestamp/index.html | 4 +- samples/index.html | 1 - sitemap.xml | 2 +- training/index.html | 1 - training/monitoring/index.html | 40 --- 39 files changed, 143 insertions(+), 867 deletions(-) delete mode 100644 api/index.html delete mode 100644 concepts/dataspaces/index.html delete mode 100644 concepts/interpretations/index.html delete mode 100644 concepts/recommendations/index.html delete mode 100644 concepts/rewards/external/index.html delete mode 100644 concepts/rewards/index.html delete mode 100644 concepts/time/index.html delete mode 100644 deep-learning-ai/dql/index.html delete mode 100644 deep-learning-ai/index.html delete mode 100644 deep-learning-ai/interface/index.html delete mode 100644 deep-learning-ai/sac/index.html delete mode 100644 deep-learning-ai/vpg/index.html delete mode 100644 getting-started/install-spiceai/index.html delete mode 100644 getting-started/next-steps/index.html delete mode 100644 getting-started/train-pod/index.html create mode 100644 images/conecpts-before-spice.png create mode 100644 images/conecpts-with-spice.png delete mode 100644 quickstarts/index.html delete mode 100644 reference/duration/index.html delete mode 100644 reference/pod/index.html delete mode 100644 reference/pod/quickstarts-trader/index.html delete mode 100644 reference/pod/samples-gardener/index.html delete mode 100644 reference/pod/samples-serverops/index.html create mode 100644 reference/spicepod/datasets/index.html create mode 100644 reference/spicepod/index.html delete mode 100644 samples/index.html delete mode 100644 training/index.html delete mode 100644 training/monitoring/index.html diff --git a/404.html b/404.html index 5bc9f0a6..c8b1ef43 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404 Page not found | Spice.ai Docs

Not found

Oops! This page doesn't exist. Try going back to our home page.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +404 Page not found | Spice.ai Docs

Not found

Oops! This page doesn't exist. Try going back to our home page.

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/acknowledgements/index.html b/acknowledgements/index.html index f6bdd461..311ce6cb 100644 --- a/acknowledgements/index.html +++ b/acknowledgements/index.html @@ -1 +1 @@ -Open Source Acknowledgements | Spice.ai Docs

Open Source Acknowledgements

Spice.ai would like to thank the following open source projects for making this possible

Python Packages

Keras-Preprocessing, 1.1.2, MIT License, Keras Team, https://github.com/keras-team/keras-preprocessing

Markdown, 3.3.4, BSD License, Manfred Stienstra, Yuri takhteyev and Waylan limberg, https://Python-Markdown.github.io/

Werkzeug, 2.0.1, BSD License, Armin Ronacher, https://palletsprojects.com/p/werkzeug/

absl-py, 0.13.0, Apache Software License, The Abseil Authors, https://github.com/abseil/abseil-py

astunparse, 1.6.3, BSD License, UNKNOWN, https://github.com/simonpercivall/astunparse

attrs, 21.2.0, MIT License, Hynek Schlawack, https://www.attrs.org/

cachetools, 4.2.2, MIT License, Thomas Kemmer, https://github.com/tkem/cachetools/

certifi, 2021.5.30, Mozilla Public License 2.0 (MPL 2.0), Kenneth Reitz, https://certifiio.readthedocs.io/en/latest/

charset-normalizer, 2.0.4, MIT License, Ahmed TAHRI Ousret, https://github.com/ousret/charset_normalizer

flatbuffers, 1.12, Apache Software License, FlatBuffers Contributors, https://google.github.io/flatbuffers/

gast, 0.4.0, BSD License, serge-sans-paille, https://github.com/serge-sans-paille/gast/

google-auth, 1.35.0, Apache Software License, Google Cloud Platform, https://github.com/googleapis/google-auth-library-python

google-auth-oauthlib, 0.4.5, Apache Software License, Google Cloud Platform, https://github.com/GoogleCloudPlatform/google-auth-library-python-oauthlib

google-pasta, 0.2.0, Apache Software License, Nick Smith, https://github.com/google/pasta

grpcio, 1.34.1, Apache Software License, The gRPC Authors, https://grpc.io

grpcio-tools, 1.34.1, Apache Software License, The gRPC Authors, https://grpc.io

h5py, 3.1.0, BSD License, Andrew Collette, http://www.h5py.org

humanize, 3.11.0, MIT License, Jason Moiron, https://github.com/jmoiron/humanize

idna, 3.2, BSD License, Kim Davies, https://github.com/kjd/idna

iniconfig, 1.1.1, MIT License, Ronny Pfannschmidt, Holger Krekel, http://github.com/RonnyPfannschmidt/iniconfig

jupyter-client, 6.1.12, BSD License, Jupyter Development Team, https://jupyter.org

jupyter-core, 4.7.1, BSD License, Jupyter Development Team, https://jupyter.org

keras-nightly, 2.5.0.dev2021032900, Apache Software License, Google Inc., https://keras.io/

numpy, 1.19.5, BSD, Travis E. Oliphant et al., https://www.numpy.org

oauthlib, 3.1.1, BSD License, The OAuthlib Community, https://github.com/oauthlib/oauthlib

opt-einsum, 3.3.0, MIT, Daniel Smith, https://github.com/dgasmith/opt_einsum

packaging, 21.0, Apache Software License; BSD License, Donald Stufft and individual contributors, https://github.com/pypa/packaging

pandas, 1.3.2, BSD License, The Pandas Development Team, https://pandas.pydata.org

pkg-resources, 0.0.0, UNKNOWN, UNKNOWN, UNKNOWN

pluggy, 0.13.1, MIT License, Holger Krekel, https://github.com/pytest-dev/pluggy

protobuf, 3.17.3, 3-Clause BSD License, UNKNOWN, https://developers.google.com/protocol-buffers/

psutil, 5.8.0, BSD License, Giampaolo Rodola, https://github.com/giampaolo/psutil

py, 1.10.0, MIT License, holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others, https://py.readthedocs.io/

pyasn1, 0.4.8, BSD License, Ilya Etingof, https://github.com/etingof/pyasn1

pyasn1-modules, 0.2.8, BSD License, Ilya Etingof, https://github.com/etingof/pyasn1-modules

pyparsing, 2.4.7, MIT License, Paul McGuire, https://github.com/pyparsing/pyparsing/

pytest, 6.2.3, MIT License, Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others, https://docs.pytest.org/en/latest/

pytest-timeout, 1.4.2, DFSG approved; MIT License, Floris Bruynooghe, http://github.com/pytest-dev/pytest-timeout/

python-dateutil, 2.8.2, Apache Software License; BSD License, Gustavo Niemeyer, https://github.com/dateutil/dateutil

pytz, 2021.1, MIT License, Stuart Bishop, http://pythonhosted.org/pytz

pyzmq, 22.3.0, BSD License; GNU Library or Lesser General Public License (LGPL), Brian E. Granger, Min Ragan-Kelley, https://pyzmq.readthedocs.org

requests, 2.26.0, Apache Software License, Kenneth Reitz, https://requests.readthedocs.io

requests-oauthlib, 1.3.0, BSD License, Kenneth Reitz, https://github.com/requests/requests-oauthlib

rsa, 4.7.2, Apache Software License, Sybren A. Stuvel, https://stuvel.eu/rsa

six, 1.15.0, MIT License, Benjamin Peterson, https://github.com/benjaminp/six

tensorboard, 2.6.0, Apache Software License, Google Inc., https://github.com/tensorflow/tensorboard

tensorboard-data-server, 0.6.1, Apache Software License, Google Inc., https://github.com/tensorflow/tensorboard/tree/master/tensorboard/data/server

tensorboard-plugin-wit, 1.8.0, Apache 2.0, Google Inc., https://whatif-tool.dev

tensorflow, 2.5.1, Apache Software License, Google Inc., https://www.tensorflow.org/

tensorflow-estimator, 2.5.0, Apache Software License, Google Inc., https://www.tensorflow.org/

termcolor, 1.1.0, MIT License, Konstantin Lepa, http://pypi.python.org/pypi/termcolor

toml, 0.10.2, MIT License, William Pearson, https://github.com/uiri/toml

tornado, 6.1, Apache Software License, Facebook, http://www.tornadoweb.org/

traitlets, 5.1.0, BSD License, IPython Development Team, https://github.com/ipython/traitlets

typing-extensions, 3.7.4.3, Python Software Foundation License, Guido van Rossum, Jukka Lehtosalo, Lukasz Langa, Michael Lee, https://github.com/python/typing/blob/master/typing_extensions/README.rst

urllib3, 1.26.6, MIT License, Andrey Petrov, https://urllib3.readthedocs.io/

wrapt, 1.12.1, BSD License, Graham Dumpleton, https://github.com/GrahamDumpleton/wrapt

Go Modules

github.com/spf13/cast, https://github.com/spf13/cast/blob/master/LICENSE, MIT

github.com/subosito/gotenv, https://github.com/subosito/gotenv/blob/master/LICENSE, MIT

go.uber.org/zap, Unknown, MIT

github.com/benbjohnson/immutable, https://github.com/benbjohnson/immutable/blob/master/LICENSE, MIT

go.skia.org/infra/go, Unknown, BSD-3-Clause

google.golang.org/grpc, Unknown, Apache-2.0

golang.org/x/net, Unknown, BSD-3-Clause

github.com/pkg/errors, https://github.com/pkg/errors/blob/master/LICENSE, BSD-2-Clause

github.com/google/flatbuffers/go, https://github.com/google/flatbuffers/blob/master/go/LICENSE.txt, Apache-2.0

github.com/google/go-cmp/cmp, https://github.com/google/go-cmp/blob/master/cmp/LICENSE, BSD-3-Clause

github.com/andreyvit/diff, https://github.com/andreyvit/diff/blob/master/LICENSE, MIT

github.com/opentracing/opentracing-go, https://github.com/opentracing/opentracing-go/blob/master/LICENSE, Apache-2.0

github.com/xeipuuv/gojsonpointer, https://github.com/xeipuuv/gojsonpointer/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/spiceai/data-components-contrib, https://github.com/spiceai/data-components-contrib/blob/master/LICENSE, MIT

github.com/xeipuuv/gojsonschema, https://github.com/xeipuuv/gojsonschema/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/jcgregorio/logger, https://github.com/jcgregorio/logger/blob/master/LICENSE, Apache-2.0

github.com/hashicorp/errwrap, https://github.com/hashicorp/errwrap/blob/master/LICENSE, MPL-2.0

github.com/spf13/cobra, https://github.com/spf13/cobra/blob/master/LICENSE.txt, Apache-2.0

github.com/cespare/xxhash/v2, https://github.com/cespare/xxhash/blob/master/v2/LICENSE.txt, MIT

github.com/fsnotify/fsnotify, https://github.com/fsnotify/fsnotify/blob/master/LICENSE, BSD-3-Clause

gopkg.in/ini.v1, Unknown, Apache-2.0

github.com/influxdata/influxdb-client-go, https://github.com/influxdata/influxdb-client-go/blob/master/LICENSE, MIT

github.com/uber/jaeger-client-go, https://github.com/uber/jaeger-client-go/blob/master/LICENSE, Apache-2.0

github.com/spiceai/spiceai, https://github.com/haardvark/spiceai/blob/master/LICENSE, Apache-2.0

github.com/spf13/jwalterweatherman, https://github.com/spf13/jwalterweatherman/blob/master/LICENSE, MIT

gopkg.in/yaml.v2, Unknown, Apache-2.0

go.uber.org/multierr, Unknown, MIT

golang.org/x/xerrors, Unknown, BSD-3-Clause

github.com/gofrs/uuid, https://github.com/gofrs/uuid/blob/master/LICENSE, MIT

github.com/zeebo/bencode, https://github.com/zeebo/bencode/blob/master/LICENSE, MIT

golang.org/x/sys, Unknown, BSD-3-Clause

golang.org/x/text, Unknown, BSD-3-Clause

github.com/golang/protobuf, https://github.com/golang/protobuf/blob/master/LICENSE, BSD-3-Clause

github.com/influxdata/flux, https://github.com/influxdata/flux/blob/master/LICENSE, MIT

github.com/uber/jaeger-lib/metrics, https://github.com/uber/jaeger-lib/blob/master/metrics/LICENSE, Apache-2.0

github.com/jcgregorio/slog, https://github.com/jcgregorio/slog/blob/master/LICENSE, Apache-2.0

github.com/logrusorgru/aurora, https://github.com/logrusorgru/aurora/blob/master/LICENSE, Unlicense

github.com/magiconair/properties, https://github.com/magiconair/properties/blob/master/LICENSE.md, BSD-2-Clause

github.com/hashicorp/go-retryablehttp, https://github.com/hashicorp/go-retryablehttp/blob/master/LICENSE, MPL-2.0

github.com/pelletier/go-toml, https://github.com/pelletier/go-toml/blob/master/LICENSE, Apache-2.0

github.com/apache/arrow/go/arrow, https://github.com/apache/arrow/blob/master/go/arrow/LICENSE.txt, Apache-2.0

github.com/hashicorp/hcl, https://github.com/hashicorp/hcl/blob/master/LICENSE, MPL-2.0

github.com/hashicorp/go-multierror, https://github.com/hashicorp/go-multierror/blob/master/LICENSE, MPL-2.0

github.com/mitchellh/mapstructure, https://github.com/mitchellh/mapstructure/blob/master/LICENSE, MIT

github.com/alecthomas/jsonschema, https://github.com/alecthomas/jsonschema/blob/master/COPYING, MIT

github.com/xeipuuv/gojsonreference, https://github.com/xeipuuv/gojsonreference/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/hashicorp/go-cleanhttp, https://github.com/hashicorp/go-cleanhttp/blob/master/LICENSE, MPL-2.0

github.com/spf13/viper, https://github.com/spf13/viper/blob/master/LICENSE, MIT

golang.org/x/mod/semver, Unknown, BSD-3-Clause

github.com/influxdata/line-protocol, https://github.com/influxdata/line-protocol/blob/master/LICENSE, MIT

github.com/spf13/afero, https://github.com/spf13/afero/blob/master/LICENSE.txt, Apache-2.0

google.golang.org/protobuf, Unknown, BSD-3-Clause

google.golang.org/genproto/googleapis/rpc/status, Unknown, Apache-2.0

golang.org/x/sync/errgroup, Unknown, BSD-3-Clause

go.uber.org/atomic, Unknown, MIT

gopkg.in/natefinch/lumberjack.v2, Unknown, MIT

github.com/apache/arrow/go/arrow/internal/cpu, https://github.com/apache/arrow/blob/master/go/arrow/internal/cpu/README.md, Apache-2.0

github.com/iancoleman/orderedmap, https://github.com/iancoleman/orderedmap/blob/master/LICENSE, MIT

github.com/spf13/pflag, https://github.com/spf13/pflag/blob/master/LICENSE, BSD-3-Clause

github.com/deepmap/oapi-codegen/pkg, https://github.com/deepmap/oapi-codegen/blob/master/pkg/LICENSE, Apache-2.0

github.com/sergi/go-diff/diffmatchpatch, https://github.com/sergi/go-diff/blob/master/diffmatchpatch/LICENSE, MIT

github.com/influxdata/influxdb-client-go, https://github.com/influxdata/influxdb-client-go/blob/master/LICENSE, MIT

google.golang.org/protobuf, Unknown, BSD-3-Clause

go.uber.org/zap, Unknown, MIT

github.com/apache/arrow/go/arrow, https://github.com/apache/arrow/blob/master/go/arrow/LICENSE.txt, Apache-2.0

github.com/google/go-cmp/cmp, https://github.com/google/go-cmp/blob/master/cmp/LICENSE, BSD-3-Clause

github.com/hashicorp/go-multierror, https://github.com/hashicorp/go-multierror/blob/master/LICENSE, MPL-2.0

github.com/hashicorp/errwrap, https://github.com/hashicorp/errwrap/blob/master/LICENSE, MPL-2.0

github.com/fasthttp/router, https://github.com/fasthttp/router/blob/master/LICENSE, BSD-3-Clause

github.com/savsgio/gotils, https://github.com/savsgio/gotils/blob/master/LICENSE, Apache-2.0

github.com/mitchellh/mapstructure, https://github.com/mitchellh/mapstructure/blob/master/LICENSE, MIT

go.uber.org/multierr, Unknown, MIT

github.com/iancoleman/orderedmap, https://github.com/iancoleman/orderedmap/blob/master/LICENSE, MIT

github.com/xeipuuv/gojsonreference, https://github.com/xeipuuv/gojsonreference/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/hashicorp/hcl, https://github.com/hashicorp/hcl/blob/master/LICENSE, MPL-2.0

github.com/golang/protobuf, https://github.com/golang/protobuf/blob/master/LICENSE, BSD-3-Clause

go.uber.org/atomic, Unknown, MIT

gopkg.in/natefinch/lumberjack.v2, Unknown, MIT

github.com/apache/arrow/go/arrow/internal/cpu, https://github.com/apache/arrow/blob/master/go/arrow/internal/cpu/README.md, Apache-2.0

github.com/andreyvit/diff, https://github.com/andreyvit/diff/blob/master/LICENSE, MIT

gopkg.in/yaml.v2, Unknown, Apache-2.0

google.golang.org/grpc, Unknown, Apache-2.0

github.com/opentracing/opentracing-go, https://github.com/opentracing/opentracing-go/blob/master/LICENSE, Apache-2.0

github.com/alecthomas/jsonschema, https://github.com/alecthomas/jsonschema/blob/master/COPYING, MIT

github.com/gofrs/uuid, https://github.com/gofrs/uuid/blob/master/LICENSE, MIT

github.com/sergi/go-diff/diffmatchpatch, https://github.com/sergi/go-diff/blob/master/diffmatchpatch/LICENSE, MIT

github.com/spiceai/spiceai, https://github.com/haardvark/spiceai/blob/master/LICENSE, Apache-2.0

gopkg.in/ini.v1, Unknown, Apache-2.0

golang.org/x/mod/semver, Unknown, BSD-3-Clause

github.com/influxdata/flux, https://github.com/influxdata/flux/blob/master/LICENSE, MIT

github.com/jcgregorio/logger, https://github.com/jcgregorio/logger/blob/master/LICENSE, Apache-2.0

github.com/jcgregorio/slog, https://github.com/jcgregorio/slog/blob/master/LICENSE, Apache-2.0

golang.org/x/sys, Unknown, BSD-3-Clause

golang.org/x/net, Unknown, BSD-3-Clause

google.golang.org/genproto/googleapis/rpc/status, Unknown, Apache-2.0

github.com/google/flatbuffers/go, https://github.com/google/flatbuffers/blob/master/go/LICENSE.txt, Apache-2.0

github.com/uber/jaeger-client-go, https://github.com/uber/jaeger-client-go/blob/master/LICENSE, Apache-2.0

github.com/uber/jaeger-lib/metrics, https://github.com/uber/jaeger-lib/blob/master/metrics/LICENSE, Apache-2.0

github.com/magiconair/properties, https://github.com/magiconair/properties/blob/master/LICENSE.md, BSD-2-Clause

github.com/spiceai/data-components-contrib, https://github.com/spiceai/data-components-contrib/blob/master/LICENSE, MIT

github.com/logrusorgru/aurora, https://github.com/logrusorgru/aurora/blob/master/LICENSE, Unlicense

github.com/spf13/cobra, https://github.com/spf13/cobra/blob/master/LICENSE.txt, Apache-2.0

github.com/spf13/jwalterweatherman, https://github.com/spf13/jwalterweatherman/blob/master/LICENSE, MIT

github.com/deepmap/oapi-codegen/pkg, https://github.com/deepmap/oapi-codegen/blob/master/pkg/LICENSE, Apache-2.0

github.com/pkg/errors, https://github.com/pkg/errors/blob/master/LICENSE, BSD-2-Clause

github.com/benbjohnson/immutable, https://github.com/benbjohnson/immutable/blob/master/LICENSE, MIT

github.com/xeipuuv/gojsonpointer, https://github.com/xeipuuv/gojsonpointer/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/valyala/fasthttp, https://github.com/valyala/fasthttp/blob/master/LICENSE, MIT

github.com/fsnotify/fsnotify, https://github.com/fsnotify/fsnotify/blob/master/LICENSE, BSD-3-Clause

golang.org/x/text, Unknown, BSD-3-Clause

go.skia.org/infra/go, Unknown, BSD-3-Clause

github.com/spf13/pflag, https://github.com/spf13/pflag/blob/master/LICENSE, BSD-3-Clause

github.com/cespare/xxhash/v2, https://github.com/cespare/xxhash/blob/master/v2/LICENSE.txt, MIT

golang.org/x/xerrors, Unknown, BSD-3-Clause

github.com/pelletier/go-toml, https://github.com/pelletier/go-toml/blob/master/LICENSE, Apache-2.0

golang.org/x/sync/errgroup, Unknown, BSD-3-Clause

github.com/valyala/bytebufferpool, https://github.com/valyala/bytebufferpool/blob/master/LICENSE, MIT

github.com/xeipuuv/gojsonschema, https://github.com/xeipuuv/gojsonschema/blob/master/LICENSE-APACHE-2.0.txt, Apache-2.0

github.com/zeebo/bencode, https://github.com/zeebo/bencode/blob/master/LICENSE, MIT

github.com/spf13/cast, https://github.com/spf13/cast/blob/master/LICENSE, MIT

github.com/subosito/gotenv, https://github.com/subosito/gotenv/blob/master/LICENSE, MIT

github.com/influxdata/line-protocol, https://github.com/influxdata/line-protocol/blob/master/LICENSE, MIT

github.com/andybalholm/brotli, https://github.com/andybalholm/brotli/blob/master/LICENSE, MIT

github.com/klauspost/compress, https://github.com/klauspost/compress/blob/master/LICENSE, BSD-3-Clause

github.com/spf13/viper, https://github.com/spf13/viper/blob/master/LICENSE, MIT

github.com/spf13/afero, https://github.com/spf13/afero/blob/master/LICENSE.txt, Apache-2.0

Node Packages

babel/code-frame 7.10.4, MIT, https://github.com/babel/babel

babel/code-frame 7.12.11, MIT, https://github.com/babel/babel

babel/code-frame 7.12.13, MIT, https://github.com/babel/babel

babel/compat-data 7.12.13, MIT, https://github.com/babel/babel

babel/core 7.12.17, MIT, https://github.com/babel/babel

babel/core 7.12.3, MIT, https://github.com/babel/babel

babel/generator 7.12.17, MIT, https://github.com/babel/babel

babel/helper-annotate-as-pure 7.12.13, MIT, https://github.com/babel/babel

babel/helper-builder-binary-assignment-operator-visitor 7.12.13, MIT, https://github.com/babel/babel

babel/helper-compilation-targets 7.12.17, MIT, https://github.com/babel/babel

babel/helper-create-class-features-plugin 7.12.17, MIT, https://github.com/babel/babel

babel/helper-create-regexp-features-plugin 7.12.17, MIT, https://github.com/babel/babel

babel/helper-explode-assignable-expression 7.12.13, MIT, https://github.com/babel/babel

babel/helper-function-name 7.12.13, MIT, https://github.com/babel/babel

babel/helper-get-function-arity 7.12.13, MIT, https://github.com/babel/babel

babel/helper-hoist-variables 7.12.13, MIT, https://github.com/babel/babel

babel/helper-member-expression-to-functions 7.12.17, MIT, https://github.com/babel/babel

babel/helper-module-imports 7.12.13, MIT, https://github.com/babel/babel

babel/helper-module-transforms 7.12.17, MIT, https://github.com/babel/babel

babel/helper-optimise-call-expression 7.12.13, MIT, https://github.com/babel/babel

babel/helper-plugin-utils 7.12.13, MIT, https://github.com/babel/babel

babel/helper-remap-async-to-generator 7.12.13, MIT, https://github.com/babel/babel

babel/helper-replace-supers 7.12.13, MIT, https://github.com/babel/babel

babel/helper-simple-access 7.12.13, MIT, https://github.com/babel/babel

babel/helper-skip-transparent-expression-wrappers 7.12.1, MIT, https://github.com/babel/babel

babel/helper-split-export-declaration 7.12.13, MIT, https://github.com/babel/babel

babel/helper-validator-identifier 7.12.11, MIT, https://github.com/babel/babel

babel/helper-validator-option 7.12.17, MIT, https://github.com/babel/babel

babel/helper-wrap-function 7.12.13, MIT, https://github.com/babel/babel

babel/helpers 7.12.17, MIT, https://github.com/babel/babel

babel/highlight 7.12.13, MIT, https://github.com/babel/babel

babel/parser 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-proposal-async-generator-functions 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-class-properties 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-proposal-class-properties 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-decorators 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-proposal-dynamic-import 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-proposal-export-namespace-from 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-json-strings 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-logical-assignment-operators 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-nullish-coalescing-operator 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-proposal-nullish-coalescing-operator 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-numeric-separator 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-proposal-numeric-separator 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-object-rest-spread 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-optional-catch-binding 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-optional-chaining 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-proposal-optional-chaining 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-proposal-private-methods 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-proposal-unicode-property-regex 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-async-generators 7.8.4, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators

babel/plugin-syntax-bigint 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-bigint

babel/plugin-syntax-class-properties 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-decorators 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-dynamic-import 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import

babel/plugin-syntax-export-namespace-from 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from

babel/plugin-syntax-flow 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-import-meta 7.10.4, MIT, https://github.com/babel/babel

babel/plugin-syntax-json-strings 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings

babel/plugin-syntax-jsx 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-logical-assignment-operators 7.10.4, MIT, https://github.com/babel/babel

babel/plugin-syntax-nullish-coalescing-operator 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator

babel/plugin-syntax-numeric-separator 7.10.4, MIT, https://github.com/babel/babel

babel/plugin-syntax-object-rest-spread 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread

babel/plugin-syntax-optional-catch-binding 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding

babel/plugin-syntax-optional-chaining 7.8.3, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining

babel/plugin-syntax-top-level-await 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-syntax-typescript 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-arrow-functions 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-async-to-generator 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-block-scoped-functions 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-block-scoping 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-classes 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-computed-properties 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-destructuring 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-dotall-regex 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-duplicate-keys 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-exponentiation-operator 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-flow-strip-types 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-transform-for-of 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-function-name 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-literals 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-member-expression-literals 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-modules-amd 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-modules-commonjs 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-modules-systemjs 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-modules-umd 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-named-capturing-groups-regex 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-new-target 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-object-super 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-parameters 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-property-literals 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-react-constant-elements 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-react-display-name 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-transform-react-display-name 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-react-jsx-development 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-transform-react-jsx-self 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-react-jsx-source 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-react-jsx 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-transform-react-pure-annotations 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-transform-regenerator 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-reserved-words 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-runtime 7.12.1, MIT, https://github.com/babel/babel

babel/plugin-transform-shorthand-properties 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-spread 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-sticky-regex 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-template-literals 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-typeof-symbol 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-typescript 7.12.17, MIT, https://github.com/babel/babel

babel/plugin-transform-unicode-escapes 7.12.13, MIT, https://github.com/babel/babel

babel/plugin-transform-unicode-regex 7.12.13, MIT, https://github.com/babel/babel

babel/preset-env 7.12.1, MIT, https://github.com/babel/babel

babel/preset-env 7.12.17, MIT, https://github.com/babel/babel

babel/preset-modules 0.1.4, MIT,

babel/preset-react 7.12.1, MIT, https://github.com/babel/babel

babel/preset-react 7.12.13, MIT, https://github.com/babel/babel

babel/preset-typescript 7.12.1, MIT, https://github.com/babel/babel

babel/runtime-corejs3 7.12.18, MIT, https://github.com/babel/babel

babel/runtime 7.12.1, MIT, https://github.com/babel/babel

babel/runtime 7.12.18, MIT, https://github.com/babel/babel

babel/runtime 7.15.3, MIT, https://github.com/babel/babel

babel/template 7.12.13, MIT, https://github.com/babel/babel

babel/traverse 7.12.17, MIT, https://github.com/babel/babel

babel/types 7.12.17, MIT, https://github.com/babel/babel

bcoe/v8-coverage 0.2.3, MIT, https://github.com/demurgos/v8-coverage

cnakazawa/watch 1.0.4, Apache-2.0, https://github.com/mikeal/watch

csstools/convert-colors 1.4.0, CC0-1.0, https://github.com/jonathantneal/convert-colors

csstools/normalize.css 10.1.0, CC0-1.0, https://github.com/csstools/normalize.css

eslint/eslintrc 0.3.0, MIT, https://github.com/eslint/eslintrc

eslint/eslintrc 0.4.3, MIT, https://github.com/eslint/eslintrc

hapi/address 2.1.4, BSD-3-Clause, https://github.com/hapijs/address

hapi/bourne 1.3.2, BSD-3-Clause, https://github.com/hapijs/bourne

hapi/hoek 8.5.1, BSD-3-Clause, https://github.com/hapijs/hoek

hapi/joi 15.1.1, BSD-3-Clause, https://github.com/hapijs/joi

hapi/topo 3.1.6, BSD-3-Clause, https://github.com/hapijs/topo

humanwhocodes/config-array 0.5.0, Apache-2.0, https://github.com/humanwhocodes/config-array

humanwhocodes/object-schema 1.2.0, BSD-3-Clause, https://github.com/humanwhocodes/object-schema

istanbuljs/load-nyc-config 1.1.0, ISC, https://github.com/istanbuljs/load-nyc-config

istanbuljs/schema 0.1.3, MIT, https://github.com/istanbuljs/schema

jest/console 26.6.2, MIT, https://github.com/facebook/jest

jest/core 26.6.3, MIT, https://github.com/facebook/jest

jest/environment 26.6.2, MIT, https://github.com/facebook/jest

jest/fake-timers 26.6.2, MIT, https://github.com/facebook/jest

jest/globals 26.6.2, MIT, https://github.com/facebook/jest

jest/reporters 26.6.2, MIT, https://github.com/facebook/jest

jest/source-map 26.6.2, MIT, https://github.com/facebook/jest

jest/test-result 26.6.2, MIT, https://github.com/facebook/jest

jest/test-sequencer 26.6.3, MIT, https://github.com/facebook/jest

jest/transform 26.6.2, MIT, https://github.com/facebook/jest

jest/types 26.6.2, MIT, https://github.com/facebook/jest

jest/types 27.0.6, MIT, https://github.com/facebook/jest

nodelib/fs.scandir 2.1.4, MIT, https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir

nodelib/fs.stat 2.0.4, MIT, https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat

nodelib/fs.walk 1.2.6, MIT, https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk

npmcli/move-file 1.1.2, MIT, https://github.com/npm/move-file

pmmmwh/react-refresh-webpack-plugin 0.4.3, MIT, https://github.com/pmmmwh/react-refresh-webpack-plugin

rollup/plugin-node-resolve 7.1.3, MIT, https://github.com/rollup/plugins

rollup/plugin-replace 2.4.1, MIT, https://github.com/rollup/plugins

rollup/pluginutils 3.1.0, MIT, https://github.com/rollup/plugins

sinonjs/commons 1.8.2, BSD-3-Clause, https://github.com/sinonjs/commons

sinonjs/fake-timers 6.0.1, BSD-3-Clause, https://github.com/sinonjs/fake-timers

surma/rollup-plugin-off-main-thread 1.4.2, Apache-2.0, https://github.com/surma/rollup-plugin-off-main-thread

svgr/babel-plugin-add-jsx-attribute 5.4.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-add-jsx-attribute

svgr/babel-plugin-remove-jsx-attribute 5.4.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-remove-jsx-attribute

svgr/babel-plugin-remove-jsx-empty-expression 5.0.1, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-remove-jsx-empty-expression

svgr/babel-plugin-replace-jsx-attribute-value 5.0.1, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-replace-jsx-attribute-value

svgr/babel-plugin-svg-dynamic-title 5.4.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-svg-dynamic-title

svgr/babel-plugin-svg-em-dimensions 5.4.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-svg-em-dimensions

svgr/babel-plugin-transform-react-native-svg 5.4.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-transform-react-native-svg

svgr/babel-plugin-transform-svg-component 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-plugin-transform-svg-component

svgr/babel-preset 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/babel-preset

svgr/core 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/core

svgr/hast-util-to-babel-ast 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/hast-util-to-babel-ast

svgr/plugin-jsx 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/plugin-jsx

svgr/plugin-svgo 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/plugin-svgo

svgr/webpack 5.5.0, MIT, https://github.com/gregberge/svgr/tree/master/packages/webpack

testing-library/dom 7.31.2, MIT, https://github.com/testing-library/dom-testing-library

testing-library/dom 8.1.0, MIT, https://github.com/testing-library/dom-testing-library

testing-library/jest-dom 5.14.1, MIT, https://github.com/testing-library/jest-dom

testing-library/react 11.2.7, MIT, https://github.com/testing-library/react-testing-library

testing-library/user-event 12.8.3, MIT, https://github.com/testing-library/user-event

types/anymatch 1.3.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/aria-query 4.2.2, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/babel__core 7.1.12, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/babel__generator 7.6.2, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/babel__template 7.4.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/babel__traverse 7.11.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/eslint 7.2.6, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/estree 0.0.39, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/estree 0.0.46, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/glob 7.1.3, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/graceful-fs 4.1.5, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/history 4.7.9, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/html-minifier-terser 5.1.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/istanbul-lib-coverage 2.0.3, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/istanbul-lib-report 3.0.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/istanbul-reports 3.0.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/jest 26.0.24, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/jest 27.0.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/json-schema 7.0.7, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/json-schema 7.0.9, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/json5 0.0.29, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/marked 3.0.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/minimatch 3.0.3, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/node 12.20.19, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/node 14.14.31, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/normalize-package-data 2.4.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/parse-json 4.0.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/prettier 2.2.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/prop-types 15.7.4, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/q 1.5.4, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/react-dom 17.0.9, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/react-router-dom 5.1.8, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/react-router 5.1.16, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/react-sparklines 1.7.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/react 17.0.19, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/resolve 0.0.8, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped.git

types/scheduler 0.16.2, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/source-list-map 0.1.2, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/stack-utils 2.0.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/tapable 1.0.6, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/testing-library__jest-dom 5.14.1, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/uglify-js 3.12.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/webpack-sources 2.1.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/webpack 4.41.26, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/yargs-parser 20.2.0, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/yargs 15.0.13, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

types/yargs 16.0.4, MIT, https://github.com/DefinitelyTyped/DefinitelyTyped

typescript-eslint/eslint-plugin 4.15.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/eslint-plugin 4.29.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/experimental-utils 3.10.1, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/experimental-utils 4.15.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/experimental-utils 4.29.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/parser 4.15.2, BSD-2-Clause, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/parser 4.29.2, BSD-2-Clause, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/scope-manager 4.15.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/scope-manager 4.29.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/types 3.10.1, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/types 4.15.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/types 4.29.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/typescript-estree 3.10.1, BSD-2-Clause, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/typescript-estree 4.15.2, BSD-2-Clause, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/typescript-estree 4.29.2, BSD-2-Clause, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/visitor-keys 3.10.1, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/visitor-keys 4.15.2, MIT, https://github.com/typescript-eslint/typescript-eslint

typescript-eslint/visitor-keys 4.29.2, MIT, https://github.com/typescript-eslint/typescript-eslint

webassemblyjs/ast 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/floating-point-hex-parser 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/helper-api-error 1.9.0, MIT,

webassemblyjs/helper-buffer 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/helper-code-frame 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/helper-fsm 1.9.0, ISC,

webassemblyjs/helper-module-context 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/helper-wasm-bytecode 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/helper-wasm-section 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/ieee754 1.9.0, MIT,

webassemblyjs/leb128 1.9.0, MIT,

webassemblyjs/utf8 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wasm-edit 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wasm-gen 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wasm-opt 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wasm-parser 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wast-parser 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

webassemblyjs/wast-printer 1.9.0, MIT, https://github.com/xtuc/webassemblyjs

xtuc/ieee754 1.2.0, BSD-3-Clause, https://github.com/feross/ieee754

xtuc/long 4.2.2, Apache-2.0, https://github.com/dcodeIO/long.js

abab 2.0.5, BSD-3-Clause, https://github.com/jsdom/abab

accepts 1.3.7, MIT, https://github.com/jshttp/accepts

acorn-globals 6.0.0, MIT, https://github.com/ForbesLindesay/acorn-globals

acorn-jsx 5.3.1, MIT, https://github.com/acornjs/acorn-jsx

acorn-node 1.8.2, Apache-2.0, https://github.com/browserify/acorn-node

acorn-walk 7.2.0, MIT, https://github.com/acornjs/acorn

acorn 6.4.2, MIT, https://github.com/acornjs/acorn

acorn 7.4.1, MIT, https://github.com/acornjs/acorn

address 1.1.2, MIT, https://github.com/node-modules/address

adjust-sourcemap-loader 3.0.0, MIT, https://github.com/bholloway/adjust-sourcemap-loader

aggregate-error 3.1.0, MIT, https://github.com/sindresorhus/aggregate-error

ajv-errors 1.0.1, MIT, https://github.com/epoberezkin/ajv-errors

ajv-keywords 3.5.2, MIT, https://github.com/epoberezkin/ajv-keywords

ajv 6.12.6, MIT, https://github.com/ajv-validator/ajv

ajv 7.1.1, MIT, https://github.com/ajv-validator/ajv

ajv 8.6.2, MIT, https://github.com/ajv-validator/ajv

alphanum-sort 1.0.2, MIT, https://github.com/TrySound/alphanum-sort

ansi-colors 3.2.4, MIT, https://github.com/doowb/ansi-colors

ansi-colors 4.1.1, MIT, https://github.com/doowb/ansi-colors

ansi-escapes 4.3.1, MIT, https://github.com/sindresorhus/ansi-escapes

ansi-html 0.0.7, Apache-2.0, https://github.com/Tjatse/ansi-html

ansi-regex 2.1.1, MIT, https://github.com/chalk/ansi-regex

ansi-regex 4.1.0, MIT, https://github.com/chalk/ansi-regex

ansi-regex 5.0.0, MIT, https://github.com/chalk/ansi-regex

ansi-styles 2.2.1, MIT, https://github.com/chalk/ansi-styles

ansi-styles 3.2.1, MIT, https://github.com/chalk/ansi-styles

ansi-styles 4.3.0, MIT, https://github.com/chalk/ansi-styles

ansi-styles 5.2.0, MIT, https://github.com/chalk/ansi-styles

anymatch 2.0.0, ISC, https://github.com/micromatch/anymatch

anymatch 3.1.1, ISC, https://github.com/micromatch/anymatch

anymatch 3.1.2, ISC, https://github.com/micromatch/anymatch

aproba 1.2.0, ISC, https://github.com/iarna/aproba

arg 5.0.1, MIT, https://github.com/vercel/arg

argparse 1.0.10, MIT, https://github.com/nodeca/argparse

aria-query 4.2.2, Apache-2.0, https://github.com/A11yance/aria-query

arity-n 1.0.4, MIT, https://github.com/stoeffel/arityN

arr-diff 4.0.0, MIT, https://github.com/jonschlinkert/arr-diff

arr-flatten 1.1.0, MIT, https://github.com/jonschlinkert/arr-flatten

arr-union 3.1.0, MIT, https://github.com/jonschlinkert/arr-union

array-flatten 1.1.1, MIT, https://github.com/blakeembrey/array-flatten

array-flatten 2.1.2, MIT, https://github.com/blakeembrey/array-flatten

array-includes 3.1.3, MIT, https://github.com/es-shims/array-includes

array-union 1.0.2, MIT, https://github.com/sindresorhus/array-union

array-union 2.1.0, MIT, https://github.com/sindresorhus/array-union

array-uniq 1.0.3, MIT, https://github.com/sindresorhus/array-uniq

array-unique 0.3.2, MIT, https://github.com/jonschlinkert/array-unique

array.prototype.flat 1.2.4, MIT, https://github.com/es-shims/Array.prototype.flat

array.prototype.flatmap 1.2.4, MIT, https://github.com/es-shims/Array.prototype.flatMap

arrify 2.0.1, MIT, https://github.com/sindresorhus/arrify

asap 2.0.6, MIT, https://github.com/kriskowal/asap

asn1.js 5.4.1, MIT, https://github.com/indutny/asn1.js

asn1 0.2.4, MIT, https://github.com/joyent/node-asn1

assert-plus 1.0.0, MIT, https://github.com/mcavage/node-assert-plus

assert 1.5.0, MIT, https://github.com/browserify/commonjs-assert

assign-symbols 1.0.0, MIT, https://github.com/jonschlinkert/assign-symbols

ast-types-flow 0.0.7, ISC, https://github.com/kyldvs/ast-types-flow

astral-regex 2.0.0, MIT, https://github.com/kevva/astral-regex

async-each 1.0.3, MIT, https://github.com/paulmillr/async-each

async-limiter 1.0.1, MIT, https://github.com/strml/async-limiter

async 2.6.3, MIT, https://github.com/caolan/async

asynckit 0.4.0, MIT, https://github.com/alexindigo/asynckit

at-least-node 1.0.0, ISC, https://github.com/RyanZim/at-least-node

atob 2.1.2, (MIT OR Apache-2.0), git://git.coolaj86.com/coolaj86/atob.js

autoprefixer 10.3.1, MIT, https://github.com/postcss/autoprefixer

autoprefixer 9.8.6, MIT, https://github.com/postcss/autoprefixer

aws-sign2 0.7.0, Apache-2.0, https://github.com/mikeal/aws-sign

aws4 1.11.0, MIT, https://github.com/mhart/aws4

axe-core 4.1.2, MPL-2.0, https://github.com/dequelabs/axe-core

axobject-query 2.2.0, Apache-2.0, https://github.com/A11yance/axobject-query

babel-eslint 10.1.0, MIT, https://github.com/babel/babel-eslint

babel-extract-comments 1.0.0, MIT, https://github.com/jonschlinkert/babel-extract-comments

babel-jest 26.6.3, MIT, https://github.com/facebook/jest

babel-loader 8.1.0, MIT, https://github.com/babel/babel-loader

babel-plugin-dynamic-import-node 2.3.3, MIT, https://github.com/airbnb/babel-plugin-dynamic-import-node

babel-plugin-istanbul 6.0.0, BSD-3-Clause, https://github.com/istanbuljs/babel-plugin-istanbul

babel-plugin-jest-hoist 26.6.2, MIT, https://github.com/facebook/jest

babel-plugin-macros 2.8.0, MIT, https://github.com/kentcdodds/babel-plugin-macros

babel-plugin-named-asset-import 0.3.7, MIT, https://github.com/facebook/create-react-app

babel-plugin-syntax-object-rest-spread 6.13.0, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread

babel-plugin-transform-object-rest-spread 6.26.0, MIT, https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-object-rest-spread

babel-plugin-transform-react-remove-prop-types 0.4.24, MIT, https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types

babel-preset-current-node-syntax 1.0.1, MIT, https://github.com/nicolo-ribaudo/babel-preset-current-node-syntax

babel-preset-jest 26.6.2, MIT, https://github.com/facebook/jest

babel-preset-react-app 10.0.0, MIT, https://github.com/facebook/create-react-app

babel-runtime 6.26.0, MIT, https://github.com/babel/babel/tree/master/packages/babel-runtime

babylon 6.18.0, MIT, https://github.com/babel/babylon

balanced-match 1.0.0, MIT, https://github.com/juliangruber/balanced-match

base64-js 1.5.1, MIT, https://github.com/beatgammit/base64-js

base 0.11.2, MIT, https://github.com/node-base/base

batch 0.6.1, MIT, https://github.com/visionmedia/batch

bcrypt-pbkdf 1.0.2, BSD-3-Clause, https://github.com/joyent/node-bcrypt-pbkdf

bfj 7.0.2, MIT, git+https://gitlab.com/philbooth/bfj

big.js 5.2.2, MIT, https://github.com/MikeMcl/big.js

binary-extensions 1.13.1, MIT, https://github.com/sindresorhus/binary-extensions

binary-extensions 2.2.0, MIT, https://github.com/sindresorhus/binary-extensions

bluebird 3.7.2, MIT, https://github.com/petkaantonov/bluebird

bn.js 4.11.9, MIT, https://github.com/indutny/bn.js

bn.js 5.1.3, MIT, https://github.com/indutny/bn.js

body-parser 1.19.0, MIT, https://github.com/expressjs/body-parser

bonjour 3.5.0, MIT, https://github.com/watson/bonjour

boolbase 1.0.0, ISC, https://github.com/fb55/boolbase

brace-expansion 1.1.11, MIT, https://github.com/juliangruber/brace-expansion

braces 2.3.2, MIT, https://github.com/micromatch/braces

braces 3.0.2, MIT, https://github.com/micromatch/braces

brorand 1.1.0, MIT, https://github.com/indutny/brorand

browser-process-hrtime 1.0.0, BSD-2-Clause, https://github.com/kumavis/browser-process-hrtime

browserify-aes 1.2.0, MIT, https://github.com/crypto-browserify/browserify-aes

browserify-cipher 1.0.1, MIT, https://github.com/crypto-browserify/browserify-cipher

browserify-des 1.0.2, MIT, https://github.com/crypto-browserify/browserify-des

browserify-rsa 4.1.0, MIT, https://github.com/crypto-browserify/browserify-rsa

browserify-sign 4.2.1, ISC, https://github.com/crypto-browserify/browserify-sign

browserify-zlib 0.2.0, MIT, https://github.com/devongovett/browserify-zlib

browserslist 4.14.2, MIT, https://github.com/browserslist/browserslist

browserslist 4.16.3, MIT, https://github.com/browserslist/browserslist

browserslist 4.16.8, MIT, https://github.com/browserslist/browserslist

bser 2.1.1, Apache-2.0, https://github.com/facebook/watchman

buffer-from 1.1.1, MIT, https://github.com/LinusU/buffer-from

buffer-indexof 1.1.1, MIT, https://github.com/soldair/node-buffer-indexof

buffer-xor 1.0.3, MIT, https://github.com/crypto-browserify/buffer-xor

buffer 4.9.2, MIT, https://github.com/feross/buffer

builtin-modules 3.2.0, MIT, https://github.com/sindresorhus/builtin-modules

builtin-status-codes 3.0.0, MIT, https://github.com/bendrucker/builtin-status-codes

bytes 3.0.0, MIT, https://github.com/visionmedia/bytes.js

bytes 3.1.0, MIT, https://github.com/visionmedia/bytes.js

cacache 12.0.4, ISC, https://github.com/npm/cacache

cacache 15.0.5, ISC, https://github.com/npm/cacache

cache-base 1.0.1, MIT, https://github.com/jonschlinkert/cache-base

call-bind 1.0.2, MIT, https://github.com/ljharb/call-bind

caller-callsite 2.0.0, MIT, https://github.com/sindresorhus/caller-callsite

caller-path 2.0.0, MIT, https://github.com/sindresorhus/caller-path

callsites 2.0.0, MIT, https://github.com/sindresorhus/callsites

callsites 3.1.0, MIT, https://github.com/sindresorhus/callsites

camel-case 4.1.2, MIT, https://github.com/blakeembrey/change-case

camelcase-css 2.0.1, MIT, https://github.com/stevenvachon/camelcase-css

camelcase 5.3.1, MIT, https://github.com/sindresorhus/camelcase

camelcase 6.2.0, MIT, https://github.com/sindresorhus/camelcase

caniuse-api 3.0.0, MIT, https://github.com/nyalab/caniuse-api

caniuse-lite 1.0.30001251, CC-BY-4.0, https://github.com/browserslist/caniuse-lite

capture-exit 2.0.0, ISC, https://github.com/stefanpenner/capture-exit

case-sensitive-paths-webpack-plugin 2.3.0, MIT, https://github.com/Urthen/case-sensitive-paths-webpack-plugin

caseless 0.12.0, Apache-2.0, https://github.com/mikeal/caseless

chalk 1.1.3, MIT, https://github.com/chalk/chalk

chalk 2.4.2, MIT, https://github.com/chalk/chalk

chalk 3.0.0, MIT, https://github.com/chalk/chalk

chalk 4.1.0, MIT, https://github.com/chalk/chalk

chalk 4.1.2, MIT, https://github.com/chalk/chalk

char-regex 1.0.2, MIT, https://github.com/Richienb/char-regex

chart.js 3.5.1, MIT, https://github.com/chartjs/Chart.js

check-types 11.1.2, MIT, git+https://gitlab.com/philbooth/check-types.js

chokidar-cli 3.0.0, MIT, https://github.com/open-npm-tools/chokidar-cli

chokidar 2.1.8, MIT, https://github.com/paulmillr/chokidar

chokidar 3.5.1, MIT, https://github.com/paulmillr/chokidar

chokidar 3.5.2, MIT, https://github.com/paulmillr/chokidar

chownr 1.1.4, ISC, https://github.com/isaacs/chownr

chownr 2.0.0, ISC, https://github.com/isaacs/chownr

chrome-trace-event 1.0.2, MIT, github.com:samccone/chrome-trace-event

ci-info 2.0.0, MIT, https://github.com/watson/ci-info

cipher-base 1.0.4, MIT, https://github.com/crypto-browserify/cipher-base

cjs-module-lexer 0.6.0, MIT, https://github.com/guybedford/cjs-module-lexer

class-utils 0.3.6, MIT, https://github.com/jonschlinkert/class-utils

clean-css 4.2.3, MIT, https://github.com/jakubpawlowicz/clean-css

clean-stack 2.2.0, MIT, https://github.com/sindresorhus/clean-stack

cliui 5.0.0, ISC, https://github.com/yargs/cliui

cliui 6.0.0, ISC, https://github.com/yargs/cliui

co 4.6.0, MIT, https://github.com/tj/co

coa 2.0.2, MIT, https://github.com/veged/coa

collect-v8-coverage 1.0.1, MIT, https://github.com/SimenB/collect-v8-coverage

collection-visit 1.0.0, MIT, https://github.com/jonschlinkert/collection-visit

color-convert 1.9.3, MIT, https://github.com/Qix-/color-convert

color-convert 2.0.1, MIT, https://github.com/Qix-/color-convert

color-name 1.1.3, MIT, https://github.com/dfcreative/color-name

color-name 1.1.4, MIT, https://github.com/colorjs/color-name

color-string 1.6.0, MIT, https://github.com/Qix-/color-string

color 3.1.3, MIT, https://github.com/Qix-/color

color 3.2.1, MIT, https://github.com/Qix-/color

colorette 1.3.0, MIT, https://github.com/jorgebucaran/colorette

combined-stream 1.0.8, MIT, https://github.com/felixge/node-combined-stream

commander 2.20.3, MIT, https://github.com/tj/commander.js

commander 4.1.1, MIT, https://github.com/tj/commander.js

commander 6.2.1, MIT, https://github.com/tj/commander.js

common-tags 1.8.0, MIT, https://github.com/declandewet/common-tags

commondir 1.0.1, MIT, https://github.com/substack/node-commondir

component-emitter 1.3.0, MIT, https://github.com/component/emitter

compose-function 3.0.3, MIT, https://github.com/stoeffel/compose-function

compressible 2.0.18, MIT, https://github.com/jshttp/compressible

compression 1.7.4, MIT, https://github.com/expressjs/compression

concat-map 0.0.1, MIT, https://github.com/substack/node-concat-map

concat-stream 1.6.2, MIT, https://github.com/maxogden/concat-stream

confusing-browser-globals 1.0.10, MIT, https://github.com/facebook/create-react-app

connect-history-api-fallback 1.6.0, MIT, https://github.com/bripkens/connect-history-api-fallback

console-browserify 1.2.0, MIT, https://github.com/browserify/console-browserify

constants-browserify 1.0.0, MIT, https://github.com/juliangruber/constants-browserify

contains-path 0.1.0, MIT, https://github.com/jonschlinkert/contains-path

content-disposition 0.5.3, MIT, https://github.com/jshttp/content-disposition

content-type 1.0.4, MIT, https://github.com/jshttp/content-type

convert-source-map 0.3.5, MIT, https://github.com/thlorenz/convert-source-map

convert-source-map 1.7.0, MIT, https://github.com/thlorenz/convert-source-map

cookie-signature 1.0.6, MIT, https://github.com/visionmedia/node-cookie-signature

cookie 0.4.0, MIT, https://github.com/jshttp/cookie

copy-concurrently 1.0.5, ISC, https://github.com/npm/copy-concurrently

copy-descriptor 0.1.1, MIT, https://github.com/jonschlinkert/copy-descriptor

core-js-compat 3.9.0, MIT, https://github.com/zloirock/core-js

core-js-pure 3.9.0, MIT, https://github.com/zloirock/core-js

core-js 2.6.12, MIT, https://github.com/zloirock/core-js

core-js 3.9.0, MIT, https://github.com/zloirock/core-js

core-util-is 1.0.2, MIT, https://github.com/isaacs/core-util-is

cosmiconfig 5.2.1, MIT, https://github.com/davidtheclark/cosmiconfig

cosmiconfig 6.0.0, MIT, https://github.com/davidtheclark/cosmiconfig

cosmiconfig 7.0.0, MIT, https://github.com/davidtheclark/cosmiconfig

create-ecdh 4.0.4, MIT, https://github.com/crypto-browserify/createECDH

create-hash 1.2.0, MIT, https://github.com/crypto-browserify/createHash

create-hmac 1.1.7, MIT, https://github.com/crypto-browserify/createHmac

cross-spawn 4.0.2, MIT, https://github.com/IndigoUnited/node-cross-spawn

cross-spawn 6.0.5, MIT, https://github.com/moxystudio/node-cross-spawn

cross-spawn 7.0.3, MIT, https://github.com/moxystudio/node-cross-spawn

crypto-browserify 3.12.0, MIT, https://github.com/crypto-browserify/crypto-browserify

crypto-random-string 1.0.0, MIT, https://github.com/sindresorhus/crypto-random-string

css-blank-pseudo 0.1.4, CC0-1.0, https://github.com/csstools/css-blank-pseudo

css-color-names 0.0.4, MIT, https://github.com/bahamas10/css-color-names

css-declaration-sorter 4.0.1, MIT, https://github.com/Siilwyn/css-declaration-sorter

css-has-pseudo 0.10.0, CC0-1.0, https://github.com/csstools/css-has-pseudo

css-loader 4.3.0, MIT, https://github.com/webpack-contrib/css-loader

css-prefers-color-scheme 3.1.1, CC0-1.0, https://github.com/csstools/css-prefers-color-scheme

css-select-base-adapter 0.1.1, MIT, https://github.com/nrkn/css-select-base-adapter

css-select 2.1.0, BSD-2-Clause, https://github.com/fb55/css-select

css-tree 1.0.0-alpha.37, MIT, https://github.com/csstree/csstree

css-tree 1.1.2, MIT, https://github.com/csstree/csstree

css-unit-converter 1.1.2, MIT, https://github.com/andyjansson/css-unit-converter

css-what 3.4.2, BSD-2-Clause, https://github.com/fb55/css-what

css.escape 1.5.1, MIT, https://github.com/mathiasbynens/CSS.escape

css 2.2.4, MIT, https://github.com/reworkcss/css

css 3.0.0, MIT, https://github.com/reworkcss/css

cssdb 4.4.0, CC0-1.0, https://github.com/csstools/cssdb

cssesc 2.0.0, MIT, https://github.com/mathiasbynens/cssesc

cssesc 3.0.0, MIT, https://github.com/mathiasbynens/cssesc

cssnano-preset-default 4.0.7, MIT, https://github.com/cssnano/cssnano

cssnano-util-get-arguments 4.0.0, MIT, https://github.com/cssnano/cssnano

cssnano-util-get-match 4.0.0, MIT, https://github.com/cssnano/cssnano

cssnano-util-raw-cache 4.0.1, MIT, https://github.com/cssnano/cssnano

cssnano-util-same-parent 4.0.1, MIT, https://github.com/cssnano/cssnano

cssnano 4.1.10, MIT, https://github.com/cssnano/cssnano

csso 4.2.0, MIT, https://github.com/css/csso

cssom 0.3.8, MIT, https://github.com/NV/CSSOM

cssom 0.4.4, MIT, https://github.com/NV/CSSOM

cssstyle 2.3.0, MIT, https://github.com/jsdom/cssstyle

csstype 3.0.8, MIT, https://github.com/frenic/csstype

cyclist 1.0.1, MIT, https://github.com/mafintosh/cyclist

d 1.0.1, ISC, https://github.com/medikoo/d

damerau-levenshtein 1.0.6, BSD-2-Clause, https://github.com/tad-lispy/node-damerau-levenshtein

dashdash 1.14.1, MIT, https://github.com/trentm/node-dashdash

data-urls 2.0.0, MIT, https://github.com/jsdom/data-urls

debug 2.6.9, MIT, https://github.com/visionmedia/debug

debug 3.2.7, MIT, https://github.com/visionmedia/debug

debug 4.3.1, MIT, https://github.com/visionmedia/debug

debug 4.3.2, MIT, https://github.com/visionmedia/debug

decamelize 1.2.0, MIT, https://github.com/sindresorhus/decamelize

decimal.js 10.2.1, MIT, https://github.com/MikeMcl/decimal.js

decode-uri-component 0.2.0, MIT, https://github.com/SamVerschueren/decode-uri-component

dedent 0.7.0, MIT, https://github.com/dmnd/dedent

deep-equal 1.1.1, MIT, https://github.com/substack/node-deep-equal

deep-is 0.1.3, MIT, https://github.com/thlorenz/deep-is

deepmerge 4.2.2, MIT, https://github.com/TehShrike/deepmerge

default-gateway 4.2.0, BSD-2-Clause, https://github.com/silverwind/default-gateway

define-properties 1.1.3, MIT, https://github.com/ljharb/define-properties

define-property 0.2.5, MIT, https://github.com/jonschlinkert/define-property

define-property 1.0.0, MIT, https://github.com/jonschlinkert/define-property

define-property 2.0.2, MIT, https://github.com/jonschlinkert/define-property

defined 1.0.0, MIT, https://github.com/substack/defined

del 4.1.1, MIT, https://github.com/sindresorhus/del

delayed-stream 1.0.0, MIT, https://github.com/felixge/node-delayed-stream

depd 1.1.2, MIT, https://github.com/dougwilson/nodejs-depd

dequal 2.0.2, MIT, https://github.com/lukeed/dequal

des.js 1.0.1, MIT, https://github.com/indutny/des.js

destroy 1.0.4, MIT, https://github.com/stream-utils/destroy

detect-newline 3.1.0, MIT, https://github.com/sindresorhus/detect-newline

detect-node 2.0.4, ISC, https://github.com/iliakan/detect-node

detect-port-alt 1.1.6, MIT, https://github.com/node-modules/detect-port

detective 5.2.0, MIT, https://github.com/browserify/detective

didyoumean 1.2.2, Apache-2.0, https://github.com/dcporter/didyoumean.js

diff-sequences 26.6.2, MIT, https://github.com/facebook/jest

diff-sequences 27.0.6, MIT, https://github.com/facebook/jest

diffie-hellman 5.0.3, MIT, https://github.com/crypto-browserify/diffie-hellman

dir-glob 3.0.1, MIT, https://github.com/kevva/dir-glob

dlv 1.1.3, MIT, https://github.com/developit/dlv

dns-equal 1.0.0, MIT, https://github.com/watson/dns-equal

dns-packet 1.3.4, MIT, https://github.com/mafintosh/dns-packet

dns-txt 2.0.2, MIT, https://github.com/watson/dns-txt

doctrine 1.5.0, BSD, https://github.com/eslint/doctrine

doctrine 2.1.0, Apache-2.0, https://github.com/eslint/doctrine

doctrine 3.0.0, Apache-2.0, https://github.com/eslint/doctrine

dom-accessibility-api 0.5.7, MIT, https://github.com/eps1lon/dom-accessibility-api

dom-converter 0.2.0, MIT, https://github.com/AriaMinaei/dom-converter

dom-serializer 0.2.2, MIT, https://github.com/cheeriojs/dom-renderer

domain-browser 1.2.0, MIT, https://github.com/bevry/domain-browser

domelementtype 1.3.1, BSD-2-Clause, https://github.com/fb55/domelementtype

domelementtype 2.1.0, BSD-2-Clause, https://github.com/fb55/domelementtype

domexception 2.0.1, MIT, https://github.com/jsdom/domexception

domhandler 2.4.2, BSD-2-Clause, https://github.com/fb55/DomHandler

domutils 1.7.0, BSD-2-Clause, https://github.com/FB55/domutils

dot-case 3.0.4, MIT, https://github.com/blakeembrey/change-case

dot-prop 5.3.0, MIT, https://github.com/sindresorhus/dot-prop

dotenv-expand 5.1.0, BSD-2-Clause,

dotenv 8.2.0, BSD-2-Clause, https://github.com/motdotla/dotenv

duplexer 0.1.2, MIT, https://github.com/Raynos/duplexer

duplexify 3.7.1, MIT, https://github.com/mafintosh/duplexify

ecc-jsbn 0.1.2, MIT, https://github.com/quartzjer/ecc-jsbn

ee-first 1.1.1, MIT, https://github.com/jonathanong/ee-first

ejs 2.7.4, Apache-2.0, https://github.com/mde/ejs

electron-to-chromium 1.3.671, ISC, https://github.com/kilian/electron-to-chromium

electron-to-chromium 1.3.812, ISC, https://github.com/kilian/electron-to-chromium

elliptic 6.5.4, MIT, https://github.com/indutny/elliptic

emittery 0.7.2, MIT, https://github.com/sindresorhus/emittery

emoji-regex 7.0.3, MIT, https://github.com/mathiasbynens/emoji-regex

emoji-regex 8.0.0, MIT, https://github.com/mathiasbynens/emoji-regex

emoji-regex 9.2.1, MIT, https://github.com/mathiasbynens/emoji-regex

emojis-list 2.1.0, MIT, https://github.com/kikobeats/emojis-list

emojis-list 3.0.0, MIT, https://github.com/kikobeats/emojis-list

encodeurl 1.0.2, MIT, https://github.com/pillarjs/encodeurl

end-of-stream 1.4.4, MIT, https://github.com/mafintosh/end-of-stream

enhanced-resolve 4.5.0, MIT, https://github.com/webpack/enhanced-resolve

enquirer 2.3.6, MIT, https://github.com/enquirer/enquirer

entities 1.1.2, BSD-2-Clause, https://github.com/fb55/entities

entities 2.2.0, BSD-2-Clause, https://github.com/fb55/entities

errno 0.1.8, MIT, https://github.com/rvagg/node-errno

error-ex 1.3.2, MIT, https://github.com/qix-/node-error-ex

error-stack-parser 2.0.6, MIT, https://github.com/stacktracejs/error-stack-parser

es-abstract 1.17.7, MIT, https://github.com/ljharb/es-abstract

es-abstract 1.18.0-next.2, MIT, https://github.com/ljharb/es-abstract

es-abstract 1.18.5, MIT, https://github.com/ljharb/es-abstract

es-to-primitive 1.2.1, MIT, https://github.com/ljharb/es-to-primitive

es5-ext 0.10.53, ISC, https://github.com/medikoo/es5-ext

es6-iterator 2.0.3, MIT, https://github.com/medikoo/es6-iterator

es6-symbol 3.1.3, ISC, https://github.com/medikoo/es6-symbol

escalade 3.1.1, MIT, https://github.com/lukeed/escalade

escape-html 1.0.3, MIT, https://github.com/component/escape-html

escape-string-regexp 1.0.5, MIT, https://github.com/sindresorhus/escape-string-regexp

escape-string-regexp 2.0.0, MIT, https://github.com/sindresorhus/escape-string-regexp

escape-string-regexp 4.0.0, MIT, https://github.com/sindresorhus/escape-string-regexp

escodegen 1.14.3, BSD-2-Clause, https://github.com/estools/escodegen

eslint-config-prettier 8.3.0, MIT, https://github.com/prettier/eslint-config-prettier

eslint-config-react-app 6.0.0, MIT, https://github.com/facebook/create-react-app

eslint-import-resolver-node 0.3.4, MIT, https://github.com/benmosher/eslint-plugin-import

eslint-module-utils 2.6.0, MIT, https://github.com/benmosher/eslint-plugin-import

eslint-plugin-flowtype 5.2.2, BSD-3-Clause, https://github.com/gajus/eslint-plugin-flowtype

eslint-plugin-import 2.22.1, MIT, https://github.com/benmosher/eslint-plugin-import

eslint-plugin-jest 24.1.5, MIT, https://github.com/jest-community/eslint-plugin-jest

eslint-plugin-jsx-a11y 6.4.1, MIT, https://github.com/evcohen/eslint-plugin-jsx-a11y

eslint-plugin-prettier 3.4.0, MIT, https://github.com/prettier/eslint-plugin-prettier

eslint-plugin-react-hooks 4.2.0, MIT, https://github.com/facebook/react

eslint-plugin-react 7.22.0, MIT, https://github.com/yannickcr/eslint-plugin-react

eslint-plugin-react 7.24.0, MIT, https://github.com/yannickcr/eslint-plugin-react

eslint-plugin-testing-library 3.10.1, MIT, https://github.com/testing-library/eslint-plugin-testing-library

eslint-scope 4.0.3, BSD-2-Clause, https://github.com/eslint/eslint-scope

eslint-scope 5.1.1, BSD-2-Clause, https://github.com/eslint/eslint-scope

eslint-utils 2.1.0, MIT, https://github.com/mysticatea/eslint-utils

eslint-utils 3.0.0, MIT, https://github.com/mysticatea/eslint-utils

eslint-visitor-keys 1.3.0, Apache-2.0, https://github.com/eslint/eslint-visitor-keys

eslint-visitor-keys 2.0.0, Apache-2.0, https://github.com/eslint/eslint-visitor-keys

eslint-webpack-plugin 2.5.2, MIT, https://github.com/webpack-contrib/eslint-webpack-plugin

eslint 7.20.0, MIT, https://github.com/eslint/eslint

eslint 7.32.0, MIT, https://github.com/eslint/eslint

espree 7.3.1, BSD-2-Clause, https://github.com/eslint/espree

esprima 4.0.1, BSD-2-Clause, https://github.com/jquery/esprima

esquery 1.4.0, BSD-3-Clause, https://github.com/estools/esquery

esrecurse 4.3.0, BSD-2-Clause, https://github.com/estools/esrecurse

estraverse 4.3.0, BSD-2-Clause, https://github.com/estools/estraverse

estraverse 5.2.0, BSD-2-Clause, https://github.com/estools/estraverse

estree-walker 0.6.1, MIT, https://github.com/Rich-Harris/estree-walker

estree-walker 1.0.1, MIT, https://github.com/Rich-Harris/estree-walker

esutils 2.0.3, BSD-2-Clause, https://github.com/estools/esutils

etag 1.8.1, MIT, https://github.com/jshttp/etag

event-stream 3.3.4, MIT, https://github.com/dominictarr/event-stream

eventemitter3 4.0.7, MIT, https://github.com/primus/eventemitter3

events 3.2.0, MIT, https://github.com/Gozala/events

eventsource 1.0.7, MIT, https://github.com/EventSource/eventsource

evp_bytestokey 1.0.3, MIT, https://github.com/crypto-browserify/EVP_BytesToKey

exec-sh 0.3.4, MIT, https://github.com/tsertkov/exec-sh

execa 1.0.0, MIT, https://github.com/sindresorhus/execa

execa 4.1.0, MIT, https://github.com/sindresorhus/execa

exit 0.1.2, MIT, https://github.com/cowboy/node-exit

expand-brackets 2.1.4, MIT, https://github.com/jonschlinkert/expand-brackets

expect 26.6.2, MIT, https://github.com/facebook/jest

express 4.17.1, MIT, https://github.com/expressjs/express

ext 1.4.0, ISC, https://github.com/medikoo/es5-ext/tree/ext

extend-shallow 2.0.1, MIT, https://github.com/jonschlinkert/extend-shallow

extend-shallow 3.0.2, MIT, https://github.com/jonschlinkert/extend-shallow

extend 3.0.2, MIT, https://github.com/justmoon/node-extend

extglob 2.0.4, MIT, https://github.com/micromatch/extglob

extsprintf 1.3.0, MIT, https://github.com/davepacheco/node-extsprintf

extsprintf 1.4.0, MIT, https://github.com/davepacheco/node-extsprintf

fast-deep-equal 3.1.3, MIT, https://github.com/epoberezkin/fast-deep-equal

fast-diff 1.2.0, Apache-2.0, https://github.com/jhchen/fast-diff

fast-glob 3.2.5, MIT, https://github.com/mrmlnc/fast-glob

fast-glob 3.2.7, MIT, https://github.com/mrmlnc/fast-glob

fast-json-stable-stringify 2.1.0, MIT, https://github.com/epoberezkin/fast-json-stable-stringify

fast-levenshtein 2.0.6, MIT, https://github.com/hiddentao/fast-levenshtein

fastq 1.10.1, ISC, https://github.com/mcollina/fastq

faye-websocket 0.11.3, Apache-2.0, https://github.com/faye/faye-websocket-node

fb-watchman 2.0.1, Apache-2.0, https://github.com/facebook/watchman

figgy-pudding 3.5.2, ISC, https://github.com/npm/figgy-pudding

file-entry-cache 6.0.1, MIT, https://github.com/royriojas/file-entry-cache

file-loader 6.1.1, MIT, https://github.com/webpack-contrib/file-loader

filesize 6.1.0, BSD-3-Clause, https://github.com/avoidwork/filesize.js

fill-range 4.0.0, MIT, https://github.com/jonschlinkert/fill-range

fill-range 7.0.1, MIT, https://github.com/jonschlinkert/fill-range

finalhandler 1.1.2, MIT, https://github.com/pillarjs/finalhandler

find-cache-dir 2.1.0, MIT, https://github.com/avajs/find-cache-dir

find-cache-dir 3.3.1, MIT, https://github.com/avajs/find-cache-dir

find-up 1.1.2, MIT, https://github.com/sindresorhus/find-up

find-up 2.1.0, MIT, https://github.com/sindresorhus/find-up

find-up 3.0.0, MIT, https://github.com/sindresorhus/find-up

find-up 4.1.0, MIT, https://github.com/sindresorhus/find-up

flat-cache 3.0.4, MIT, https://github.com/royriojas/flat-cache

flatted 3.1.1, ISC, https://github.com/WebReflection/flatted

flatten 1.0.3, MIT, https://github.com/mk-pmb/flatten-js

flush-write-stream 1.1.1, MIT, https://github.com/mafintosh/flush-write-stream

follow-redirects 1.13.2, MIT, https://github.com/follow-redirects/follow-redirects

for-in 1.0.2, MIT, https://github.com/jonschlinkert/for-in

forever-agent 0.6.1, Apache-2.0, https://github.com/mikeal/forever-agent

fork-ts-checker-webpack-plugin 4.1.6, MIT, https://github.com/TypeStrong/fork-ts-checker-webpack-plugin

form-data 2.3.3, MIT, https://github.com/form-data/form-data

forwarded 0.1.2, MIT, https://github.com/jshttp/forwarded

fraction.js 4.1.1, MIT, https://github.com/infusion/Fraction.js

fragment-cache 0.2.1, MIT, https://github.com/jonschlinkert/fragment-cache

fresh 0.5.2, MIT, https://github.com/jshttp/fresh

from2 2.3.0, MIT, https://github.com/hughsk/from2

from 0.1.7, MIT, https://github.com/dominictarr/from

fs-extra 10.0.0, MIT, https://github.com/jprichardson/node-fs-extra

fs-extra 7.0.1, MIT, https://github.com/jprichardson/node-fs-extra

fs-extra 8.1.0, MIT, https://github.com/jprichardson/node-fs-extra

fs-extra 9.1.0, MIT, https://github.com/jprichardson/node-fs-extra

fs-minipass 2.1.0, ISC, https://github.com/npm/fs-minipass

fs-write-stream-atomic 1.0.10, ISC, https://github.com/npm/fs-write-stream-atomic

fs.realpath 1.0.0, ISC, https://github.com/isaacs/fs.realpath

function-bind 1.1.1, MIT, https://github.com/Raynos/function-bind

functional-red-black-tree 1.0.1, MIT, https://github.com/mikolalysenko/functional-red-black-tree

gensync 1.0.0-beta.2, MIT, https://github.com/loganfsmyth/gensync

get-caller-file 2.0.5, ISC, https://github.com/stefanpenner/get-caller-file

get-intrinsic 1.1.1, MIT, https://github.com/ljharb/get-intrinsic

get-own-enumerable-property-symbols 3.0.2, ISC, https://github.com/mightyiam/get-own-enumerable-property-symbols

get-package-type 0.1.0, MIT, https://github.com/cfware/get-package-type

get-stream 4.1.0, MIT, https://github.com/sindresorhus/get-stream

get-stream 5.2.0, MIT, https://github.com/sindresorhus/get-stream

get-value 2.0.6, MIT, https://github.com/jonschlinkert/get-value

getpass 0.1.7, MIT, https://github.com/arekinath/node-getpass

glob-parent 3.1.0, ISC, https://github.com/es128/glob-parent

glob-parent 5.1.1, ISC, https://github.com/gulpjs/glob-parent

glob-parent 5.1.2, ISC, https://github.com/gulpjs/glob-parent

glob-parent 6.0.1, ISC, https://github.com/gulpjs/glob-parent

glob 7.1.6, ISC, https://github.com/isaacs/node-glob

glob 7.1.7, ISC, https://github.com/isaacs/node-glob

global-modules 2.0.0, MIT, https://github.com/jonschlinkert/global-modules

global-prefix 3.0.0, MIT, https://github.com/jonschlinkert/global-prefix

globals 11.12.0, MIT, https://github.com/sindresorhus/globals

globals 12.4.0, MIT, https://github.com/sindresorhus/globals

globals 13.11.0, MIT, https://github.com/sindresorhus/globals

globby 11.0.1, MIT, https://github.com/sindresorhus/globby

globby 11.0.2, MIT, https://github.com/sindresorhus/globby

globby 11.0.4, MIT, https://github.com/sindresorhus/globby

globby 6.1.0, MIT, https://github.com/sindresorhus/globby

graceful-fs 4.2.6, ISC, https://github.com/isaacs/node-graceful-fs

growly 1.3.0, MIT, https://github.com/theabraham/growly

gzip-size 5.1.1, MIT, https://github.com/sindresorhus/gzip-size

handle-thing 2.0.1, MIT, https://github.com/indutny/handle-thing

har-schema 2.0.0, ISC, https://github.com/ahmadnassri/har-schema

har-validator 5.1.5, MIT, https://github.com/ahmadnassri/node-har-validator

harmony-reflect 1.6.1, (Apache-2.0 OR MPL-1.1), git+https://tvcutsem github.com/tvcutsem/harmony-reflect

has-ansi 2.0.0, MIT, https://github.com/sindresorhus/has-ansi

has-bigints 1.0.1, MIT, https://github.com/ljharb/has-bigints

has-flag 3.0.0, MIT, https://github.com/sindresorhus/has-flag

has-flag 4.0.0, MIT, https://github.com/sindresorhus/has-flag

has-symbols 1.0.1, MIT, https://github.com/ljharb/has-symbols

has-symbols 1.0.2, MIT, https://github.com/inspect-js/has-symbols

has-tostringtag 1.0.0, MIT, https://github.com/inspect-js/has-tostringtag

has-value 0.3.1, MIT, https://github.com/jonschlinkert/has-value

has-value 1.0.0, MIT, https://github.com/jonschlinkert/has-value

has-values 0.1.4, MIT, https://github.com/jonschlinkert/has-values

has-values 1.0.0, MIT, https://github.com/jonschlinkert/has-values

has 1.0.3, MIT, https://github.com/tarruda/has

hash-base 3.1.0, MIT, https://github.com/crypto-browserify/hash-base

hash.js 1.1.7, MIT, https://github.com/indutny/hash.js

he 1.2.0, MIT, https://github.com/mathiasbynens/he

hex-color-regex 1.1.0, MIT, https://github.com/regexps/hex-color-regex

history 4.10.1, MIT, https://github.com/ReactTraining/history

hmac-drbg 1.0.1, MIT, https://github.com/indutny/hmac-drbg

hoist-non-react-statics 3.3.2, BSD-3-Clause, https://github.com/mridgway/hoist-non-react-statics

hoopy 0.1.4, MIT, git+https://gitlab.com/philbooth/hoopy

hosted-git-info 2.8.9, ISC, https://github.com/npm/hosted-git-info

hpack.js 2.1.6, MIT, https://github.com/indutny/hpack.js

hsl-regex 1.0.0, MIT, https://github.com/regexps/hsl-regex

hsla-regex 1.0.0, MIT, https://github.com/regexps/hsla-regex

html-comment-regex 1.1.2, MIT, https://github.com/stevemao/html-comment-regex

html-encoding-sniffer 2.0.1, MIT, https://github.com/jsdom/html-encoding-sniffer

html-entities 1.4.0, MIT, https://github.com/mdevils/node-html-entities

html-escaper 2.0.2, MIT, https://github.com/WebReflection/html-escaper

html-minifier-terser 5.1.1, MIT, https://github.com/DanielRuf/html-minifier-terser

html-tags 3.1.0, MIT, https://github.com/sindresorhus/html-tags

html-webpack-plugin 4.5.0, MIT, https://github.com/jantimon/html-webpack-plugin

htmlparser2 3.10.1, MIT, https://github.com/fb55/htmlparser2

http-deceiver 1.2.7, MIT, https://github.com/indutny/http-deceiver

http-errors 1.6.3, MIT, https://github.com/jshttp/http-errors

http-errors 1.7.2, MIT, https://github.com/jshttp/http-errors

http-errors 1.7.3, MIT, https://github.com/jshttp/http-errors

http-parser-js 0.5.3, MIT, https://github.com/creationix/http-parser-js

http-proxy-middleware 0.19.1, MIT, https://github.com/chimurai/http-proxy-middleware

http-proxy 1.18.1, MIT, https://github.com/http-party/node-http-proxy

http-signature 1.2.0, MIT, https://github.com/joyent/node-http-signature

https-browserify 1.0.0, MIT, https://github.com/substack/https-browserify

human-signals 1.1.1, Apache-2.0, https://github.com/ehmicky/human-signals

iconv-lite 0.4.24, MIT, https://github.com/ashtuchkin/iconv-lite

icss-utils 4.1.1, ISC, https://github.com/css-modules/icss-utils

identity-obj-proxy 3.0.0, MIT, https://github.com/keyanzhang/identity-obj-proxy

ieee754 1.2.1, BSD-3-Clause, https://github.com/feross/ieee754

iferr 0.1.5, MIT, https://github.com/shesek/iferr

ignore 4.0.6, MIT, https://github.com/kaelzhang/node-ignore

ignore 5.1.8, MIT, https://github.com/kaelzhang/node-ignore

immer 8.0.1, MIT, https://github.com/immerjs/immer

import-cwd 2.1.0, MIT, https://github.com/sindresorhus/import-cwd

import-cwd 3.0.0, MIT, https://github.com/sindresorhus/import-cwd

import-fresh 2.0.0, MIT, https://github.com/sindresorhus/import-fresh

import-fresh 3.3.0, MIT, https://github.com/sindresorhus/import-fresh

import-from 2.1.0, MIT, https://github.com/sindresorhus/import-from

import-from 3.0.0, MIT, https://github.com/sindresorhus/import-from

import-local 2.0.0, MIT, https://github.com/sindresorhus/import-local

import-local 3.0.2, MIT, https://github.com/sindresorhus/import-local

imurmurhash 0.1.4, MIT, https://github.com/jensyt/imurmurhash-js

indent-string 4.0.0, MIT, https://github.com/sindresorhus/indent-string

indexes-of 1.0.1, MIT, https://github.com/dominictarr/indexes-of

infer-owner 1.0.4, ISC, https://github.com/npm/infer-owner

inflight 1.0.6, ISC, https://github.com/npm/inflight

inherits 2.0.1, ISC, https://github.com/isaacs/inherits

inherits 2.0.3, ISC, https://github.com/isaacs/inherits

inherits 2.0.4, ISC, https://github.com/isaacs/inherits

ini 1.3.8, ISC, https://github.com/isaacs/ini

internal-ip 4.3.0, MIT, https://github.com/sindresorhus/internal-ip

internal-slot 1.0.3, MIT, https://github.com/ljharb/internal-slot

ip-regex 2.1.0, MIT, https://github.com/sindresorhus/ip-regex

ip 1.1.5, MIT, https://github.com/indutny/node-ip

ipaddr.js 1.9.1, MIT, https://github.com/whitequark/ipaddr.js

is-absolute-url 2.1.0, MIT, https://github.com/sindresorhus/is-absolute-url

is-absolute-url 3.0.3, MIT, https://github.com/sindresorhus/is-absolute-url

is-accessor-descriptor 0.1.6, MIT, https://github.com/jonschlinkert/is-accessor-descriptor

is-accessor-descriptor 1.0.0, MIT, https://github.com/jonschlinkert/is-accessor-descriptor

is-arguments 1.1.0, MIT, https://github.com/inspect-js/is-arguments

is-arrayish 0.2.1, MIT, https://github.com/qix-/node-is-arrayish

is-arrayish 0.3.2, MIT, https://github.com/qix-/node-is-arrayish

is-bigint 1.0.4, MIT, https://github.com/inspect-js/is-bigint

is-binary-path 1.0.1, MIT, https://github.com/sindresorhus/is-binary-path

is-binary-path 2.1.0, MIT, https://github.com/sindresorhus/is-binary-path

is-boolean-object 1.1.2, MIT, https://github.com/inspect-js/is-boolean-object

is-buffer 1.1.6, MIT, https://github.com/feross/is-buffer

is-callable 1.2.3, MIT, https://github.com/ljharb/is-callable

is-callable 1.2.4, MIT, https://github.com/inspect-js/is-callable

is-ci 2.0.0, MIT, https://github.com/watson/is-ci

is-color-stop 1.1.0, MIT, https://github.com/pigcan/is-color-stop

is-core-module 2.2.0, MIT, https://github.com/inspect-js/is-core-module

is-data-descriptor 0.1.4, MIT, https://github.com/jonschlinkert/is-data-descriptor

is-data-descriptor 1.0.0, MIT, https://github.com/jonschlinkert/is-data-descriptor

is-date-object 1.0.2, MIT, https://github.com/ljharb/is-date-object

is-descriptor 0.1.6, MIT, https://github.com/jonschlinkert/is-descriptor

is-descriptor 1.0.2, MIT, https://github.com/jonschlinkert/is-descriptor

is-directory 0.3.1, MIT, https://github.com/jonschlinkert/is-directory

is-docker 2.1.1, MIT, https://github.com/sindresorhus/is-docker

is-extendable 0.1.1, MIT, https://github.com/jonschlinkert/is-extendable

is-extendable 1.0.1, MIT, https://github.com/jonschlinkert/is-extendable

is-extglob 2.1.1, MIT, https://github.com/jonschlinkert/is-extglob

is-fullwidth-code-point 2.0.0, MIT, https://github.com/sindresorhus/is-fullwidth-code-point

is-fullwidth-code-point 3.0.0, MIT, https://github.com/sindresorhus/is-fullwidth-code-point

is-generator-fn 2.1.0, MIT, https://github.com/sindresorhus/is-generator-fn

is-glob 3.1.0, MIT, https://github.com/jonschlinkert/is-glob

is-glob 4.0.1, MIT, https://github.com/micromatch/is-glob

is-module 1.0.0, MIT, https://github.com/component/is-module

is-negative-zero 2.0.1, MIT, https://github.com/inspect-js/is-negative-zero

is-number-object 1.0.6, MIT, https://github.com/inspect-js/is-number-object

is-number 3.0.0, MIT, https://github.com/jonschlinkert/is-number

is-number 7.0.0, MIT, https://github.com/jonschlinkert/is-number

is-obj 1.0.1, MIT, https://github.com/sindresorhus/is-obj

is-obj 2.0.0, MIT, https://github.com/sindresorhus/is-obj

is-path-cwd 2.2.0, MIT, https://github.com/sindresorhus/is-path-cwd

is-path-in-cwd 2.1.0, MIT, https://github.com/sindresorhus/is-path-in-cwd

is-path-inside 2.1.0, MIT, https://github.com/sindresorhus/is-path-inside

is-plain-obj 1.1.0, MIT, https://github.com/sindresorhus/is-plain-obj

is-plain-object 2.0.4, MIT, https://github.com/jonschlinkert/is-plain-object

is-potential-custom-element-name 1.0.0, MIT, https://github.com/mathiasbynens/is-potential-custom-element-name

is-regex 1.1.2, MIT, https://github.com/inspect-js/is-regex

is-regex 1.1.4, MIT, https://github.com/inspect-js/is-regex

is-regexp 1.0.0, MIT, https://github.com/sindresorhus/is-regexp

is-resolvable 1.1.0, ISC, https://github.com/shinnn/is-resolvable

is-root 2.1.0, MIT, https://github.com/sindresorhus/is-root

is-stream 1.1.0, MIT, https://github.com/sindresorhus/is-stream

is-stream 2.0.0, MIT, https://github.com/sindresorhus/is-stream

is-string 1.0.5, MIT, https://github.com/ljharb/is-string

is-string 1.0.7, MIT, https://github.com/ljharb/is-string

is-svg 3.0.0, MIT, https://github.com/sindresorhus/is-svg

is-symbol 1.0.3, MIT, https://github.com/inspect-js/is-symbol

is-symbol 1.0.4, MIT, https://github.com/inspect-js/is-symbol

is-typedarray 1.0.0, MIT, https://github.com/hughsk/is-typedarray

is-utf8 0.2.1, MIT, https://github.com/wayfind/is-utf8

is-windows 1.0.2, MIT, https://github.com/jonschlinkert/is-windows

is-wsl 1.1.0, MIT, https://github.com/sindresorhus/is-wsl

is-wsl 2.2.0, MIT, https://github.com/sindresorhus/is-wsl

isarray 0.0.1, MIT, https://github.com/juliangruber/isarray

isarray 1.0.0, MIT, https://github.com/juliangruber/isarray

isexe 2.0.0, ISC, https://github.com/isaacs/isexe

isobject 2.1.0, MIT, https://github.com/jonschlinkert/isobject

isobject 3.0.1, MIT, https://github.com/jonschlinkert/isobject

isstream 0.1.2, MIT, https://github.com/rvagg/isstream

istanbul-lib-coverage 3.0.0, BSD-3-Clause, https://github.com/istanbuljs/istanbuljs

istanbul-lib-instrument 4.0.3, BSD-3-Clause, https://github.com/istanbuljs/istanbuljs

istanbul-lib-report 3.0.0, BSD-3-Clause, https://github.com/istanbuljs/istanbuljs

istanbul-lib-source-maps 4.0.0, BSD-3-Clause, https://github.com/istanbuljs/istanbuljs

istanbul-reports 3.0.2, BSD-3-Clause, https://github.com/istanbuljs/istanbuljs

jest-changed-files 26.6.2, MIT, https://github.com/facebook/jest

jest-circus 26.6.0, MIT, https://github.com/facebook/jest

jest-cli 26.6.3, MIT, https://github.com/facebook/jest

jest-config 26.6.3, MIT, https://github.com/facebook/jest

jest-diff 26.6.2, MIT, https://github.com/facebook/jest

jest-diff 27.0.6, MIT, https://github.com/facebook/jest

jest-docblock 26.0.0, MIT, https://github.com/facebook/jest

jest-each 26.6.2, MIT, https://github.com/facebook/jest

jest-environment-jsdom 26.6.2, MIT, https://github.com/facebook/jest

jest-environment-node 26.6.2, MIT, https://github.com/facebook/jest

jest-get-type 26.3.0, MIT, https://github.com/facebook/jest

jest-get-type 27.0.6, MIT, https://github.com/facebook/jest

jest-haste-map 26.6.2, MIT, https://github.com/facebook/jest

jest-jasmine2 26.6.3, MIT, https://github.com/facebook/jest

jest-leak-detector 26.6.2, MIT, https://github.com/facebook/jest

jest-matcher-utils 26.6.2, MIT, https://github.com/facebook/jest

jest-message-util 26.6.2, MIT, https://github.com/facebook/jest

jest-mock 26.6.2, MIT, https://github.com/facebook/jest

jest-pnp-resolver 1.2.2, MIT, https://github.com/arcanis/jest-pnp-resolver

jest-regex-util 26.0.0, MIT, https://github.com/facebook/jest

jest-resolve-dependencies 26.6.3, MIT, https://github.com/facebook/jest

jest-resolve 26.6.0, MIT, https://github.com/facebook/jest

jest-resolve 26.6.2, MIT, https://github.com/facebook/jest

jest-runner 26.6.3, MIT, https://github.com/facebook/jest

jest-runtime 26.6.3, MIT, https://github.com/facebook/jest

jest-serializer 26.6.2, MIT, https://github.com/facebook/jest

jest-snapshot 26.6.2, MIT, https://github.com/facebook/jest

jest-util 26.6.2, MIT, https://github.com/facebook/jest

jest-validate 26.6.2, MIT, https://github.com/facebook/jest

jest-watch-typeahead 0.6.1, MIT, https://github.com/jest-community/jest-watch-typeahead

jest-watcher 26.6.2, MIT, https://github.com/facebook/jest

jest-worker 24.9.0, MIT, https://github.com/facebook/jest

jest-worker 26.6.2, MIT, https://github.com/facebook/jest

jest 26.6.0, MIT, https://github.com/facebook/jest

js-tokens 4.0.0, MIT, https://github.com/lydell/js-tokens

js-yaml 3.14.1, MIT, https://github.com/nodeca/js-yaml

jsbn 0.1.1, MIT, https://github.com/andyperlitch/jsbn

jsdom 16.4.0, MIT, https://github.com/jsdom/jsdom

jsesc 0.5.0, MIT, https://github.com/mathiasbynens/jsesc

jsesc 2.5.2, MIT, https://github.com/mathiasbynens/jsesc

json-parse-better-errors 1.0.2, MIT, https://github.com/zkat/json-parse-better-errors

json-parse-even-better-errors 2.3.1, MIT, https://github.com/npm/json-parse-even-better-errors

json-schema-traverse 0.4.1, MIT, https://github.com/epoberezkin/json-schema-traverse

json-schema-traverse 1.0.0, MIT, https://github.com/epoberezkin/json-schema-traverse

json-schema 0.2.3, AFLv2.1, BSD, https://github.com/kriszyp/json-schema

json-stable-stringify-without-jsonify 1.0.1, MIT, https://github.com/samn/json-stable-stringify

json-stringify-safe 5.0.1, ISC, https://github.com/isaacs/json-stringify-safe

json3 3.3.3, MIT, https://github.com/bestiejs/json3

json5 1.0.1, MIT, https://github.com/json5/json5

json5 2.2.0, MIT, https://github.com/json5/json5

jsonfile 4.0.0, MIT, https://github.com/jprichardson/node-jsonfile

jsonfile 6.1.0, MIT, https://github.com/jprichardson/node-jsonfile

jsprim 1.4.1, MIT, https://github.com/joyent/node-jsprim

jsx-ast-utils 3.2.0, MIT, https://github.com/evcohen/jsx-ast-utils

killable 1.0.1, ISC, https://github.com/marten-de-vries/killable

kind-of 3.2.2, MIT, https://github.com/jonschlinkert/kind-of

kind-of 4.0.0, MIT, https://github.com/jonschlinkert/kind-of

kind-of 5.1.0, MIT, https://github.com/jonschlinkert/kind-of

kind-of 6.0.3, MIT, https://github.com/jonschlinkert/kind-of

kleur 3.0.3, MIT, https://github.com/lukeed/kleur

klona 2.0.4, MIT, https://github.com/lukeed/klona

language-subtag-registry 0.3.21, ODC-By-1.0, https://github.com/mattcg/language-subtag-registry

language-tags 1.0.5, MIT, https://github.com/mattcg/language-tags

last-call-webpack-plugin 3.0.0, MIT, https://github.com/NMFR/last-call-webpack-plugin

leven 3.1.0, MIT, https://github.com/sindresorhus/leven

levn 0.3.0, MIT, https://github.com/gkz/levn

levn 0.4.1, MIT, https://github.com/gkz/levn

lilconfig 2.0.3, MIT, https://github.com/antonk52/lilconfig

lines-and-columns 1.1.6, MIT, https://github.com/eventualbuddha/lines-and-columns

load-json-file 1.1.0, MIT, https://github.com/sindresorhus/load-json-file

load-json-file 2.0.0, MIT, https://github.com/sindresorhus/load-json-file

loader-runner 2.4.0, MIT, https://github.com/webpack/loader-runner

loader-utils 1.2.3, MIT, https://github.com/webpack/loader-utils

loader-utils 1.4.0, MIT, https://github.com/webpack/loader-utils

loader-utils 2.0.0, MIT, https://github.com/webpack/loader-utils

locate-path 2.0.0, MIT, https://github.com/sindresorhus/locate-path

locate-path 3.0.0, MIT, https://github.com/sindresorhus/locate-path

locate-path 5.0.0, MIT, https://github.com/sindresorhus/locate-path

lodash._reinterpolate 3.0.0, MIT, https://github.com/lodash/lodash

lodash.clonedeep 4.5.0, MIT, https://github.com/lodash/lodash

lodash.debounce 4.0.8, MIT, https://github.com/lodash/lodash

lodash.memoize 4.1.2, MIT, https://github.com/lodash/lodash

lodash.merge 4.6.2, MIT, https://github.com/lodash/lodash

lodash.sortby 4.7.0, MIT, https://github.com/lodash/lodash

lodash.template 4.5.0, MIT, https://github.com/lodash/lodash

lodash.templatesettings 4.2.0, MIT, https://github.com/lodash/lodash

lodash.throttle 4.1.1, MIT, https://github.com/lodash/lodash

lodash.topath 4.5.2, MIT, https://github.com/lodash/lodash

lodash.truncate 4.4.2, MIT, https://github.com/lodash/lodash

lodash.uniq 4.5.0, MIT, https://github.com/lodash/lodash

lodash 4.17.21, MIT, https://github.com/lodash/lodash

loglevel 1.7.1, MIT, https://github.com/pimterry/loglevel

loose-envify 1.4.0, MIT, https://github.com/zertosh/loose-envify

lower-case 2.0.2, MIT, https://github.com/blakeembrey/change-case

lru-cache 4.1.5, ISC, https://github.com/isaacs/node-lru-cache

lru-cache 5.1.1, ISC, https://github.com/isaacs/node-lru-cache

lru-cache 6.0.0, ISC, https://github.com/isaacs/node-lru-cache

lz-string 1.4.4, WTFPL, https://github.com/pieroxy/lz-string

magic-string 0.25.7, MIT, https://github.com/rich-harris/magic-string

make-dir 2.1.0, MIT, https://github.com/sindresorhus/make-dir

make-dir 3.1.0, MIT, https://github.com/sindresorhus/make-dir

makeerror 1.0.11, BSD-3-Clause, https://github.com/daaku/nodejs-makeerror

map-cache 0.2.2, MIT, https://github.com/jonschlinkert/map-cache

map-stream 0.1.0, Custom: https://github.com/dominictarr/event-stream, https://github.com/dominictarr/map-stream

map-visit 1.0.0, MIT, https://github.com/jonschlinkert/map-visit

marked 3.0.3, MIT, https://github.com/markedjs/marked

md5.js 1.3.5, MIT, https://github.com/crypto-browserify/md5.js

mdn-data 2.0.14, CC0-1.0, https://github.com/mdn/data

mdn-data 2.0.4, CC0-1.0, https://github.com/mdn/data

media-typer 0.3.0, MIT, https://github.com/jshttp/media-typer

memory-fs 0.4.1, MIT, https://github.com/webpack/memory-fs

memory-fs 0.5.0, MIT, https://github.com/webpack/memory-fs

merge-descriptors 1.0.1, MIT, https://github.com/component/merge-descriptors

merge-stream 2.0.0, MIT, https://github.com/grncdr/merge-stream

merge2 1.4.1, MIT, https://github.com/teambition/merge2

methods 1.1.2, MIT, https://github.com/jshttp/methods

microevent.ts 0.1.1, MIT, https://github.com/DirtyHairy/microevent

micromatch 3.1.10, MIT, https://github.com/micromatch/micromatch

micromatch 4.0.2, MIT, https://github.com/micromatch/micromatch

micromatch 4.0.4, MIT, https://github.com/micromatch/micromatch

miller-rabin 4.0.1, MIT, https://github.com/indutny/miller-rabin

mime-db 1.46.0, MIT, https://github.com/jshttp/mime-db

mime-types 2.1.29, MIT, https://github.com/jshttp/mime-types

mime 1.6.0, MIT, https://github.com/broofa/node-mime

mime 2.5.2, MIT, https://github.com/broofa/mime

mimic-fn 2.1.0, MIT, https://github.com/sindresorhus/mimic-fn

min-indent 1.0.1, MIT, https://github.com/thejameskyle/min-indent

mini-create-react-context 0.4.1, MIT, https://github.com/StringEpsilon/mini-create-react-context

mini-css-extract-plugin 0.11.3, MIT, https://github.com/webpack-contrib/mini-css-extract-plugin

minimalistic-assert 1.0.1, ISC, https://github.com/calvinmetcalf/minimalistic-assert

minimalistic-crypto-utils 1.0.1, MIT, https://github.com/indutny/minimalistic-crypto-utils

minimatch 3.0.4, ISC, https://github.com/isaacs/minimatch

minimist 1.2.5, MIT, https://github.com/substack/minimist

minipass-collect 1.0.2, ISC,

minipass-flush 1.0.5, ISC, https://github.com/isaacs/minipass-flush

minipass-pipeline 1.2.4, ISC,

minipass 3.1.3, ISC, https://github.com/isaacs/minipass

minizlib 2.1.2, MIT, https://github.com/isaacs/minizlib

mississippi 3.0.0, BSD-2-Clause, https://github.com/maxogden/mississippi

mixin-deep 1.3.2, MIT, https://github.com/jonschlinkert/mixin-deep

mkdirp 0.5.5, MIT, https://github.com/substack/node-mkdirp

mkdirp 1.0.4, MIT, https://github.com/isaacs/node-mkdirp

modern-normalize 1.1.0, MIT, https://github.com/sindresorhus/modern-normalize

move-concurrently 1.0.1, ISC, https://github.com/npm/move-concurrently

ms 2.0.0, MIT, https://github.com/zeit/ms

ms 2.1.1, MIT, https://github.com/zeit/ms

ms 2.1.2, MIT, https://github.com/zeit/ms

ms 2.1.3, MIT, https://github.com/vercel/ms

multicast-dns-service-types 1.1.0, MIT, https://github.com/mafintosh/multicast-dns-service-types

multicast-dns 6.2.3, MIT, https://github.com/mafintosh/multicast-dns

nanoid 3.1.25, MIT, https://github.com/ai/nanoid

nanomatch 1.2.13, MIT, https://github.com/micromatch/nanomatch

native-url 0.2.6, Apache-2.0, https://github.com/GoogleChromeLabs/native-url

natural-compare 1.4.0, MIT, https://github.com/litejs/natural-compare-lite

negotiator 0.6.2, MIT, https://github.com/jshttp/negotiator

neo-async 2.6.2, MIT, https://github.com/suguru03/neo-async

next-tick 1.0.0, MIT, https://github.com/medikoo/next-tick

nice-try 1.0.5, MIT, https://github.com/electerious/nice-try

no-case 3.0.4, MIT, https://github.com/blakeembrey/change-case

node-emoji 1.11.0, MIT, https://github.com/omnidan/node-emoji

node-forge 0.10.0, (BSD-3-Clause OR GPL-2.0), https://github.com/digitalbazaar/forge

node-int64 0.4.0, MIT, https://github.com/broofa/node-int64

node-libs-browser 2.2.1, MIT, https://github.com/webpack/node-libs-browser

node-modules-regexp 1.0.0, MIT, https://github.com/jamestalmage/node-modules-regexp

node-notifier 8.0.1, MIT, https://github.com/mikaelbr/node-notifier

node-releases 1.1.70, MIT, https://github.com/chicoxyzzy/node-releases

node-releases 1.1.75, MIT, https://github.com/chicoxyzzy/node-releases

normalize-package-data 2.5.0, BSD-2-Clause, https://github.com/npm/normalize-package-data

normalize-path 2.1.1, MIT, https://github.com/jonschlinkert/normalize-path

normalize-path 3.0.0, MIT, https://github.com/jonschlinkert/normalize-path

normalize-range 0.1.2, MIT, https://github.com/jamestalmage/normalize-range

normalize-url 1.9.1, MIT, https://github.com/sindresorhus/normalize-url

normalize-url 3.3.0, MIT, https://github.com/sindresorhus/normalize-url

npm-run-path 2.0.2, MIT, https://github.com/sindresorhus/npm-run-path

npm-run-path 4.0.1, MIT, https://github.com/sindresorhus/npm-run-path

nth-check 1.0.2, BSD-2-Clause, https://github.com/fb55/nth-check

num2fraction 1.2.2, MIT, https://github.com/yisibl/num2fraction

nwsapi 2.2.0, MIT, https://github.com/dperini/nwsapi

oauth-sign 0.9.0, Apache-2.0, https://github.com/mikeal/oauth-sign

object-assign 4.1.1, MIT, https://github.com/sindresorhus/object-assign

object-copy 0.1.0, MIT, https://github.com/jonschlinkert/object-copy

object-hash 2.2.0, MIT, https://github.com/puleos/object-hash

object-inspect 1.11.0, MIT, https://github.com/inspect-js/object-inspect

object-inspect 1.9.0, MIT, https://github.com/inspect-js/object-inspect

object-is 1.1.5, MIT, https://github.com/es-shims/object-is

object-keys 1.1.1, MIT, https://github.com/ljharb/object-keys

object-visit 1.0.1, MIT, https://github.com/jonschlinkert/object-visit

object.assign 4.1.2, MIT, https://github.com/ljharb/object.assign

object.entries 1.1.3, MIT, https://github.com/es-shims/Object.entries

object.entries 1.1.4, MIT, https://github.com/es-shims/Object.entries

object.fromentries 2.0.4, MIT, https://github.com/es-shims/Object.fromEntries

object.getownpropertydescriptors 2.1.2, MIT, https://github.com/es-shims/object.getownpropertydescriptors

object.pick 1.3.0, MIT, https://github.com/jonschlinkert/object.pick

object.values 1.1.2, MIT, https://github.com/es-shims/Object.values

object.values 1.1.4, MIT, https://github.com/es-shims/Object.values

obuf 1.1.2, MIT, https://github.com/indutny/offset-buffer

on-finished 2.3.0, MIT, https://github.com/jshttp/on-finished

on-headers 1.0.2, MIT, https://github.com/jshttp/on-headers

once 1.4.0, ISC, https://github.com/isaacs/once

onetime 5.1.2, MIT, https://github.com/sindresorhus/onetime

open 7.4.2, MIT, https://github.com/sindresorhus/open

opn 5.5.0, MIT, https://github.com/sindresorhus/opn

optimize-css-assets-webpack-plugin 5.0.4, MIT, https://github.com/NMFR/optimize-css-assets-webpack-plugin

optionator 0.8.3, MIT, https://github.com/gkz/optionator

optionator 0.9.1, MIT, https://github.com/gkz/optionator

original 1.0.2, MIT, https://github.com/unshiftio/original

os-browserify 0.3.0, MIT, https://github.com/CoderPuppy/os-browserify

p-each-series 2.2.0, MIT, https://github.com/sindresorhus/p-each-series

p-finally 1.0.0, MIT, https://github.com/sindresorhus/p-finally

p-limit 1.3.0, MIT, https://github.com/sindresorhus/p-limit

p-limit 2.3.0, MIT, https://github.com/sindresorhus/p-limit

p-limit 3.1.0, MIT, https://github.com/sindresorhus/p-limit

p-locate 2.0.0, MIT, https://github.com/sindresorhus/p-locate

p-locate 3.0.0, MIT, https://github.com/sindresorhus/p-locate

p-locate 4.1.0, MIT, https://github.com/sindresorhus/p-locate

p-map 2.1.0, MIT, https://github.com/sindresorhus/p-map

p-map 4.0.0, MIT, https://github.com/sindresorhus/p-map

p-retry 3.0.1, MIT, https://github.com/sindresorhus/p-retry

p-try 1.0.0, MIT, https://github.com/sindresorhus/p-try

p-try 2.2.0, MIT, https://github.com/sindresorhus/p-try

pako 1.0.11, (MIT AND Zlib), https://github.com/nodeca/pako

parallel-transform 1.2.0, MIT, https://github.com/mafintosh/parallel-transform

param-case 3.0.4, MIT, https://github.com/blakeembrey/change-case

parent-module 1.0.1, MIT, https://github.com/sindresorhus/parent-module

parse-asn1 5.1.6, ISC, https://github.com/crypto-browserify/parse-asn1

parse-json 2.2.0, MIT, https://github.com/sindresorhus/parse-json

parse-json 4.0.0, MIT, https://github.com/sindresorhus/parse-json

parse-json 5.2.0, MIT, https://github.com/sindresorhus/parse-json

parse5 5.1.1, MIT, https://github.com/inikulin/parse5

parseurl 1.3.3, MIT, https://github.com/pillarjs/parseurl

pascal-case 3.1.2, MIT, https://github.com/blakeembrey/change-case

pascalcase 0.1.1, MIT, https://github.com/jonschlinkert/pascalcase

path-browserify 0.0.1, MIT, https://github.com/substack/path-browserify

path-dirname 1.0.2, MIT, https://github.com/es128/path-dirname

path-exists 2.1.0, MIT, https://github.com/sindresorhus/path-exists

path-exists 3.0.0, MIT, https://github.com/sindresorhus/path-exists

path-exists 4.0.0, MIT, https://github.com/sindresorhus/path-exists

path-is-absolute 1.0.1, MIT, https://github.com/sindresorhus/path-is-absolute

path-is-inside 1.0.2, (WTFPL OR MIT), https://github.com/domenic/path-is-inside

path-key 2.0.1, MIT, https://github.com/sindresorhus/path-key

path-key 3.1.1, MIT, https://github.com/sindresorhus/path-key

path-parse 1.0.7, MIT, https://github.com/jbgutierrez/path-parse

path-to-regexp 0.1.7, MIT, https://github.com/component/path-to-regexp

path-to-regexp 1.8.0, MIT, https://github.com/pillarjs/path-to-regexp

path-type 1.1.0, MIT, https://github.com/sindresorhus/path-type

path-type 2.0.0, MIT, https://github.com/sindresorhus/path-type

path-type 4.0.0, MIT, https://github.com/sindresorhus/path-type

pause-stream 0.0.11, MIT, Apache2, https://github.com/dominictarr/pause-stream

pbkdf2 3.1.1, MIT, https://github.com/crypto-browserify/pbkdf2

performance-now 2.1.0, MIT, https://github.com/braveg1rl/performance-now

picomatch 2.2.2, MIT, https://github.com/micromatch/picomatch

picomatch 2.3.0, MIT, https://github.com/micromatch/picomatch

pify 2.3.0, MIT, https://github.com/sindresorhus/pify

pify 4.0.1, MIT, https://github.com/sindresorhus/pify

pinkie-promise 2.0.1, MIT, https://github.com/floatdrop/pinkie-promise

pinkie 2.0.4, MIT, https://github.com/floatdrop/pinkie

pirates 4.0.1, MIT, https://github.com/ariporad/pirates

pkg-dir 2.0.0, MIT, https://github.com/sindresorhus/pkg-dir

pkg-dir 3.0.0, MIT, https://github.com/sindresorhus/pkg-dir

pkg-dir 4.2.0, MIT, https://github.com/sindresorhus/pkg-dir

pkg-up 3.1.0, MIT, https://github.com/sindresorhus/pkg-up

pnp-webpack-plugin 1.6.4, MIT, https://github.com/arcanis/pnp-webpack-plugin

portfinder 1.0.28, MIT, https://github.com/http-party/node-portfinder

posix-character-classes 0.1.1, MIT, https://github.com/jonschlinkert/posix-character-classes

postcss-attribute-case-insensitive 4.0.2, MIT, https://github.com/Semigradsky/postcss-attribute-case-insensitive

postcss-browser-comments 3.0.0, CC0-1.0, https://github.com/csstools/postcss-browser-comments

postcss-calc 7.0.5, MIT, https://github.com/postcss/postcss-calc

postcss-color-functional-notation 2.0.1, CC0-1.0, https://github.com/jonathantneal/postcss-color-functional-notation

postcss-color-gray 5.0.0, ISC, https://github.com/postcss/postcss-color-gray

postcss-color-hex-alpha 5.0.3, MIT, https://github.com/postcss/postcss-color-hex-alpha

postcss-color-mod-function 3.0.3, CC0-1.0, https://github.com/jonathantneal/postcss-color-mod-function

postcss-color-rebeccapurple 4.0.1, MIT, https://github.com/postcss/postcss-color-rebeccapurple

postcss-colormin 4.0.3, MIT, https://github.com/cssnano/cssnano

postcss-convert-values 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-custom-media 7.0.8, MIT, https://github.com/postcss/postcss-custom-media

postcss-custom-properties 8.0.11, MIT, https://github.com/postcss/postcss-custom-properties

postcss-custom-selectors 5.1.2, MIT, https://github.com/postcss/postcss-custom-selectors

postcss-dir-pseudo-class 5.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-dir-pseudo-class

postcss-discard-comments 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-discard-duplicates 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-discard-empty 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-discard-overridden 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-double-position-gradients 1.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-double-position-gradients

postcss-env-function 2.0.2, CC0-1.0, https://github.com/jonathantneal/postcss-env-function

postcss-flexbugs-fixes 4.2.1, MIT, https://github.com/luisrudge/postcss-flexbugs-fixes

postcss-focus-visible 4.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-focus-visible

postcss-focus-within 3.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-focus-within

postcss-font-variant 4.0.1, MIT, https://github.com/postcss/postcss-font-variant

postcss-gap-properties 2.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-gap-properties

postcss-image-set-function 3.0.1, CC0-1.0, https://github.com/jonathantneal/postcss-image-set-function

postcss-initial 3.0.2, MIT, https://github.com/maximkoretskiy/postcss-initial

postcss-js 3.0.3, MIT, https://github.com/postcss/postcss-js

postcss-lab-function 2.0.1, CC0-1.0, https://github.com/jonathantneal/postcss-lab-function

postcss-load-config 2.1.2, MIT, https://github.com/postcss/postcss-load-config

postcss-load-config 3.1.0, MIT, https://github.com/postcss/postcss-load-config

postcss-loader 3.0.0, MIT, https://github.com/postcss/postcss-loader

postcss-logical 3.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-logical

postcss-media-minmax 4.0.0, MIT, https://github.com/postcss/postcss-media-minmax

postcss-merge-longhand 4.0.11, MIT, https://github.com/cssnano/cssnano

postcss-merge-rules 4.0.3, MIT, https://github.com/cssnano/cssnano

postcss-minify-font-values 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-minify-gradients 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-minify-params 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-minify-selectors 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-modules-extract-imports 2.0.0, ISC, https://github.com/css-modules/postcss-modules-extract-imports

postcss-modules-local-by-default 3.0.3, MIT, https://github.com/css-modules/postcss-modules-local-by-default

postcss-modules-scope 2.2.0, ISC, https://github.com/css-modules/postcss-modules-scope

postcss-modules-values 3.0.0, ISC, https://github.com/css-modules/postcss-modules-values

postcss-nested 5.0.5, MIT, https://github.com/postcss/postcss-nested

postcss-nesting 7.0.1, CC0-1.0, https://github.com/jonathantneal/postcss-nesting

postcss-normalize-charset 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-normalize-display-values 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize-positions 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize-repeat-style 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize-string 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize-timing-functions 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize-unicode 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-normalize-url 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-normalize-whitespace 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-normalize 8.0.1, CC0-1.0, https://github.com/csstools/postcss-normalize

postcss-ordered-values 4.1.2, MIT, https://github.com/cssnano/cssnano

postcss-overflow-shorthand 2.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-overflow-shorthand

postcss-page-break 2.0.0, MIT, https://github.com/shrpne/postcss-page-break

postcss-place 4.0.1, CC0-1.0, https://github.com/jonathantneal/postcss-place

postcss-preset-env 6.7.0, CC0-1.0, https://github.com/csstools/postcss-preset-env

postcss-pseudo-class-any-link 6.0.0, CC0-1.0, https://github.com/jonathantneal/postcss-pseudo-class-any-link

postcss-reduce-initial 4.0.3, MIT, https://github.com/cssnano/cssnano

postcss-reduce-transforms 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-replace-overflow-wrap 3.0.0, MIT, https://github.com/MattDiMu/postcss-replace-overflow-wrap

postcss-safe-parser 5.0.2, MIT, https://github.com/postcss/postcss-safe-parser

postcss-selector-matches 4.0.0, MIT, https://github.com/postcss/postcss-selector-matches

postcss-selector-not 4.0.1, MIT, https://github.com/postcss/postcss-selector-not

postcss-selector-parser 3.1.2, MIT, https://github.com/postcss/postcss-selector-parser

postcss-selector-parser 5.0.0, MIT, https://github.com/postcss/postcss-selector-parser

postcss-selector-parser 6.0.4, MIT, https://github.com/postcss/postcss-selector-parser

postcss-selector-parser 6.0.6, MIT, https://github.com/postcss/postcss-selector-parser

postcss-svgo 4.0.2, MIT, https://github.com/cssnano/cssnano

postcss-unique-selectors 4.0.1, MIT, https://github.com/cssnano/cssnano

postcss-value-parser 3.3.1, MIT, https://github.com/TrySound/postcss-value-parser

postcss-value-parser 4.1.0, MIT, https://github.com/TrySound/postcss-value-parser

postcss-values-parser 2.0.1, MIT, https://github.com/lesshint/postcss-values-parser

postcss 7.0.21, MIT, https://github.com/postcss/postcss

postcss 7.0.36, MIT, https://github.com/postcss/postcss

postcss 8.3.6, MIT, https://github.com/postcss/postcss

prelude-ls 1.1.2, MIT, https://github.com/gkz/prelude-ls

prelude-ls 1.2.1, MIT, https://github.com/gkz/prelude-ls

prepend-http 1.0.4, MIT, https://github.com/sindresorhus/prepend-http

prettier-linter-helpers 1.0.0, MIT, https://github.com/prettier/prettier-linter-helpers

prettier 2.3.2, MIT, https://github.com/prettier/prettier

pretty-bytes 5.6.0, MIT, https://github.com/sindresorhus/pretty-bytes

pretty-error 2.1.2, MIT, https://github.com/AriaMinaei/pretty-error

pretty-format 26.6.2, MIT, https://github.com/facebook/jest

pretty-format 27.0.6, MIT, https://github.com/facebook/jest

pretty-hrtime 1.0.3, MIT, https://github.com/robrich/pretty-hrtime

process-nextick-args 2.0.1, MIT, https://github.com/calvinmetcalf/process-nextick-args

process 0.11.10, MIT, https://github.com/shtylman/node-process

progress 2.0.3, MIT, https://github.com/visionmedia/node-progress

promise-inflight 1.0.1, ISC, https://github.com/iarna/promise-inflight

promise 8.1.0, MIT, https://github.com/then/promise

prompts 2.4.0, MIT, https://github.com/terkelg/prompts

prop-types 15.7.2, MIT, https://github.com/facebook/prop-types

proxy-addr 2.0.6, MIT, https://github.com/jshttp/proxy-addr

prr 1.0.1, MIT, https://github.com/rvagg/prr

ps-tree 1.2.0, MIT, https://github.com/indexzero/ps-tree

pseudomap 1.0.2, ISC, https://github.com/isaacs/pseudomap

psl 1.8.0, MIT, https://github.com/lupomontero/psl

public-encrypt 4.0.3, MIT, https://github.com/crypto-browserify/publicEncrypt

pump 2.0.1, MIT, https://github.com/mafintosh/pump

pump 3.0.0, MIT, https://github.com/mafintosh/pump

pumpify 1.5.1, MIT, https://github.com/mafintosh/pumpify

punycode 1.3.2, MIT, https://github.com/bestiejs/punycode.js

punycode 1.4.1, MIT, https://github.com/bestiejs/punycode.js

punycode 2.1.1, MIT, https://github.com/bestiejs/punycode.js

purgecss 4.0.3, MIT, https://github.com/FullHuman/purgecss

q 1.5.1, MIT, https://github.com/kriskowal/q

qs 6.5.2, BSD-3-Clause, https://github.com/ljharb/qs

qs 6.7.0, BSD-3-Clause, https://github.com/ljharb/qs

query-string 4.3.4, MIT, https://github.com/sindresorhus/query-string

querystring-es3 0.2.1, MIT, https://github.com/mike-spainhower/querystring

querystring 0.2.0, MIT, https://github.com/Gozala/querystring

querystring 0.2.1, MIT, https://github.com/Gozala/querystring

querystringify 2.2.0, MIT, https://github.com/unshiftio/querystringify

queue-microtask 1.2.2, MIT, https://github.com/feross/queue-microtask

quick-lru 5.1.1, MIT, https://github.com/sindresorhus/quick-lru

raf 3.4.1, MIT, https://github.com/chrisdickinson/raf

randombytes 2.1.0, MIT, https://github.com/crypto-browserify/randombytes

randomfill 1.0.4, MIT, https://github.com/crypto-browserify/randomfill

range-parser 1.2.1, MIT, https://github.com/jshttp/range-parser

raw-body 2.4.0, MIT, https://github.com/stream-utils/raw-body

react-app-polyfill 2.0.0, MIT, https://github.com/facebook/create-react-app

react-dev-utils 11.0.4, MIT, https://github.com/facebook/create-react-app

react-dom 17.0.2, MIT, https://github.com/facebook/react

react-error-overlay 6.0.9, MIT, https://github.com/facebook/create-react-app

react-is 16.13.1, MIT, https://github.com/facebook/react

react-is 17.0.1, MIT, https://github.com/facebook/react

react-refresh 0.8.3, MIT, https://github.com/facebook/react

react-router-dom 5.2.0, MIT, https://github.com/ReactTraining/react-router

react-router 5.2.0, MIT, https://github.com/ReactTraining/react-router

react-scripts 4.0.3, MIT, https://github.com/facebook/create-react-app

react-sparklines 1.7.0, MIT, https://github.com/borisyankov/react-sparklines

react 17.0.2, MIT, https://github.com/facebook/react

read-pkg-up 1.0.1, MIT, https://github.com/sindresorhus/read-pkg-up

read-pkg-up 2.0.0, MIT, https://github.com/sindresorhus/read-pkg-up

read-pkg-up 7.0.1, MIT, https://github.com/sindresorhus/read-pkg-up

read-pkg 1.1.0, MIT, https://github.com/sindresorhus/read-pkg

read-pkg 2.0.0, MIT, https://github.com/sindresorhus/read-pkg

read-pkg 5.2.0, MIT, https://github.com/sindresorhus/read-pkg

readable-stream 2.3.7, MIT, https://github.com/nodejs/readable-stream

readable-stream 3.6.0, MIT, https://github.com/nodejs/readable-stream

readdirp 2.2.1, MIT, https://github.com/paulmillr/readdirp

readdirp 3.5.0, MIT, https://github.com/paulmillr/readdirp

readdirp 3.6.0, MIT, https://github.com/paulmillr/readdirp

recursive-readdir 2.2.2, MIT, https://github.com/jergason/recursive-readdir

redent 3.0.0, MIT, https://github.com/sindresorhus/redent

reduce-css-calc 2.1.8, MIT, https://github.com/MoOx/reduce-css-calc

regenerate-unicode-properties 8.2.0, MIT, https://github.com/mathiasbynens/regenerate-unicode-properties

regenerate 1.4.2, MIT, https://github.com/mathiasbynens/regenerate

regenerator-runtime 0.11.1, MIT, https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime

regenerator-runtime 0.13.7, MIT, https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime

regenerator-transform 0.14.5, MIT, https://github.com/facebook/regenerator/tree/master/packages/regenerator-transform

regex-not 1.0.2, MIT, https://github.com/jonschlinkert/regex-not

regex-parser 2.2.11, MIT, https://github.com/IonicaBizau/regex-parser.js

regexp.prototype.flags 1.3.1, MIT, https://github.com/es-shims/RegExp.prototype.flags

regexpp 3.1.0, MIT, https://github.com/mysticatea/regexpp

regexpu-core 4.7.1, MIT, https://github.com/mathiasbynens/regexpu-core

regjsgen 0.5.2, MIT, https://github.com/bnjmnt4n/regjsgen

regjsparser 0.6.7, BSD-2-Clause, https://github.com/jviereck/regjsparser

relateurl 0.2.7, MIT, https://github.com/stevenvachon/relateurl

remove-trailing-separator 1.1.0, ISC, https://github.com/darsain/remove-trailing-separator

renderkid 2.0.5, MIT, https://github.com/AriaMinaei/RenderKid

repeat-element 1.1.3, MIT, https://github.com/jonschlinkert/repeat-element

repeat-string 1.6.1, MIT, https://github.com/jonschlinkert/repeat-string

request-promise-core 1.1.4, ISC, https://github.com/request/promise-core

request-promise-native 1.0.9, ISC, https://github.com/request/request-promise-native

request 2.88.2, Apache-2.0, https://github.com/request/request

require-directory 2.1.1, MIT, https://github.com/troygoode/node-require-directory

require-from-string 2.0.2, MIT, https://github.com/floatdrop/require-from-string

require-main-filename 2.0.0, ISC, https://github.com/yargs/require-main-filename

requires-port 1.0.0, MIT, https://github.com/unshiftio/requires-port

resolve-cwd 2.0.0, MIT, https://github.com/sindresorhus/resolve-cwd

resolve-cwd 3.0.0, MIT, https://github.com/sindresorhus/resolve-cwd

resolve-from 3.0.0, MIT, https://github.com/sindresorhus/resolve-from

resolve-from 4.0.0, MIT, https://github.com/sindresorhus/resolve-from

resolve-from 5.0.0, MIT, https://github.com/sindresorhus/resolve-from

resolve-pathname 3.0.0, MIT, https://github.com/mjackson/resolve-pathname

resolve-url-loader 3.1.2, MIT, https://github.com/bholloway/resolve-url-loader

resolve-url 0.2.1, MIT, https://github.com/lydell/resolve-url

resolve 1.18.1, MIT, https://github.com/browserify/resolve

resolve 1.20.0, MIT, https://github.com/browserify/resolve

resolve 2.0.0-next.3, MIT, https://github.com/browserify/resolve

ret 0.1.15, MIT, https://github.com/fent/ret.js

retry 0.12.0, MIT, https://github.com/tim-kos/node-retry

reusify 1.0.4, MIT, https://github.com/mcollina/reusify

rework-visit 1.0.0, MIT,

rework 1.0.1, MIT*, https://github.com/reworkcss/rework

rgb-regex 1.0.1, MIT, https://github.com/regexps/rgb-regex

rgba-regex 1.0.0, MIT, https://github.com/johnotander/rgba-regex

rimraf 2.7.1, ISC, https://github.com/isaacs/rimraf

rimraf 3.0.2, ISC, https://github.com/isaacs/rimraf

ripemd160 2.0.2, MIT, https://github.com/crypto-browserify/ripemd160

rollup-plugin-babel 4.4.0, MIT, https://github.com/rollup/rollup-plugin-babel

rollup-plugin-terser 5.3.1, MIT, https://github.com/TrySound/rollup-plugin-terser

rollup-pluginutils 2.8.2, MIT, https://github.com/rollup/rollup-pluginutils

rollup 1.32.1, MIT, https://github.com/rollup/rollup

rsvp 4.8.5, MIT, https://github.com/tildeio/rsvp.js

run-parallel 1.2.0, MIT, https://github.com/feross/run-parallel

run-queue 1.0.3, ISC, https://github.com/iarna/run-queue

safe-buffer 5.1.2, MIT, https://github.com/feross/safe-buffer

safe-buffer 5.2.1, MIT, https://github.com/feross/safe-buffer

safe-regex 1.1.0, MIT, https://github.com/substack/safe-regex

safer-buffer 2.1.2, MIT, https://github.com/ChALkeR/safer-buffer

sane 4.1.0, MIT, https://github.com/amasad/sane

sanitize.css 10.0.0, CC0-1.0, https://github.com/csstools/sanitize.css

sass-loader 10.1.1, MIT, https://github.com/webpack-contrib/sass-loader

sax 1.2.4, ISC, https://github.com/isaacs/sax-js

saxes 5.0.1, ISC, https://github.com/lddubeau/saxes

scheduler 0.20.2, MIT, https://github.com/facebook/react

schema-utils 1.0.0, MIT, https://github.com/webpack-contrib/schema-utils

schema-utils 2.7.1, MIT, https://github.com/webpack/schema-utils

schema-utils 3.0.0, MIT, https://github.com/webpack/schema-utils

select-hose 2.0.0, MIT, https://github.com/indutny/select-hose

selfsigned 1.10.8, MIT, https://github.com/jfromaniello/selfsigned

semver 5.7.1, ISC, https://github.com/npm/node-semver

semver 6.3.0, ISC, https://github.com/npm/node-semver

semver 7.0.0, ISC, https://github.com/npm/node-semver

semver 7.3.2, ISC, https://github.com/npm/node-semver

semver 7.3.4, ISC, https://github.com/npm/node-semver

semver 7.3.5, ISC, https://github.com/npm/node-semver

send 0.17.1, MIT, https://github.com/pillarjs/send

serialize-javascript 4.0.0, BSD-3-Clause, https://github.com/yahoo/serialize-javascript

serialize-javascript 5.0.1, BSD-3-Clause, https://github.com/yahoo/serialize-javascript

serve-index 1.9.1, MIT, https://github.com/expressjs/serve-index

serve-static 1.14.1, MIT, https://github.com/expressjs/serve-static

set-blocking 2.0.0, ISC, https://github.com/yargs/set-blocking

set-value 2.0.1, MIT, https://github.com/jonschlinkert/set-value

setimmediate 1.0.5, MIT, https://github.com/YuzuJS/setImmediate

setprototypeof 1.1.0, ISC, https://github.com/wesleytodd/setprototypeof

setprototypeof 1.1.1, ISC, https://github.com/wesleytodd/setprototypeof

sha.js 2.4.11, (MIT AND BSD-3-Clause), https://github.com/crypto-browserify/sha.js

shebang-command 1.2.0, MIT, https://github.com/kevva/shebang-command

shebang-command 2.0.0, MIT, https://github.com/kevva/shebang-command

shebang-regex 1.0.0, MIT, https://github.com/sindresorhus/shebang-regex

shebang-regex 3.0.0, MIT, https://github.com/sindresorhus/shebang-regex

shell-quote 1.7.2, MIT, https://github.com/substack/node-shell-quote

shellwords 0.1.1, MIT, https://github.com/jimmycuadra/shellwords

side-channel 1.0.4, MIT, https://github.com/ljharb/side-channel

signal-exit 3.0.3, ISC, https://github.com/tapjs/signal-exit

simple-swizzle 0.2.2, MIT, https://github.com/qix-/node-simple-swizzle

sisteransi 1.0.5, MIT, https://github.com/terkelg/sisteransi

slash 3.0.0, MIT, https://github.com/sindresorhus/slash

slice-ansi 4.0.0, MIT, https://github.com/chalk/slice-ansi

snapdragon-node 2.1.1, MIT, https://github.com/jonschlinkert/snapdragon-node

snapdragon-util 3.0.1, MIT, https://github.com/jonschlinkert/snapdragon-util

snapdragon 0.8.2, MIT, https://github.com/jonschlinkert/snapdragon

sockjs-client 1.5.0, MIT, https://github.com/sockjs/sockjs-client

sockjs 0.3.21, MIT, https://github.com/sockjs/sockjs-node

sort-keys 1.1.2, MIT, https://github.com/sindresorhus/sort-keys

source-list-map 2.0.1, MIT, https://github.com/webpack/source-list-map

source-map-js 0.6.2, BSD-3-Clause, https://github.com/7rulnik/source-map

source-map-resolve 0.5.3, MIT, https://github.com/lydell/source-map-resolve

source-map-resolve 0.6.0, MIT, https://github.com/lydell/source-map-resolve

source-map-support 0.5.19, MIT, https://github.com/evanw/node-source-map-support

source-map-url 0.4.1, MIT, https://github.com/lydell/source-map-url

source-map 0.5.7, BSD-3-Clause, https://github.com/mozilla/source-map

source-map 0.6.1, BSD-3-Clause, https://github.com/mozilla/source-map

source-map 0.7.3, BSD-3-Clause, https://github.com/mozilla/source-map

sourcemap-codec 1.4.8, MIT, https://github.com/Rich-Harris/sourcemap-codec

spdx-correct 3.1.1, Apache-2.0, https://github.com/jslicense/spdx-correct.js

spdx-exceptions 2.3.0, CC-BY-3.0, https://github.com/kemitchell/spdx-exceptions.json

spdx-expression-parse 3.0.1, MIT, https://github.com/jslicense/spdx-expression-parse.js

spdx-license-ids 3.0.7, CC0-1.0, https://github.com/jslicense/spdx-license-ids

spdy-transport 3.0.0, MIT, https://github.com/spdy-http2/spdy-transport

spdy 4.0.2, MIT, https://github.com/indutny/node-spdy

spice.ai-dashboard 0.1.0, UNLICENSED,

split-string 3.1.0, MIT, https://github.com/jonschlinkert/split-string

split 0.3.3, MIT, https://github.com/dominictarr/split

sprintf-js 1.0.3, BSD-3-Clause, https://github.com/alexei/sprintf.js

sshpk 1.16.1, MIT, https://github.com/joyent/node-sshpk

ssri 6.0.2, ISC, https://github.com/zkat/ssri

ssri 8.0.1, ISC, https://github.com/npm/ssri

stable 0.1.8, MIT, https://github.com/Two-Screen/stable

stack-utils 2.0.3, MIT, https://github.com/tapjs/stack-utils

stackframe 1.2.0, MIT, https://github.com/stacktracejs/stackframe

static-extend 0.1.2, MIT, https://github.com/jonschlinkert/static-extend

statuses 1.5.0, MIT, https://github.com/jshttp/statuses

stealthy-require 1.1.1, ISC, https://github.com/analog-nico/stealthy-require

stream-browserify 2.0.2, MIT, https://github.com/browserify/stream-browserify

stream-combiner 0.0.4, MIT, https://github.com/dominictarr/stream-combiner

stream-each 1.2.3, MIT, https://github.com/mafintosh/stream-each

stream-http 2.8.3, MIT, https://github.com/jhiesey/stream-http

stream-shift 1.0.1, MIT, https://github.com/mafintosh/stream-shift

strict-uri-encode 1.1.0, MIT, https://github.com/kevva/strict-uri-encode

string-length 4.0.1, MIT, https://github.com/sindresorhus/string-length

string-natural-compare 3.0.1, MIT, https://github.com/nwoltman/string-natural-compare

string-width 3.1.0, MIT, https://github.com/sindresorhus/string-width

string-width 4.2.0, MIT, https://github.com/sindresorhus/string-width

string.prototype.matchall 4.0.4, MIT, https://github.com/ljharb/String.prototype.matchAll

string.prototype.matchall 4.0.5, MIT, https://github.com/es-shims/String.prototype.matchAll

string.prototype.padend 3.1.2, MIT, https://github.com/es-shims/String.prototype.padEnd

string.prototype.trimend 1.0.3, MIT, https://github.com/es-shims/String.prototype.trimEnd

string.prototype.trimend 1.0.4, MIT, https://github.com/es-shims/String.prototype.trimEnd

string.prototype.trimstart 1.0.3, MIT, https://github.com/es-shims/String.prototype.trimStart

string.prototype.trimstart 1.0.4, MIT, https://github.com/es-shims/String.prototype.trimStart

string_decoder 1.1.1, MIT, https://github.com/nodejs/string_decoder

string_decoder 1.3.0, MIT, https://github.com/nodejs/string_decoder

stringify-object 3.3.0, BSD-2-Clause, https://github.com/yeoman/stringify-object

strip-ansi 3.0.1, MIT, https://github.com/chalk/strip-ansi

strip-ansi 5.2.0, MIT, https://github.com/chalk/strip-ansi

strip-ansi 6.0.0, MIT, https://github.com/chalk/strip-ansi

strip-bom 2.0.0, MIT, https://github.com/sindresorhus/strip-bom

strip-bom 3.0.0, MIT, https://github.com/sindresorhus/strip-bom

strip-bom 4.0.0, MIT, https://github.com/sindresorhus/strip-bom

strip-comments 1.0.2, MIT, https://github.com/jonschlinkert/strip-comments

strip-eof 1.0.0, MIT, https://github.com/sindresorhus/strip-eof

strip-final-newline 2.0.0, MIT, https://github.com/sindresorhus/strip-final-newline

strip-indent 3.0.0, MIT, https://github.com/sindresorhus/strip-indent

strip-json-comments 3.1.1, MIT, https://github.com/sindresorhus/strip-json-comments

style-loader 1.3.0, MIT, https://github.com/webpack-contrib/style-loader

stylehacks 4.0.3, MIT, https://github.com/cssnano/cssnano

supports-color 2.0.0, MIT, https://github.com/chalk/supports-color

supports-color 5.5.0, MIT, https://github.com/chalk/supports-color

supports-color 6.1.0, MIT, https://github.com/chalk/supports-color

supports-color 7.2.0, MIT, https://github.com/chalk/supports-color

supports-hyperlinks 2.1.0, MIT, https://github.com/jamestalmage/supports-hyperlinks

svg-parser 2.0.4, MIT, https://github.com/Rich-Harris/svg-parser

svgo 1.3.2, MIT, https://github.com/svg/svgo

swr 0.5.6, MIT, https://github.com/vercel/swr

symbol-tree 3.2.4, MIT, https://github.com/jsdom/js-symbol-tree

table 6.0.7, BSD-3-Clause, https://github.com/gajus/table

table 6.7.1, BSD-3-Clause, https://github.com/gajus/table

tailwindcss 2.2.7, MIT, https://github.com/tailwindlabs/tailwindcss

tapable 1.1.3, MIT, https://github.com/webpack/tapable

tar 6.1.10, ISC, https://github.com/npm/node-tar

temp-dir 1.0.0, MIT, https://github.com/sindresorhus/temp-dir

tempy 0.3.0, MIT, https://github.com/sindresorhus/tempy

terminal-link 2.1.1, MIT, https://github.com/sindresorhus/terminal-link

terser-webpack-plugin 1.4.5, MIT, https://github.com/webpack-contrib/terser-webpack-plugin

terser-webpack-plugin 4.2.3, MIT, https://github.com/webpack-contrib/terser-webpack-plugin

terser 4.8.0, BSD-2-Clause, https://github.com/terser/terser

terser 5.6.0, BSD-2-Clause, https://github.com/terser/terser

test-exclude 6.0.0, ISC, https://github.com/istanbuljs/test-exclude

text-table 0.2.0, MIT, https://github.com/substack/text-table

throat 5.0.0, MIT, https://github.com/ForbesLindesay/throat

through2 2.0.5, MIT, https://github.com/rvagg/through2

through 2.3.8, MIT, https://github.com/dominictarr/through

thunky 1.1.0, MIT, https://github.com/mafintosh/thunky

timers-browserify 2.0.12, MIT, https://github.com/jryans/timers-browserify

timsort 0.3.0, MIT, https://github.com/mziccard/node-timsort

tiny-invariant 1.1.0, MIT, https://github.com/alexreardon/tiny-invariant

tiny-warning 1.0.3, MIT, https://github.com/alexreardon/tiny-warning

tmp 0.2.1, MIT, https://github.com/raszi/node-tmp

tmpl 1.0.5, BSD-3-Clause, https://github.com/daaku/nodejs-tmpl

to-arraybuffer 1.0.1, MIT, https://github.com/jhiesey/to-arraybuffer

to-fast-properties 2.0.0, MIT, https://github.com/sindresorhus/to-fast-properties

to-object-path 0.3.0, MIT, https://github.com/jonschlinkert/to-object-path

to-regex-range 2.1.1, MIT, https://github.com/micromatch/to-regex-range

to-regex-range 5.0.1, MIT, https://github.com/micromatch/to-regex-range

to-regex 3.0.2, MIT, https://github.com/jonschlinkert/to-regex

toidentifier 1.0.0, MIT, https://github.com/component/toidentifier

tough-cookie 2.5.0, BSD-3-Clause, https://github.com/salesforce/tough-cookie

tough-cookie 3.0.1, BSD-3-Clause, https://github.com/salesforce/tough-cookie

tr46 2.0.2, MIT, https://github.com/jsdom/tr46

tryer 1.0.1, MIT, git+https://gitlab.com/philbooth/tryer

ts-pnp 1.2.0, MIT, https://github.com/arcanis/ts-pnp

tsconfig-paths 3.9.0, MIT, https://github.com/dividab/tsconfig-paths

tslib 1.14.1, 0BSD, https://github.com/Microsoft/tslib

tslib 2.1.0, 0BSD, https://github.com/Microsoft/tslib

tsutils 3.20.0, MIT, https://github.com/ajafff/tsutils

tsutils 3.21.0, MIT, https://github.com/ajafff/tsutils

tty-browserify 0.0.0, MIT, https://github.com/substack/tty-browserify

tunnel-agent 0.6.0, Apache-2.0, https://github.com/mikeal/tunnel-agent

tweetnacl 0.14.5, Unlicense, https://github.com/dchest/tweetnacl-js

type-check 0.3.2, MIT, https://github.com/gkz/type-check

type-check 0.4.0, MIT, https://github.com/gkz/type-check

type-detect 4.0.8, MIT, https://github.com/chaijs/type-detect

type-fest 0.11.0, (MIT OR CC0-1.0), https://github.com/sindresorhus/type-fest

type-fest 0.20.2, (MIT OR CC0-1.0), https://github.com/sindresorhus/type-fest

type-fest 0.3.1, (MIT OR CC0-1.0), https://github.com/sindresorhus/type-fest

type-fest 0.6.0, (MIT OR CC0-1.0), https://github.com/sindresorhus/type-fest

type-fest 0.8.1, (MIT OR CC0-1.0), https://github.com/sindresorhus/type-fest

type-is 1.6.18, MIT, https://github.com/jshttp/type-is

type 1.2.0, ISC, https://github.com/medikoo/type

type 2.3.0, ISC, https://github.com/medikoo/type

typedarray-to-buffer 3.1.5, MIT, https://github.com/feross/typedarray-to-buffer

typedarray 0.0.6, MIT, https://github.com/substack/typedarray

typescript 4.3.5, Apache-2.0, https://github.com/Microsoft/TypeScript

unbox-primitive 1.0.1, MIT, https://github.com/ljharb/unbox-primitive

unicode-canonical-property-names-ecmascript 1.0.4, MIT, https://github.com/mathiasbynens/unicode-canonical-property-names-ecmascript

unicode-match-property-ecmascript 1.0.4, MIT, https://github.com/mathiasbynens/unicode-match-property-ecmascript

unicode-match-property-value-ecmascript 1.2.0, MIT, https://github.com/mathiasbynens/unicode-match-property-value-ecmascript

unicode-property-aliases-ecmascript 1.1.0, MIT, https://github.com/mathiasbynens/unicode-property-aliases-ecmascript

union-value 1.0.1, MIT, https://github.com/jonschlinkert/union-value

uniq 1.0.1, MIT, https://github.com/mikolalysenko/uniq

uniqs 2.0.0, MIT, https://github.com/fgnass/uniqs

unique-filename 1.1.1, ISC, https://github.com/iarna/unique-filename

unique-slug 2.0.2, ISC, https://github.com/iarna/unique-slug

unique-string 1.0.0, MIT, https://github.com/sindresorhus/unique-string

universalify 0.1.2, MIT, https://github.com/RyanZim/universalify

universalify 2.0.0, MIT, https://github.com/RyanZim/universalify

unpipe 1.0.0, MIT, https://github.com/stream-utils/unpipe

unquote 1.1.1, MIT, https://github.com/lakenen/node-unquote

unset-value 1.0.0, MIT, https://github.com/jonschlinkert/unset-value

upath 1.2.0, MIT, https://github.com/anodynos/upath

uri-js 4.4.1, BSD-2-Clause, https://github.com/garycourt/uri-js

urix 0.1.0, MIT, https://github.com/lydell/urix

url-loader 4.1.1, MIT, https://github.com/webpack-contrib/url-loader

url-parse 1.5.3, MIT, https://github.com/unshiftio/url-parse

url 0.11.0, MIT, https://github.com/defunctzombie/node-url

use 3.1.1, MIT, https://github.com/jonschlinkert/use

util-deprecate 1.0.2, MIT, https://github.com/TooTallNate/util-deprecate

util.promisify 1.0.0, MIT, https://github.com/ljharb/util.promisify

util.promisify 1.0.1, MIT, https://github.com/ljharb/util.promisify

util 0.10.3, MIT, https://github.com/defunctzombie/node-util

util 0.11.1, MIT, https://github.com/defunctzombie/node-util

utila 0.4.0, MIT, https://github.com/AriaMinaei/utila

utils-merge 1.0.1, MIT, https://github.com/jaredhanson/utils-merge

uuid 3.4.0, MIT, https://github.com/uuidjs/uuid

uuid 8.3.2, MIT, https://github.com/uuidjs/uuid

v8-compile-cache 2.2.0, MIT, https://github.com/zertosh/v8-compile-cache

v8-to-istanbul 7.1.0, ISC, https://github.com/istanbuljs/v8-to-istanbul

validate-npm-package-license 3.0.4, Apache-2.0, https://github.com/kemitchell/validate-npm-package-license.js

value-equal 1.0.1, MIT, https://github.com/mjackson/value-equal

vary 1.1.2, MIT, https://github.com/jshttp/vary

vendors 1.0.4, MIT, https://github.com/wooorm/vendors

verror 1.10.0, MIT, https://github.com/davepacheco/node-verror

vm-browserify 1.1.2, MIT, https://github.com/substack/vm-browserify

w3c-hr-time 1.0.2, MIT, https://github.com/jsdom/w3c-hr-time

w3c-xmlserializer 2.0.0, MIT, https://github.com/jsdom/w3c-xmlserializer

walker 1.0.7, Apache-2.0, https://github.com/daaku/nodejs-walker

watchpack-chokidar2 2.0.1, MIT, https://github.com/webpack/watchpack

watchpack 1.7.5, MIT, https://github.com/webpack/watchpack

wbuf 1.7.3, MIT, https://github.com/indutny/wbuf

web-vitals 1.1.2, Apache-2.0, https://github.com/GoogleChrome/web-vitals

webidl-conversions 5.0.0, BSD-2-Clause, https://github.com/jsdom/webidl-conversions

webidl-conversions 6.1.0, BSD-2-Clause, https://github.com/jsdom/webidl-conversions

webpack-dev-middleware 3.7.3, MIT, https://github.com/webpack/webpack-dev-middleware

webpack-dev-server 3.11.1, MIT, https://github.com/webpack/webpack-dev-server

webpack-log 2.0.0, MIT, https://github.com/webpack-contrib/webpack-log

webpack-manifest-plugin 2.2.0, MIT, https://github.com/danethurber/webpack-manifest-plugin

webpack-sources 1.4.3, MIT, https://github.com/webpack/webpack-sources

webpack 4.44.2, MIT, https://github.com/webpack/webpack

websocket-driver 0.7.4, Apache-2.0, https://github.com/faye/websocket-driver-node

websocket-extensions 0.1.4, Apache-2.0, https://github.com/faye/websocket-extensions-node

whatwg-encoding 1.0.5, MIT, https://github.com/jsdom/whatwg-encoding

whatwg-fetch 3.6.1, MIT, https://github.com/github/fetch

whatwg-mimetype 2.3.0, MIT, https://github.com/jsdom/whatwg-mimetype

whatwg-url 8.4.0, MIT, https://github.com/jsdom/whatwg-url

which-boxed-primitive 1.0.2, MIT, https://github.com/inspect-js/which-boxed-primitive

which-module 2.0.0, ISC, https://github.com/nexdrew/which-module

which 1.3.1, ISC, https://github.com/isaacs/node-which

which 2.0.2, ISC, https://github.com/isaacs/node-which

word-wrap 1.2.3, MIT, https://github.com/jonschlinkert/word-wrap

workbox-background-sync 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-broadcast-update 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-build 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-cacheable-response 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-core 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-expiration 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-google-analytics 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-navigation-preload 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-precaching 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-range-requests 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-routing 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-strategies 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-streams 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-sw 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-webpack-plugin 5.1.4, MIT, https://github.com/googlechrome/workbox

workbox-window 5.1.4, MIT, https://github.com/googlechrome/workbox

worker-farm 1.7.0, MIT, https://github.com/rvagg/node-worker-farm

worker-rpc 0.1.1, MIT, https://github.com/DirtyHairy/worker-rpc

wrap-ansi 5.1.0, MIT, https://github.com/chalk/wrap-ansi

wrap-ansi 6.2.0, MIT, https://github.com/chalk/wrap-ansi

wrappy 1.0.2, ISC, https://github.com/npm/wrappy

write-file-atomic 3.0.3, ISC, https://github.com/npm/write-file-atomic

ws 6.2.2, MIT, https://github.com/websockets/ws

ws 7.4.3, MIT, https://github.com/websockets/ws

xml-name-validator 3.0.0, Apache-2.0, https://github.com/jsdom/xml-name-validator

xmlchars 2.2.0, MIT, https://github.com/lddubeau/xmlchars

xtend 4.0.2, MIT, https://github.com/Raynos/xtend

y18n 4.0.1, ISC, https://github.com/yargs/y18n

yallist 2.1.2, ISC, https://github.com/isaacs/yallist

yallist 3.1.1, ISC, https://github.com/isaacs/yallist

yallist 4.0.0, ISC, https://github.com/isaacs/yallist

yaml 1.10.0, ISC, https://github.com/eemeli/yaml

yaml 1.10.2, ISC, https://github.com/eemeli/yaml

yargs-parser 13.1.2, ISC, https://github.com/yargs/yargs-parser

yargs-parser 18.1.3, ISC, https://github.com/yargs/yargs-parser

yargs 13.3.2, MIT, https://github.com/yargs/yargs

yargs 15.4.1, MIT, https://github.com/yargs/yargs

yarn-run-all 3.1.1, MIT, https://github.com/mysticatea/npm-run-all

yocto-queue 0.1.0, MIT, https://github.com/sindresorhus/yocto-queue

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Open Source Acknowledgements | Spice.ai Docs

Open Source Acknowledgements

Spice.ai acknowledges the following open source projects for making this project possible:

Go Modules

github.com/fsnotify/fsnotify, https://github.com/fsnotify/fsnotify/blob/v1.5.4/LICENSE, BSD-3-Clause

github.com/gocarina/gocsv, https://github.com/gocarina/gocsv/blob/b87c2d0e983a/LICENSE, MIT

github.com/hashicorp/go-cleanhttp, https://github.com/hashicorp/go-cleanhttp/blob/v0.5.2/LICENSE, MPL-2.0

github.com/hashicorp/go-retryablehttp, https://github.com/hashicorp/go-retryablehttp/blob/v0.7.1/LICENSE, MPL-2.0

github.com/hashicorp/hcl, https://github.com/hashicorp/hcl/blob/v1.0.0/LICENSE, MPL-2.0

github.com/logrusorgru/aurora, https://github.com/logrusorgru/aurora/blob/v2.0.3/LICENSE, Unlicense

github.com/magiconair/properties, https://github.com/magiconair/properties/blob/v1.8.6/LICENSE.md, BSD-2-Clause

github.com/mattn/go-runewidth, https://github.com/mattn/go-runewidth/blob/v0.0.15/LICENSE, MIT

github.com/mitchellh/mapstructure, https://github.com/mitchellh/mapstructure/blob/v1.5.0/LICENSE, MIT

github.com/olekukonko/tablewriter, https://github.com/olekukonko/tablewriter/blob/v0.0.5/LICENSE.md, MIT

github.com/pelletier/go-toml, https://github.com/pelletier/go-toml/blob/v1.9.5/LICENSE, Apache-2.0

github.com/pelletier/go-toml/v2, https://github.com/pelletier/go-toml/blob/v2.0.2/LICENSE, MIT

github.com/pkg/browser, https://github.com/pkg/browser/blob/5ac0b6a4141c/LICENSE, BSD-2-Clause

github.com/rivo/uniseg, https://github.com/rivo/uniseg/blob/v0.4.6/LICENSE.txt, MIT

github.com/spf13/afero, https://github.com/spf13/afero/blob/v1.8.2/LICENSE.txt, Apache-2.0

github.com/spf13/cast, https://github.com/spf13/cast/blob/v1.5.0/LICENSE, MIT

github.com/spf13/cobra, https://github.com/spf13/cobra/blob/v1.6.0/LICENSE.txt, Apache-2.0

github.com/spf13/jwalterweatherman, https://github.com/spf13/jwalterweatherman/blob/v1.1.0/LICENSE, MIT

github.com/spf13/pflag, https://github.com/spf13/pflag/blob/v1.0.5/LICENSE, BSD-3-Clause

github.com/spf13/viper, https://github.com/spf13/viper/blob/v1.12.0/LICENSE, MIT

github.com/spiceai/spiceai/bin/spice, https://github.com/spiceai/spiceai/blob/HEAD/LICENSE, Apache-2.0

github.com/subosito/gotenv, https://github.com/subosito/gotenv/blob/v1.4.0/LICENSE, MIT

go.uber.org/atomic, https://github.com/uber-go/atomic/blob/v1.9.0/LICENSE.txt, MIT

go.uber.org/multierr, https://github.com/uber-go/multierr/blob/v1.8.0/LICENSE.txt, MIT

go.uber.org/zap, https://github.com/uber-go/zap/blob/v1.21.0/LICENSE.txt, MIT

golang.org/x/mod/semver, https://cs.opensource.google/go/x/mod/+/v0.14.0:LICENSE, BSD-3-Clause

golang.org/x/sys/unix, https://cs.opensource.google/go/x/sys/+/v0.16.0:LICENSE, BSD-3-Clause

golang.org/x/text, https://cs.opensource.google/go/x/text/+/v0.14.0:LICENSE, BSD-3-Clause

gopkg.in/ini.v1, https://github.com/go-ini/ini/blob/v1.66.6/LICENSE, Apache-2.0

gopkg.in/natefinch/lumberjack.v2, https://github.com/natefinch/lumberjack/blob/v2.0.0/LICENSE, MIT

gopkg.in/yaml.v2, https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE, Apache-2.0

gopkg.in/yaml.v3, https://github.com/go-yaml/yaml/blob/v3.0.1/LICENSE, MIT

Rust Crates

nameversionauthorsrepositorylicenselicense_filedescription
nameversionauthorsrepositorylicenselicense_filedescription
app0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0All loaded components from the root Spicepod and its dependencies
arrow49.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-rsApache-2.0Rust implementation of Apache Arrow
arrow-flight49.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-rsApache-2.0Apache Arrow Flight
arrow-ipc49.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-rsApache-2.0Support for the Arrow IPC format
arrow-json49.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-rsApache-2.0Support for parsing JSON format into the Arrow format
arrow_sql_gen0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0
async-stream0.3.5Carl Lerche me@carllerche.comhttps://github.com/tokio-rs/async-streamMITAsynchronous streams using async & await notation
async-trait0.1.77David Tolnay dtolnay@gmail.comhttps://github.com/dtolnay/async-traitApache-2.0 OR MITType erasure for async trait methods
axum0.6.20https://github.com/tokio-rs/axumMITWeb framework that focuses on ergonomics and modularity
axum0.7.4https://github.com/tokio-rs/axumMITWeb framework that focuses on ergonomics and modularity
base640.21.7Alice Maz alice@alicemaz.comMarshall Pierce marshall@mpierce.orghttps://github.com/marshallpierce/rust-base64Apache-2.0 OR MIT
bytes1.5.0Carl Lerche me@carllerche.comSean McArthur sean@seanmonstar.comhttps://github.com/tokio-rs/bytesMIT
clap4.5.1https://github.com/clap-rs/clapApache-2.0 OR MITA simple to use, efficient, and full-featured Command Line Argument Parser
datafusion34.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-datafusionApache-2.0DataFusion is an in-memory query engine that uses Apache Arrow as the memory model
dirs5.0.1Simon Ochsenreither simon@ochsenreither.dehttps://github.com/soc/dirs-rsApache-2.0 OR MITA tiny low-level library that provides platform-specific standard locations of directories for config, cache and other data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by the XDG base/user directory specifications on Linux, the Known Folder API on Windows, and the Standard Directory guidelines on macOS.
duckdb0.9.2wangfenjin wangfenj@gmail.comhttps://github.com/wangfenjin/duckdb-rsMITErgonomic wrapper for DuckDB
flight_client0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0
flight_datafusion0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0
flightpublisher0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0Spice OSS Flight Publisher
flightrepl0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0Spice OSS Flight Query Repl
flightsubscriber0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0Spice OSS Flight Subscriber
fundu2.0.0Joining7943 joining@posteo.dehttps://github.com/fundu-rs/funduMITConfigurable, precise and fast rust string parser to a Duration
futures0.3.30https://github.com/rust-lang/futures-rsApache-2.0 OR MITAn implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces.
futures-core0.3.30https://github.com/rust-lang/futures-rsApache-2.0 OR MITThe core traits and types in for the futures library.
indexmap1.9.3https://github.com/bluss/indexmapApache-2.0 OR MITA hash table with consistent order and fast iteration.
indexmap2.2.3https://github.com/indexmap-rs/indexmapApache-2.0 OR MITA hash table with consistent order and fast iteration.
metrics0.22.1Toby Lawrence toby@nuclearfurnace.comhttps://github.com/metrics-rs/metricsMITA lightweight metrics facade.
metrics-exporter-prometheus0.13.1Toby Lawrence toby@nuclearfurnace.comhttps://github.com/metrics-rs/metricsMITA metrics-compatible exporter for sending metrics to Prometheus.
ndarray0.15.6Ulrik Sverdrup blussJim Turnerhttps://github.com/rust-ndarray/ndarrayApache-2.0 OR MIT
ndarray-npy0.8.1Jim Turner ndarray-npy@turner.linkhttps://github.com/jturner314/ndarray-npyApache-2.0 OR MIT.npy and .npz file format support for ndarray
notify6.1.1Félix Saparelli me@passcod.nameDaniel Faust hessijames@gmail.comAron Heinecke Ox0p54r36@t-online.dehttps://github.com/notify-rs/notify.gitCC0-1.0
opentelemetry-proto0.4.0https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-protoApache-2.0Protobuf generated files and transformations.
parquet49.0.0Apache Arrow dev@arrow.apache.orghttps://github.com/apache/arrow-rsApache-2.0Apache Parquet implementation in Rust
r2d20.8.10Steven Fackler sfackler@gmail.comhttps://github.com/sfackler/r2d2Apache-2.0 OR MITA generic connection pool
regex1.10.3The Rust Project DevelopersAndrew Gallant jamslam@gmail.comhttps://github.com/rust-lang/regexApache-2.0 OR MIT
reqwest0.11.24Sean McArthur sean@seanmonstar.comhttps://github.com/seanmonstar/reqwestApache-2.0 OR MIThigher level HTTP client library
runtime0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0The spiced runtime
rustls0.21.10https://github.com/rustls/rustlsApache-2.0 OR ISC OR MITRustls is a modern TLS library written in Rust.
rustls-native-certs0.6.3https://github.com/ctz/rustls-native-certsApache-2.0 OR ISC OR MITrustls-native-certs allows rustls to use the platform native certificate store
rustls-pemfile1.0.4https://github.com/rustls/pemfileApache-2.0 OR ISC OR MITBasic .pem file parser for keys and certificates
rustyline13.0.0Katsu Kawakami kkawa1570@gmail.comhttps://github.com/kkawakam/rustylineMITRustyline, a readline implementation based on Antirez’s Linenoise
sea-query0.30.7Chris Tsang chris.2y3@outlook.comBilly Chan ccw.billy.123@gmail.comIvan Krivosheev py.krivosheev@gmail.comhttps://github.com/SeaQL/sea-queryApache-2.0 OR MIT
serde1.0.196Erick Tryzelaar erick.tryzelaar@gmail.comDavid Tolnay dtolnay@gmail.comhttps://github.com/serde-rs/serdeApache-2.0 OR MIT
serde_json1.0.113Erick Tryzelaar erick.tryzelaar@gmail.comDavid Tolnay dtolnay@gmail.comhttps://github.com/serde-rs/jsonApache-2.0 OR MIT
serde_yaml0.9.31David Tolnay dtolnay@gmail.comhttps://github.com/dtolnay/serde-yamlApache-2.0 OR MITYAML data format for Serde
snafu0.7.5Jake Goulding jake.goulding@gmail.comhttps://github.com/shepmaster/snafuApache-2.0 OR MITAn ergonomic error handling library
snafu0.8.0Jake Goulding jake.goulding@gmail.comhttps://github.com/shepmaster/snafuApache-2.0 OR MITAn ergonomic error handling library
spiced0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0Spice OSS
spicepod0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0
sql_provider_datafusion0.7.0-alphahttps://github.com/spiceai/spiceaiApache-2.0
tokio1.36.0Tokio Contributors team@tokio.rshttps://github.com/tokio-rs/tokioMITAn event-driven, non-blocking I/O platform for writing asynchronous I/O backed applications.
tokio-stream0.1.14Tokio Contributors team@tokio.rshttps://github.com/tokio-rs/tokioMITUtilities to work with Stream and tokio.
toml0.8.10Alex Crichton alex@alexcrichton.comhttps://github.com/toml-rs/tomlApache-2.0 OR MITA native Rust encoder and decoder of TOML-formatted files and streams. Provides implementations of the standard Serialize/Deserialize traits for TOML data to facilitate deserializing and serializing Rust structures.
tonic0.9.2Lucio Franco luciofranco14@gmail.comhttps://github.com/hyperium/tonicMITA gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility.
tonic0.10.2Lucio Franco luciofranco14@gmail.comhttps://github.com/hyperium/tonicMITA gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility.
tracing0.1.40Eliza Weisman eliza@buoyant.ioTokio Contributors team@tokio.rshttps://github.com/tokio-rs/tracingMIT
tracing-subscriber0.3.18Eliza Weisman eliza@buoyant.ioDavid Barsky me@davidbarsky.comTokio Contributors team@tokio.rshttps://github.com/tokio-rs/tracingMIT
tract-core0.21.1Mathieu Poumeyrol kali@zoy.orghttps://github.com/snipsco/tractApache-2.0 OR MITTiny, no-nonsense, self contained, TensorFlow and ONNX inference
tract-onnx0.21.1Mathieu Poumeyrol kali@zoy.orghttps://github.com/snipsco/tractApache-2.0 OR MITTiny, no-nonsense, self contained, TensorFlow and ONNX inference
uuid1.7.0Ashley Mannixashleymannix@live.com.auChristopher ArmstrongDylan DPCdylan.dpc@gmail.comHunar Roop Kahlonhunar.roop@gmail.comhttps://github.com/uuid-rs/uuid
© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/api/index.html b/api/index.html deleted file mode 100644 index a8115188..00000000 --- a/api/index.html +++ /dev/null @@ -1 +0,0 @@ -Spice.ai API documentation | Spice.ai DocsSpice.ai API documentation | Spice.ai Docs
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/cli/index.html b/cli/index.html index ed5fa176..aedca10c 100644 --- a/cli/index.html +++ b/cli/index.html @@ -1,9 +1,10 @@ -Spice.ai CLI documentation | Spice.ai Docs

Spice.ai CLI documentation

Detailed documentation on the Spice.ai CLI

The Spice.ai CLI is a set of commands to create and manage Spice.ai pods and interact with the Spice.ai runtime.

Install

The Spice.ai CLI can be installed by:

  • Running curl https://install.spiceai.org | /bin/bash
  • Downloading the binary from GitHub Releases

The spice program will be added to the PATH automatically for bash, fish, and zsh shells.

After installing the Spice.ai CLI for the first time, ensuring you’ve got the correct version by running spice version. The Runtime version is not expected to be shown, as the runtime will be downloaded and installed automatically upon first run.

Getting started

For getting started with Spice.ai using the Spice.ai CLI, see the Getting Started Guide.

Use spice help for all commands and spice [command] --help for more information about a command.

A typical command-line workflow might be as follows:

# Start the runtime
+Spice.ai CLI documentation | Spice.ai Docs

Spice.ai CLI documentation

Detailed documentation on the Spice.ai CLI

The Spice.ai CLI is a set of commands to create and manage Spice.ai pods and interact with the Spice.ai runtime.

Install

The Spice.ai CLI can be installed by:

  • Running curl https://install.spiceai.org | /bin/bash
  • Downloading the binary from GitHub Releases

The spice program will be added to the PATH automatically for bash, fish, and zsh shells.

After installing the Spice.ai CLI for the first time, ensuring you’ve got the correct version by running spice version. The Runtime version is not expected to be shown, as the runtime will be downloaded and installed automatically upon first run.

Getting started

For getting started with Spice.ai using the Spice.ai CLI, see the Getting Started Guide.

Use spice help for all commands and spice [command] --help for more information about a command.

A typical command-line workflow might be as follows:

# Start the runtime
 spice run
-

In another terminal:

# Add a pod
-spice add samples/gardener
-# Re-train
-spice train gardener
-

Common commands are:

CommandDescription
spice addAdd a pod to spicepods
spice runStarts the Spice.ai runtime
spice trainStarts a pod training run
spice versionShows the Spice.ai CLI and runtime versions
spice helpHelp about any command
spice upgradeUpgrade the CLI to latest version

See Spice.ai CLI command reference for the full list of available commands.

Updating

To update to latest CLI, run the upgrade command.

spice upgrade
-
Note

Upgrade command is supported from CLI v0.3.1. For version < 0.3.1 users have to re-run the install script.

Uninstall

The Spice.ai CLI is installed by default to $HOME/.spice/bin/spice and a line added to the shell config, such as .zshrc

It can be uninstalled by deleting the spice binary and removing the PATH addition from the rc file.

Find all of the Docker images that were installed by running:

docker image ls -f reference="ghcr.io/spiceai/*"
-

Spice.ai CLI command reference

Spice.ai CLI command reference

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +

Run new shell in the same folder:

# Init new app
+spice init spice_app
+
+# Add the Quickstart Spicepod
+spice add spiceai/quickstart
+
+

Common commands are:

CommandDescription
spice addAdd Pod - adds a pod to the project
spice runRun Spice - starts the Spice runtime, installing if necessary
spice versionSpice CLI version
spice helpHelp about any command
spice upgradeUpgrades the Spice CLI to the latest release

See Spice CLI command reference for the full list of available commands.

Updating

To update to latest CLI, run the upgrade command.

spice upgrade
+
Note

Upgrade command is supported from CLI v0.3.1. For version < 0.3.1 users have to re-run the install script.

Uninstall

The Spice.ai CLI is installed by default to $HOME/.spice/bin/spice and a line added to the shell config, such as .zshrc

It can be uninstalled by deleting the spice binary and removing the PATH addition from the rc file.


Spice.ai CLI command reference

Spice.ai CLI command reference

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/cli/reference/index.html b/cli/reference/index.html index ccd4687d..f6b14917 100644 --- a/cli/reference/index.html +++ b/cli/reference/index.html @@ -1,7 +1,2 @@ -Spice.ai CLI command reference | Spice.ai Docs

Spice.ai CLI command reference

Spice.ai CLI command reference

spice

Usage

spice [command] [--help]
-

Full Command Reference

CommandDescription
spice actionManage actions
spice addAdd a pod to spicepods
spice exportExport a pod
spice importImport a pod
spice initInitialize a new pod
spice rewardManages rewards
spice runStarts the Spice.ai runtime
spice trainStarts a pod training run
spice versionShows the Spice.ai CLI and runtime versions
spice helpHelp about any command
spice completionGenerates the autocompletion script for a shell
spice pods listRetrieve pods currently loaded in the runtime
spice upgradeUpgrade CLI to the latest version

Command Flags

All commands have a help flag –help or -h to print its usage documentation:

  • –help | -h : Print the help message

Export

spice export <podname> [--tag <tag>] [--overwrite] [--output <directory>]
-
  • –tag : The tag to export the model from (default: “latest”)
  • –overwrite : Overwrite a file that already exists
  • –output | -o : The output directory (default: “.")

Import

spice import <podname> [--tag <tag>]
-
  • –tag : Specify which tag to import the model to (default: “latest”)

Run

spice run [--context <context>]
-
  • –context : Runs Spice.ai in the given context, either ‘docker’ or ‘metal’ (default: “docker”)

Train

spice train [--context <context>] [--learning-algorithm <algorithm>]
-
  • –context : Runs Spice.ai in the given context, either ‘docker’ or ‘metal’ (default: “docker”)
  • –learning-algorithm : Train the pod with specified algorithm (default: “dql” or inherited from pod)
  • –loggers : Train the pod with the specified comma-seperated list of loggers

Pods

spice pods list
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Spice.ai CLI command reference | Spice.ai Docs

Spice.ai CLI command reference

Spice.ai CLI command reference

spice

Usage

spice [command] [--help]
+

Full Command Reference

CommandDescription
addAdd Pod - adds a pod to the project
completionGenerate the autocompletion script for the specified shell
datasetDataset operations
helpHelp about any command
initInitialize Pod - initializes a new pod in the project
loginLogin to Spice.ai
runRun Spice.ai - starts the Spice.ai runtime, installing if necessary
sqlStart an interactive SQL query session against the Spice.ai runtime
upgradeUpgrades the Spice CLI to the latest release
versionSpice CLI version

Command Flags

All commands have a help flag –help or -h to print its usage documentation:

  • –help | -h : Print the help message
© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/dataspaces/index.html b/concepts/dataspaces/index.html deleted file mode 100644 index 65acc16f..00000000 --- a/concepts/dataspaces/index.html +++ /dev/null @@ -1 +0,0 @@ -Dataspaces | Spice.ai Docs

Dataspaces

Reference documentation for Spice.ai Dataspaces

A dataspace is a logical grouping of data with definitions of how that data should be loaded and processed, usually from a single source.

A combination of its data source and its name identifies it, for example, nasdaq/msft or twitter/tweets.

The dataspaces node of the Spicepod manifest may hold one or more dataspace definitions. The runtime will merge data from all pod dataspaces into observations.

Each dataspace encapsulates definitions for its core data primitives, such as measurements (numerical data), categories (string-based categorical data), and tags (string-based tags). It also includes configuration for data connector and data processor components to load and process data into those primitives.

While measurements and categories are scoped to the dataspace namespace, tags are aggregated with tags from other dataspaces to the pod scope.

Dataspaces may load data through a data connector and processor or through the POST /pods/{pod}/observations API. The API accepts JSON or CSV data and uses the appropriate JSON or CSV data processor.

Data connectors and processors are community-maintained components for streaming and processing time-series data. More information can be found in the data-components-contrib repository.

Reference

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/index.html b/concepts/index.html index 478edbd7..5437fbd5 100644 --- a/concepts/index.html +++ b/concepts/index.html @@ -1,3 +1,2 @@ -Spice.ai Core Concepts | Spice.ai Docs

Spice.ai Core Concepts

Spice.ai CLI

The spice command line tool for interacting with the Spice.ai runtime during development. View the CLI reference to learn more.

Spice.ai Runtime

The Spice.ai core runtime which runs as the daemon spiced and includes the AI and Data engines. The runtime also serves the Spice.ai API.

spicerack.org

The registry spicerack.org of Spice.ai pods that can be fetched with the Spice.ai CLI.

Pod

A Pod is a package of configuration and data used to train and deploy Spice.ai with an application.

A Pod manifest is a YAML file that describes how to connect data with a learning environment.

A Pod is constructed from the following components:

Dataspace

A dataspace is a specification on how the Spice.ai runtime and AI engine loads, processes and interacts with data from a single source. A dataspace may contain a single data connector and data processor. There may be multiple dataspace definitions within a pod. The fields specified in the union of dataspaces are used as inputs to the neural networks that Spice.ai trains.

A dataspace that doesn’t contain a data connector/processor means that the observation data for this dataspace will be provided by calling POST /pods/{pod}/observations.

Data Connector

A data connector is a reuseable component that contains logic to fetch or ingest data from an external source. Spice.ai provides a general interface that anyone can implement to create a data connector, see the data-components-contrib repo for more information.

Data Processor

A data processor is a reusable component, composable with a data connector that contains logic to process raw connector data into observations and state Spice.ai can use.

Spice.ai provides a general interface that anyone can implement to create a data processor, see the data-components-contrib repo for more information.

Actions

Actions are the set of actions the Spice.ai runtime can recommend for a pod.

Recommendations

To intelligently adapt its behavior, an application should query the Spice.ai runtime for which action it recommends to take given a specified time. The result of this query is a recommendation.

If a time is not specified, the resulting recommendation query time will default to the time of the most recently ingested observation.

Training Rewards

Training Rewards are code definitions in Python that tell the Spice.ai AI Engine how to train the neural networks to achieve the desired goal. A reward is defined for each action specified in the pod.

In the future we will expand the languages we support for writing the reward functions in. Let us know which language you want to be able to write your reward functions in!

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Spice.ai Core Concepts | Spice.ai Docs

Spice.ai Core Concepts

What is Spice?

Spice is a portable runtime that provides developers with a unified SQL query interface to locally accelerate and query data tables sourced from any database, data warehouse, or data lake.

Spice makes it easy to build data-driven and data-intensive applications by streamlining the use of data and machine learning (ML) in software.

The Spice runtime is written in Rust and leverages industry leading technologies like Apache DataFusion, Apache Arrow, Apache Arrow Flight, and DuckDB.

Why Spice?

Spice makes querying data by SQL across one or more data sources simple and fast. Easily co-locate a managed working set of your data with your application or ML, locally accelerated in-memory, with DuckDB, or with an attached database like PostgreSQL for high-performance, low-latency queries.

Before Spice

old

With Spice

new

Spice CLI

The spice command line tool for interacting with the Spice.ai runtime during development. View the CLI reference to learn more.

Spice Runtime

The Spice core runtime which runs as the daemon spiced and includes the ML and Data engines.

spicerack.org

The registry spicerack.org of Spice.ai pods that can be fetched with the Spice.ai CLI.

Spicepod

A Spicepod is a package of configuration and data used to train and deploy Spice.ai with an application.

A Spicepod manifest is a YAML file that describes how to connect data with a learning environment.

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/interpretations/index.html b/concepts/interpretations/index.html deleted file mode 100644 index 82c76645..00000000 --- a/concepts/interpretations/index.html +++ /dev/null @@ -1,12 +0,0 @@ -Interpretations | Spice.ai Docs

Interpretations

Reference documentation for Spice.ai Intepretations

Interpretations provide a way to define meaning for a time range within a pod period. For example, for a stock trading pod with a period of Monday to Friday, an interpretation of that time range could be, from Tuesday to Wednesday is a good time to buy.

An example interpretation defined in JSON is as follows:

{
-    "start": 1605333600,
-    "end": 1605333601,
-    "name": "e2e-test-interpretation",
-    "actions": [
-      "small_buy",
-    ],
-    "tags": [
-      "mytag",
-    ]
-  },
-

The interpretation is defined as a time range from start to end, with a name and a list of actions and tags.

Interpretations can be used to provide hints to the reward function on how to reward a time step. In the above example, when the training reaches Tuesday, the reward function author might choose to reward buys even higher based on that expert input.

When the action specific reward function is called, if there is an interpretation in that time range, it will be provided to the reward function in [state]_interpretations. E.g. if an interpretation overlapped with new state then next_state_interpretations would contain a list of the overlapping interpretations.

Comparing Spice.ai recommendations to interpretations is also one way of testing Spice.ai recommendations against expected actions for input data.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/recommendations/index.html b/concepts/recommendations/index.html deleted file mode 100644 index 7b096e34..00000000 --- a/concepts/recommendations/index.html +++ /dev/null @@ -1 +0,0 @@ -Recommendations | Spice.ai Docs

Recommendations

Reference documentation for Spice.ai Recommendations

Recommendations are core to making intelligent apps that learn and adapt.

Adaptive applications use Spice.ai Recommendations to inform their behavior and decisions on what actions to take during their operation. Each recommendation includes a confidence score, from zero to one. Applications should decide on the appropriate level of confidence for its given scenario as to act upon the recommendation or not.

Valid recommendations (confidence scores greater than zero) are returned after the first training run for a pod is complete.

If a time is not specified, the resulting recommendation query time will default to the time of the most recently ingested observation within the pod period.

API Format

Get a recommendation using the latest ingested observation time:

GET http://localhost:8000/api/v0.1/pods/{pod}/recommendation

Get a recommendation for a specified time:

GET http://localhost:8000/api/v0.1/pods/{pod}/recommendation?time={unix_timestamp}

where {unix_timestamp} is specified in Unix time in seconds. See Time for more information on how Spice.ai handles time.

Example

For quickstarts/trader a valid request at a specific time is:

GET http://localhost:8000/api/v0.1/pods/trader/recommendation?time=1605729600

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/rewards/external/index.html b/concepts/rewards/external/index.html deleted file mode 100644 index 5bcac93f..00000000 --- a/concepts/rewards/external/index.html +++ /dev/null @@ -1,45 +0,0 @@ -Reward Function Files | Spice.ai Docs

Reward Function Files

Reward functions may be defined in a single Python (.py) file.

This file may be authored in standard Python3.8+ code and the file may define global functions and import packages.

The packages that can be imported are limited to what is imported by the AI Engine.

Action Reward

For each action defined in the Spicepod manifest, a corresponding function (i.e. action reward) should be defined in the Python file. The mapping of action to function name is specified in the manifest using the with node.

Each reward function should match the following function signature, with the function name matching that defined in the Spicepod manifest.

def reward_for_action(current_state: dict, current_state_interpretations: list, next_state: dict, next_state_interpretations: list) -> float:
-    """
-    Returns a reward given the action and observation space
-
-    Args:
-        action_name: The name of the action to generate a reward for
-        current_state: Value of the observation state when the action was recommended
-        current_state_interpretations: Array of interpretations for current_state
-        next_state: Value of the observation state that immediately follows current_state
-        next_state_interpretations: Array of interpretations for next_state
-
-            Note: As interactive environments are not fully supported, it may not make sense to use
-                    next_state when calculating the reward
-
-    Returns:
-        (float): The reward that the agent should receive for taking this action.
-    """
-

Learn more about interpretations here.

Example

For the following manifest:

training:
-  reward_funcs: my_reward.py
-  rewards:
-    - reward: buy
-      with: buy_reward
-    - reward: sell
-      with: sell_reward
-    - reward: hold
-      with: hold_reward
-

Author a Python file with the following content to define the reward functions:

my_reward.py

def buy_reward(current_state: dict, current_state_interps, next_state: dict, next_state_interps) -> float:
-    return complex_calculation(current_state)
-
-def sell_reward(current_state: dict, current_state_interps, next_state: dict, next_state_interps) -> float:
-    return current_state["price"] - next_state["price"]
-
-def hold_reward(current_state: dict, current_state_interps, next_state: dict, next_state_interps) -> float:
-    return 1
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/rewards/index.html b/concepts/rewards/index.html deleted file mode 100644 index 26bfb98b..00000000 --- a/concepts/rewards/index.html +++ /dev/null @@ -1,38 +0,0 @@ -Rewards | Spice.ai Docs

Rewards

Documentation for authoring Spice.ai rewards

The Spice.ai engine learns and provides recommendations to your application using a type of AI called deep reinforcement learning. To learn more, see Deep Learning AI.

A fundamental concept in deep reinforcement learning is to reward actions a learning agent takes during a training run. These rewards are numerical values and can be negative or positive.

In Spice.ai, developers define the rewards the AI engine uses in training runs through reward function definitions. Reward functions are Python functions (with more languages supported in the future) and can be authored either inline in the Spicepod manifest YAML or a separate Python .py file.

To see how to define reward functions using an external file, click here.

Rewards in YAML

To define the reward functions in the YAML directly, put the Python code fragment in the with node.

The reward function must assign a value to reward for it to be valid.

The following variables are available to be used in the reward function:

variableTypeDescription
current_statedictThe observation state when the action was taken
next_statedictThe observation state one granularity step after the action was taken

Example

See the full example manifest here.

training:
-  rewards:
-    - reward: close_valve
-      # Reward keeping moisture content above 25%
-      with: |
-        if next_state["sensors_garden_moisture"] > 0.25:
-          reward = 200
-
-        # Penalize low moisture content depending on how far the garden has dried out
-        else:
-          reward = -100 * (0.25 - next_state["sensors_garden_moisture"])
-
-          # Penalize especially heavily if the drying trend is continuing (next_state is drier than current_state)
-          if next_state["sensors_garden_moisture"] < current_state["sensors_garden_moisture"]:
-            reward = reward * 2        
-
-    - reward: open_valve_half
-      # Reward watering when needed, more heavily if the garden is more dried out
-      with: |
-        if next_state["sensors_garden_moisture"] < 0.25:
-          reward = 100 * (0.25 - next_state["sensors_garden_moisture"])
-
-        # Penalize wasting water
-        # Penalize overwatering depending on how overwatered the garden is
-        else:
-          reward = -50 * (next_state["sensors_garden_moisture"] - 0.25)        
-
-    - reward: open_valve_full
-      # Reward watering when needed, more heavily if the garden is more dried out
-      with: |
-        if next_state["sensors_garden_moisture"] < 0.25:
-          reward = 200 * (0.25 - next_state["sensors_garden_moisture")
-
-        # Penalize wasting water more heavily with valve fully open
-        # Penalize overwatering depending on how overwatered the garden is
-        else:
-          reward = -100 * (next_state["sensors_garden_moisture"] - 0.25)        
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/concepts/time/index.html b/concepts/time/index.html deleted file mode 100644 index 3f2cef9a..00000000 --- a/concepts/time/index.html +++ /dev/null @@ -1,7 +0,0 @@ -Time | Spice.ai Docs

Time

The concept of Time and Time-Series in Spice.ai

Spice.ai is a time series AI platform, so time is one of Spice.ai’s most fundamental and core concepts.

What is time series data?

Time series data is a series of timestamped data points or events indexed in time order. In Spice.ai, these data points are called Observations. For example, temperature sensor readings on an interval or a daily stock price are examples of time series data. Time series data applies to many domains, including analytics, finance, health and biometrics, IoT and industrial, security, and application monitoring. To learn more, Wikipedia has a comprehensive article on time series, and InfluxData has published a very informative article, What is time series data?

Why time series AI?

One definition of artificial intelligence proposed by Hado van Hasselt from DeepMind is “to be able to learn to make decisions to achieve goals.” Using this definition can conclude that these decisions are made over time to achieve an application’s goals. Thus, time and time-series data can be seen as fundamental concepts when developing an application’s intelligence.

Time series in Spice.ai

Spice.ai natively ingests, processes, and learns from time series data. There are three core time series concepts in Spice.ai:

  • A time series Period and its period Epoch
  • Consecutive intervals or windows of time series observations
  • The smallest granularity of time in the series -A visualization of these concepts over a timeline is below:
spiceai-time

Each of these concepts translates to developer configurable parameters in the Spicepod. For example, the Trader Sample uses these pod parameters in its manifest:

name: trader
-params:
-  period: 30m
-  interval: 30s
-  granularity: 5s
-

If not provided in the manifest, Spicepods will default to a period of 3 days, intervals of 1 min, and granularity of 10 seconds. The period epoch will default to a dynamic epoch of the current time minus the period. In this mode, the period becomes a sliding window over time.

See reference documentation for Spicepod params.

Period

The period defines the entire timespan the Spicepod will use for learning and decision-making.

Thus the time series period has a start time of epoch and an end time of epoch + period.

Period Epoch

The period epoch defines the beginning, or start, of the Spicepod’s time series data. Spice.ai will discard data timestamped before the epoch time.

The epoch defaults to the current time - period.

Interval

The interval defines the interval or window of time the AI engine uses to learn.

The first interval of data, from epoch to epoch + interval is considered pre-training or “warm-up” data. At least one interval’s worth of data is required before the AI engine can learn and make a decision recommendation.

The AI engine then trains on consecutive data intervals for the rest of the period to learn.

Granularity

The granularity defines the smallest unit of time series data. The granularity can be conceptualized in practice as the time a decision is valid. For example, a decision to turn on or off an air conditioner would be valid for a granularity unit of time.

Spice.ai will aggregate observations within a granularity timespan. This aggregation results in granularity-sized “ticks” or time-steps in the series.

Each consecutive training interval advances by a unit of granularity over the entire period. Thus, the granularity cannot be larger than the interval.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/deep-learning-ai/dql/index.html b/deep-learning-ai/dql/index.html deleted file mode 100644 index 44539a74..00000000 --- a/deep-learning-ai/dql/index.html +++ /dev/null @@ -1 +0,0 @@ -Deep Q-Learning | Spice.ai Docs

Deep Q-Learning

Spice.ai implementation of the Deep Q Learning algorithm (DQL)

The DQN (Deep Q-Network) algorithm was developed by DeepMind in 2015. It was able to solve a wide range of Atari games (some to superhuman level) by combining reinforcement learning and deep neural networks at scale. The algorithm was developed by enhancing a classic RL algorithm called Q-Learning with deep neural networks and a technique called experience replay.

Learn more about the Deep Q-Network algorithm at https://www.tensorflow.org/agents/tutorials/0_intro_rl

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/deep-learning-ai/index.html b/deep-learning-ai/index.html deleted file mode 100644 index f0ce69dd..00000000 --- a/deep-learning-ai/index.html +++ /dev/null @@ -1,3 +0,0 @@ -Deep Learning AI | Spice.ai Docs

Deep Learning AI

The Spice.ai engine learns and provides recommendations to your application using a type of AI called deep reinforcement learning.

Reinforcement learning (RL) is a general framework where agents learn to perform actions in an environment so as to maximize a reward according to a policy. In deep reinforcement learning, the policy is trained by a neural network based on a deep learning algorithm.

The agent and environment continuously interact with each other. At each time step, the agent takes an action on the observation space based on its policy (aka brain), and receives a reward and the next observation from the environment. The goal is to improve the policy so as to maximize the sum of rewards (score).

Spice.ai provides a standard interface that a deep learning algorithm can be implemented with. At launch Spice.ai supports two deep learning algorithms and more will be added over time.

By default, Spice.ai will use Deep Q-Learning. To use a different algorithm, call spice train with the parameter --learning-algorithm set to one of the following values:

–learning-algorithmAlgorithm
dqlDeep Q-Learning
vpgVanilla Policy Gradient
sacdSoft Actor-Critic (Discrete)

Example

spice train --learning-algorithm vpg
-

Interface

Learn how to add a new deep RL algorithm by implementing the Spice.ai interface

Vanilla Policy Gradient

Spice.ai implementation of the Vanilla Policy Gradient algorithm (VPG)

Deep Q-Learning

Spice.ai implementation of the Deep Q Learning algorithm (DQL)

Soft Actor-Critic

Spice.ai implementation of the Soft Actor-Critic algorithm (SAC)

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/deep-learning-ai/interface/index.html b/deep-learning-ai/interface/index.html deleted file mode 100644 index 3ff22d49..00000000 --- a/deep-learning-ai/interface/index.html +++ /dev/null @@ -1,67 +0,0 @@ -Interface | Spice.ai Docs

Interface

Learn how to add a new deep RL algorithm by implementing the Spice.ai interface

Implement a deep RL agent that is compatible with Spice.ai by implementing the following interface. This interface lives in code at: https://github.com/spiceai/spiceai/blob/trunk/ai/src/algorithms/agent_interface.py

"""
-The interface that all Spice.ai compatible deep-RL agents should conform to.
-"""
-
-class SpiceAIAgent():
-    """
-    Args:
-        state_shape: The shape of the observation state
-        action_size: How many actions our agent is able to take.
-    """
-
-    def __init__(self, state_shape, action_size):
-        self.state_shape = state_shape
-        self.action_size = action_size
-
-    def act(self, state) -> Tuple[int, list]:
-        """
-        Returns an action recommended by the algorithm's policy for the current state
-
-        Args:
-            state: The observation state to act upon
-
-        Returns:
-            (int): The action to take, as an integer that can index into the array of defined actions.
-            (list): The probabilities of each action.
-        """
-        raise NotImplementedError()
-
-    def add_experience(self, state, action, reward, next_state):
-        """
-        Adds the experience of the reward from taking this action at that state
-
-        Args:
-            state: The observation state when the action was taken
-            action: The action that was performed
-            reward: The reward that was received for taking that action
-            next_state: The observation state after the action was taken
-        """
-        raise NotImplementedError()
-
-    def learn(self):
-        """
-        Updates the algorithm's policy based on its collected experiences so far.
-        """
-        raise NotImplementedError()
-
-    def save(self, model_path: str):
-        """
-        Save the trained model to disk
-
-        Args:
-            model_path: The path on disk to save the model parameters to
-        """
-        raise NotImplementedError()
-
-    def load(self, model_path: str) -> bool:
-        """
-        Load a previously trained model from disk. Returns whether it was able to load the model.
-
-        Args:
-            model_path: The path on disk to load the model parameters from
-
-        Returns:
-            (bool) Whether the model was able to be loaded properly
-        """
-        raise NotImplementedError()
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/deep-learning-ai/sac/index.html b/deep-learning-ai/sac/index.html deleted file mode 100644 index 31c6ca4d..00000000 --- a/deep-learning-ai/sac/index.html +++ /dev/null @@ -1,2 +0,0 @@ -Soft Actor-Critic | Spice.ai Docs

Soft Actor-Critic

Spice.ai implementation of the Soft Actor-Critic algorithm (SAC)

The SAC (Soft Actor-Critic) algorithm was developed in 2018. It is a off-policy, model-free reinforcement learning algorithm that aims not only at maximizing the reward but also the entropy (acting as randomly as possible). The entropy maximization helps exploring possibilities and trying actions that seems to be equally rewarding.

The Spice.ai implementation of Soft Actor-Critic has been modified to work for discrete action sets.

Berkeley AI Research blog: https://bair.berkeley.edu/blog/2018/12/14/sac/ -Arxiv paper: https://arxiv.org/abs/1801.01290

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/deep-learning-ai/vpg/index.html b/deep-learning-ai/vpg/index.html deleted file mode 100644 index 80f79aa1..00000000 --- a/deep-learning-ai/vpg/index.html +++ /dev/null @@ -1,8 +0,0 @@ -Vanilla Policy Gradient | Spice.ai Docs

Vanilla Policy Gradient

Spice.ai implementation of the Vanilla Policy Gradient algorithm (VPG)

The key idea underlying policy gradients is to push up the probabilities of -actions that lead to higher return, and push down the probabilities of actions -that lead to lower return, until you arrive at the optimal policy.

Exploration vs. Exploitation

VPG trains a stochastic policy in an on-policy way. This means that it explores -by sampling actions according to the latest version of its stochastic policy. -The amount of randomness in action selection depends on both initial conditions -and the training procedure. Over the course of training, the policy typically -becomes progressively less random, as the update rule encourages it to exploit -rewards that it has already found. This may cause the policy to get trapped in local optima.

Learn more about the Vanilla Policy Gradient algorithm at https://spinningup.openai.com/en/latest/algorithms/vpg.html

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/getting-started/index.html b/getting-started/index.html index ec29584b..a3d15eb3 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -1 +1,53 @@ -Getting started with Spice.ai | Spice.ai Docs
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Getting started with Spice.ai | Spice.ai Docs

Getting started with Spice.ai

Get started with Spice.ai in 5 minutes

Follow these steps to get started with Spice.ai.

Step 1. Install the Spice CLI:

curl https://install.spiceai.org | /bin/bash
+

Step 2. Initialize a new Spice app with the spice init command:

spice init spice_app
+

A Spicepod.yaml file is created in the working directory.

Step 3. Connect to the sample Dremio instance to access the sample data:

spice login dremio -u demo -p demo1234
+

Step 4. Start the Spice runtime:

spice run
+

Example output will be shown as follows:

Spice.ai runtime starting...
+Using latest 'local' runtime version.
+2024-02-21T06:11:56.381793Z  INFO runtime::http: Spice Runtime HTTP listening on 127.0.0.1:3000
+2024-02-21T06:11:56.381853Z  INFO runtime::flight: Spice Runtime Flight listening on 127.0.0.1:50051
+2024-02-21T06:11:56.382038Z  INFO runtime::opentelemetry: Spice Runtime OpenTelemetry listening on 127.0.0.1:50052
+

The runtime is now started and ready for queries.

Step 5. In a new terminal window, add the spiceai/quickstart Spicepod. A Spicepod is a package of configuration defining datasets and ML models.

spice add spiceai/quickstart
+

The Spicepod.yaml file will be updated with the spiceai/quickstart dependency.

version: v1beta1
+kind: Spicepod
+name: PROJECT_NAME
+dependencies:
+  - spiceai/quickstart
+

The spiceai/quickstart Spicepod will add a taxi_trips data table to the runtime which is now available to query by SQL.

2024-02-22T05:53:48.222952Z  INFO runtime: Loaded dataset: taxi_trips
+2024-02-22T05:53:48.223101Z  INFO runtime::dataconnector: Refreshing data for taxi_trips
+

Step 6. Start the Spice SQL REPL:

spice sql
+

The SQL REPL inferface will be shown:

Welcome to the interactive Spice.ai SQL Query Utility! Type 'help' for help.
+
+show tables; -- list available tables
+sql>
+

Enter show tables; to display the available tables for query:

sql> show tables;
+
++---------------+--------------------+-------------+------------+
+| table_catalog | table_schema       | table_name  | table_type |
++---------------+--------------------+-------------+------------+
+| datafusion    | public             | taxi_trips  | BASE TABLE |
+| datafusion    | information_schema | tables      | VIEW       |
+| datafusion    | information_schema | views       | VIEW       |
+| datafusion    | information_schema | columns     | VIEW       |
+| datafusion    | information_schema | df_settings | VIEW       |
++---------------+--------------------+-------------+------------+
+
+Query took: 0.004728897 seconds
+

Enter a query to display the most expensive tax trips:

sql> SELECT trip_distance_mi, fare_amount FROM taxi_trips ORDER BY fare_amount LIMIT 10;
+

Output:

+------------------+-------------+
+| trip_distance_mi | fare_amount |
++------------------+-------------+
+| 1.1              | 7.5         |
+| 6.1              | 23.0        |
+| 0.6              | 4.5         |
+| 16.7             | 52.0        |
+| 11.3             | 37.5        |
+| 1.1              | 6.0         |
+| 5.3              | 18.5        |
+| 1.3              | 7.0         |
+| 1.0              | 7.0         |
+| 3.5              | 17.5        |
++------------------+-------------+
+
+Query took: 0.002458976 seconds
+
© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/getting-started/install-spiceai/index.html b/getting-started/install-spiceai/index.html deleted file mode 100644 index 40ccd29f..00000000 --- a/getting-started/install-spiceai/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Install Spice.ai | Spice.ai Docs

Install Spice.ai

⭐️ We recommend using GitHub Codespaces to get started. Codespaces enables you to run Spice.ai in a virtual environment in the cloud. If you use Codespaces, the install is not required and you may skip to the Getting Started with Codespaces section.

Docker installation

To continue with Docker installation on your local machine, please follow these instructions.

Spice.ai CLI Installation (local machine)

Install the Spice CLI by running the following curl command in your terminal.

curl https://install.spiceai.org | /bin/bash
-

You may need to restart your terminal for the spice command to be added to your PATH.

Getting Started with Codespaces

Create a new GitHub Codespace in the spiceai/quickstarts repo at github.com/spiceai/quickstarts/codespaces.

Once you open the Codespace, Spice.ai and everything you need to get started will already be installed.

Create your first Spice.ai pod and train it >>
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/getting-started/next-steps/index.html b/getting-started/next-steps/index.html deleted file mode 100644 index 78ca9ce5..00000000 --- a/getting-started/next-steps/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Next steps | Spice.ai Docs

Next steps

Congratulations! In just a few minutes you downloaded and installed the Spice.ai CLI and runtime, created your first Spice.ai pod, trained it, and got a recommendation from it.

This is just the start of the journey with Spice.ai. Next, try one of the quickstart tutorials or more in-depth samples for creating intelligent applications with Spice.ai.

Try:

Have questions?

If you need help, feel free to get in touch with the team through Discord.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/getting-started/train-pod/index.html b/getting-started/train-pod/index.html deleted file mode 100644 index 62c03f15..00000000 --- a/getting-started/train-pod/index.html +++ /dev/null @@ -1,18 +0,0 @@ -Create your first Spice.ai pod and train it | Spice.ai Docs

Create your first Spice.ai pod and train it

A Spice.ai Pod is simply a collection of configuration and data that is used to train and deploy your own AI.

We will add intelligence to a sample application, ServerOps, by creating and training a Spice.ai pod that offers recommendations to the application for different server operations, such as performing server maintenance.

If you are using GitHub Codespaces, skip Step 1. and continue with Step 2., as the repository will already be cloned.

Step 1. Clone the Spice.ai quickstarts repository:

cd $HOME
-git clone https://github.com/spiceai/quickstarts
-cd quickstarts/serverops
-

Step 2. Start the Spice runtime with spice run:

cd $HOME/quickstarts/serverops
-spice run
-

Step. 3. In a new terminal, add the ServerOps quickstart pod:

So that we can leave Spice.ai running, add the quickstart pod in a new terminal tab or window. If you are running in GitHub Codespaces, you can open a new terminal by clicking the split-terminal button in VS Code.

spice add quickstarts/serverops
-

The Spice.ai CLI will download the ServerOps quickstart pod and add the pod manifest to your project at spicepods/serverops.yaml.

The Spice runtime will then automatically detect the pod and start your first training run!

Note, automatic training relies on your system’s filewatcher. In some cases, this might be disabled or not work as expected. If training does not start, follow the command to retrain the pod below.

Observe the pod training

Navigate to http://localhost:8000 in your favorite browser. You will see an overview of your pods. From here, you can click on the serverops pod to see a chart of the pod’s training progress.

Retrain the pod

In addition to automatic training upon manifest changes, training can be started by using the Spice CLI from within your app directory.

spice train serverops
-

Get a recommendation

After training the pod, you can now get a recommendation for an action from it!

curl http://localhost:8000/api/v0.1/pods/serverops/recommendation
-

Run the server ops application

To see how Spice.ai integrates with an app you write, start the associated sample app in this repo and look at the source code to see how it works.

npm install
-node serverops.js
-
Next steps >>
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/images/conecpts-before-spice.png b/images/conecpts-before-spice.png new file mode 100644 index 0000000000000000000000000000000000000000..471cfeef482a4a50c2165b385a20414a9e4bac9a GIT binary patch literal 75563 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%0D!Kulh{CJ`gsbcRdXhFVg;A;*m( zX6AT9w-&NEU6w^vgD>kLUhveQ3IeY1?6Su^pVC_O#wTPlu$DeyuR)s zIkDL=C~d+T8HaG#5dW=Jxr8JNH?$ak3p7h&g67jowLovINQdz$?~XY_RK%P|FdJzmz+>b9`kK`%|mUX}T+^Vp%*P~ya(j5C!09%RgD!(-Y{y6tz1 zD>qdmxJG_GVu~25J+8s8{8-E}>MIO?TS0H@J7y|!^n%I#oDC_xf6ez3L-`-uUL5F> zf1LhVn7_VQy8%V{M+?F{rS#xoC(!w-gX*fEf$120WzRZ!_7Ocuhh(uk4j>uZ?I2G%4y}XyC7xIujzGu^-*=-w*>-uUwTA zAE{wmsYP3ikFWJ|^^U5hs-+6Q+nB9;T4slVzB<1kR!X@+ZkGAO*)`R%#)*xGHcxyy z#&LnKnzi|MBdSI!E620`Sl>~jdM!vpkumkc(WmBBLd216tKZkFJO?Z{Ig;ivFQ4Oq z_EA3iotdU14QX->f(qgT-P-JRr(~RmO?`EytiE<&h4*insHB0em`OX#d_b{_s{Gdy zU~L|CfO41AU`@SP>k(vZ&|d#Tgn64MHg}4p#fhb|?6hRQN`PCvXpNm9D@I>81+KQ+ zLOR>=2C+)A{VVofhlWF{KnPc%`PJs4@)#zpl~ZbN?QXQb>vi0>?*d?AcUhWz=QXQv zEi>lpQ%cRHpxlHXr?k%mHg#I9Q|8wjqoWHp8eewhh8D%v`94fEquZthx9o_GrycLH`gh@762%UhIlYjr%6* zw;PXdm`h7J(90AIF={#r(lYA4d)JX$va`(9Hmh{rkk!vQ`TgIJHusE$zeb98*>4`NylPY14mz{#a|yj;Aj5*7^!<&ojbY%rXOie=%4228)x7Ps?QbG0>O_8+op3gcT-=yWs?^c)2`>5WVh3Hhfse04Vb zjpPV_+RuKf2J)^>mJSEsb3~Iges~dkkH^x*8Of(WOlLva%}D%(1pqFI;ly0-Thjv8f^;Ozin}ysMjwSVrwAl zFA|v*v8fVYIsVPs9<#S;G{b5(UHtk51Ax&fHl&g9Bi+AU?E3`Rr30#_q8&d%qj21> z$F`*~4pVSW=PBRp+UqOfJ!R(?$14Y7QQy2IwOBc{?4`%$g#i9VI{=f}?wJc?W^G^j zu90@UJ`xToP*AFef9J_?K49C4gY@AqNDqJc>#;q2)q<>7K(8{8zc-=X{fSS-1eY>_ zmXve&#p-DMHzq785@qZy)C%?S0wsK_BmpiWbC$iJGO8Olq)^%+8Q4U78QAxd$)uwf zA7TI~aZUVhTI_ZsYJ=G#;Dk~z3DRGYmAU&EK>A0n%OemjfNMa=wc1EpIS9bu|2X7lYyev2|2X9TIOIPXm+xr#|C&P@g&ow=(_xJAZH&KSBTcxc{b$|vZB znTI0!hg5toaO0V*@JuqMBseSo0XVZ<(|j zn7=qvwdu5auY=3aFuot!AqoJd8{cs~Uv%=t(mdB-N~-Yl)rVWvh85we{*?Zrj!Bjq zuVAG&XT)W1&UbI*JA}0}tOHUQ2QR|7FP|zjrhW0V1txNPBy$4LF1;k^cbDzkOBPbq z+;<5k$3_EYZ?w;)SZ9QNY@6pVhSJ!9EMcJP9lEfa$kN&GW|45Agk#8KU8 z#;0bctxCN{cr>GIJZ<8UFTJkVVsgzHx^e_?B=+0a6dPuKyy0RrPG$+-=l*sai zVL91x>jxz+CXV*Vix6b{B`#)!%sh1Er;*>Sofi03vv9(WPm8M*&E$ZmPk((3fZnos zLNF9In>y%c@G%TRacJAh- zprsMtoZ4@vbciv$(;}gTH=I+Ht&?(~suuI=&t`7A;at;mz1Bd^S(GYqA1 zF!8OtI*@~%E(REJW?U6zA`Gx?d@B~QNW@UL{hq2N>aK- zx{;I?kY<2Elm?X;xnkf z&gSGm`8CgwFsli^aApq2L<@{(iof>u+{P9W?iHo0wN#S(#;$YZYhE3*A3a(-_o`vG-z zxPZe&--^oUWt_3V1r*oo zvjPBn(h#Pfaf+*L*S&%6N6QGRhb(?KZXqvV03B&>RA>==o_W(x$Z0=iuInTjvTT`2 zvN*~E6e`Tk#=7|*6!^QKw6WUk^tR47%I7s-CGeU!!#XZ&UIpSx%p%SbxOvXuT;eGc z7PW`(VU?UU8@o2wkh{ld5aC%tpp+tdYBB@mKUCrmG17}C?rYSX6ghW)op{A0uFME7 z)lHl|oZcCdE$bKNDK!tlsZm;qF1XXYl<<1CV=u_DI8D&iCJuRYwn6O*=kG z;9uLhk{`P*gLfza|=;$JHuC4 zfClW}CSL)lCwyX4x4imLzUuVl*0)<&qfY_pXlJu5{u-*#G*t3$Zbv3P_FEU73NXFP z2s%{xcG!gZ#kc_Zid*K%`z;6aO=TCj>wj0aQ7kApOklq}rLPDkAD>Y{aZ~Xw2z*~` zwkBX|1q9Pt*d52!`LWAuQXPw)jyy6Gx*2_x#lvv-*Ym%RMqYPXnZWz_Y_)ol$`D9< z#9(}J<)#{qt$k)SE+W|(TDJk{eo;)+zoZi!L`e8h_BM>lTBkqVR+Isu(0;U3w#tmF zEpzjkFe6?uE3gY-_;0Q|vn+{F%mwm@>iUxDJo56u)CBp*I|jQ{vsJPs$@CE5?GW0_ z8edn|#oslzPVP1;^Oj)=4f}Nv9|+XVM}5mO99SJxlzke0%{Xbwgdbt42_JXktyWLm5y#K($d?eTcsK#j+ZG(q4H4A=Tp6>O;T;0{G^)q!%V=da(10p*3U3oW@4 z&;1tK6s^0-CEBoF0rYc(!OH#DzX7V#xoj?$r^Yw)vc&;mVXkXX3;aEa>t+4?o*mQ4 zq7PnACwIJf@axWg(;&HSTpyaP4OGmpEZkD11RfmUy;>PzD4uh|)>8t2tX_bMEyH;6()GU|3Myy|8E z5Wu<_o{0MEvAt0tDf1W#MdbL&1Ah=HN>XneLKrF9`K<_u^7YUfyZw4pYMDTm+>4Bk zA_B1YP)I*ou8I?LIg&`5vy3nROOln%-oL=6@N&HXN42i~mdz`=b2_Q3J;1j+xG@mr zRmTnxj_LEOC#8R423mr4`hzN@0vtne*(bGN!P3mJQYml*gI=yi>6g==w0-44j}ZzM z=7l*k@?ZlX(@O@B;__6Ue0PxmP(!=KDDPiWe+1Juz}VjOy2`=8yH>=6jB$6>up=(V zW}$%i7v0qY5hEwHLZf^y+q{M9wjZ#3E70fxa2ORF?W2kJSFYg7J5{LPYzcdj&@F^N z1w_fX?T2D%fbRBC4LNs*oheS~k4)N?p8z9d4yl9S-V|E0VY`fpe?Xmdv}sdodBUs( zEF#~+|4K4k5ynr#nN<@^95eeTa%X@w$B|oV>S660%46%Pv9{p$Sfiv>(HFGKi}$gZWSjG{Xtx_yiLJ4d)mJ z7hs{4QvM5Ds-Ti%><&2I_O=i;q6S|Fxl(+*Zf)RYHTvIwMy0RLlZ6^db+pHc0B_~@myvvcybi@@ackf= zc~2B$CQ8UbT@%X0QvbrxxK5j!uu5It`+*XdstfE(DNVEHuCXi?(R+AlyuJwknbN-c zQhIXc+re%=vu)3PDJcbK6L0Qn8RKpe?9&$PzQ=v7!(E8?FS6kU)t=Q795rEE#QSu! z1AAq@33_#2Yzll+Tdq@m7tT~8xYyy=^%F!_AC?|sSj4M#zXg7l%aG<=GLX(l?K zEiL`SO8-;3Y^da;8;AL9o_OKcpzj{GmA;f;dY5}%!t_mWZ@j(h!jd4)c@vbJvN=}Rl+ZRm+0M04Xl8M>BFxclhbdQy2 ztCu7TCO@hM&zdigGLEgX($Ps4m(oT7<-5Ccj&m$UjLp9+%@sIJ+MBQ8h^^DQq>aMg zRs7G9Tu#sLK#gDkba^@W#*@%@K&|47T7kpPCLLEeBkYo$fV77I-z+E=*dlh6WT}07 zaa{S*z{=%b{3Xomh;EaQp5E|qsj1wWTX+xOe1-jHxYGG+s5NjXKpr|$vu%4MFtcxQ zR7))IQtxF)DLY@(%_u4wgq04^tn;GG&kXHVC8EQmhJG@wU+S+!l!YWn)6Q0X&iV)} z7@CwHO;~`f03<*`p*ONcM{F07c{GT|uGX^sOW++0AFa zo*$Be=TO~>AsC)P^uwhMsgf9Zl z@YUy5q%_kK@p4D!hXxE*vYj$3p16Cp0Fpg@N$0qS4WhKXs`=v>_Uc^E5Ye}kk z34)phPE@Jt!!Py(_$R872w28av?nmn2-gdnIs`gDSss3t*e!%yI+%MB&Y2*@{E}6keYH5oY-V6kVv~vzNG)J&M@+Hh9+H zi0=BqR0X0y;mqA#TN48AZ#k3PPdzNCbC2-;L36DVI)kjtJYF?m1h0 z3hFFM#B($P21b_>{zswat2hRbB}`H_&^?oLeHkc)n>PS=COj}C0s}=6g%&S%v!qjI zcj?PogEc{&tM###aUyz}fah42Mj7_**VKZ870Edp8#P=VE8sHOh^Y10)pFbtwvw!T z@jf#08dTv0BB+%QRumNV^cz9VLWq3a?TxkULIY-aVReM;srH!YZFxMQ;v|iuSNY26&HH z;s7C=rEvw0U$qL@YMQg}j^ft&oo1f4LgVvJnzt(0T`1S+ql_vN%J=$rX4);y2L>)D zx4THeM2MXcdIMA94L2XmW98U-dUlsg-hK*jO~0JeJx%`YFFewMen8k@K`HG_JKf(zKt@XJ(h(5YCj?`oniOgFGYMbv^tJLfM(&EN#gyBCHo2rj)hy6V3TxMS^^P@ zv4j{6lsLsNlXDzG$+hlvc5%3QV}raI91>P5s8c!}&UsLo0MSg)srJG#wO4 z%Ie%V?^OOc(J6MyUnKpw**%rO$62u=y0w@*XRiv(zGKN!*w0O0SKo+(BayhA3bW&^ zh;y*YJ=4{(FPH9VcJ3dW?uJ!NVjWGRgxrvB<%{3bnRO;o9>4&?hgKeO6M8ew6Z$9eCjF1An1JD&ybO)_SLA-PHQx+Pv~%I9-7!*iq3a2C1`Q)z;c)r%JXc{R7UQCd^@?JQMTf>-{M_^-JK?4z~Cyxw6;JK=o4SzDlmQUiaDumTonMTQ+n(V1v3MkiWtD6Ma^6qiP=-FiQ8d5fn# z6Ns2Vm;2Y%x1BMK28f~s36)?u z*Se#omI#i((psxXQRwBaCdaLAcF-;eov=*cr7OLQ>&A$sgBJTxP4z{2XUQbiGhDBQ zYLVHGz(k{$A2K}q6`;VV^yD7}70+!0Hv6A(1LYZXK`n48Nc}Rn8r!qx=vcjn_}P7z z#iF{AuT6_ZmLLRV5w8QVFh-`FC#4a=G4j()d*vMvxYo=#e=SpW#7WrQXG*{_E}ZKO zm%WOpKZ!;9A=ktNVqvTs4P%*Oq8zftdZUNN3C#isH44}*hl@(;Sv>I01N9n>h8I?m z6~uvJZd2n10TF4-b-QH{bdhvEylx1{Inii-hZNzSx z>RR<$7=m&oZeQ3j_TF<7H8if}gPM7g{pH#|I+uL}K3^GI{M$z$G#r!aPF)xB+J)m1 z@aH1NTx5B>a2U1{VDIIfjGmRho+B@aJx~V1&(470;YDG;*Tnx%S*S^nKnt+k81ceq z_bOcYVTj>;dlF!y>U|ND$v*vz%?iTwZ6DP`f2_@6i1jSW13ARB&hP+HO0K zQ@=F#RvE((U--@NvRsESlLP>}N97I-e{Pid2ckBr1PR^FNhtP7m9qs8jb!q%y)+X~9b6cjk-w>aGhKLQpmiq*PS(Eb|Nv z3^nfYU+*+Z#X8=EuW#%ofZf-3UV2arZNc9zKAo3|mTxyu)wvnwn3f*4*L$hbkb6J3 zYW+jA3phb&vA{88N&9O&3D_2l&=uI^qTA^*R)CZN zphyDM#Qm{9c4zDD9rI?r#A0_u}cI?4=s615jh3ObSZvY;JC!mN$x%nwUv!KU>9pi3D((yw|`?TN@k)EtWSQDOJE#{gI9S`a)Gi zqV4d_%hcGVFHZF9B?b8Q&YjqMVpNqo*V}nkVvi_D;xeV=SMN$o^&%IBfM75=(vwS(Tu)19VylBa1@rVW2PX)yBlN{(I_}p!jv)IexI8vtPc^dxU3JM@jOwEh zjN4i}LQ{e%)#kU-%pBdLn+ZpR_3YKi-Ja7~rEvf3dQuMd*|R*W2~-8OAl&=icB?OA z+C~6bFlj3NOK=eAN(VR{Mak!8j;e|v9*~I!G8Do04Y~gp`yZCFKgr|&TKjWh{2jjkC%1oU#{W-*TwH8a>*g2@L6*y9Q6q-Jf{s(}&k7n* zX3jx1{bY#7Jw?@{9Y{xR+PCtdPp(C1Du6$TQyD{S^JYFhH(?$suuLTioG`3RrA+qlf#Tdf9PU`=p24B%$``Bvfv*dPD~( ze6e0MJdJzkm|rp_hs}KbfAv}M^?bh+EI1y77U}uF`fT8UaH1Wh6 zJ6(j(V*LMAhk$;MGJqLp81C6WldS{G{OwagwhbJsz#(=&{$AS1=X&_ypU4PB z;5fhmIMLKBycP4?AU3c-t25vWzEKLoE#v6FjfuA>w1)4jXDa4R@FkhdmwZT;A0!o!M!6>bJQA7Ke%%=@rpU!KGLv3Wv_ z{V4oek&`o2++hZC^swr!0o&EanW3VTv)1fPwp&~rR|Kj?3cB3f+}6hr9K<1m*<8m~ zdjP7^D=aS`JBj0Sbx>%qC6Jc5mZWarw+S5Pi70q@f9#4BWc11~3wo<2TqZZK3{ERbfm)GZ*)tWzUwydGb zwU%PTe}-%vK_Xp-aV?dq0cgLg*+{VMB!u%$mQ`_0%@6n^wOg^S`Vp^9hR1zsbRf5b48=Wtr=Zc-TniivDaqA zraKzGRoN|%j22*!9DnqKmUS41-Mz)TV#mrkmM0kLJMQ^v3n4Z>`M`C5q^g#d8db!h zHen~`xdsXBR}u4CwC=ebolLjkRl&ayy;dl!PYD9g359aK+ZN=_U;soiP z14+Y7x)i%|r>)wH^Q5R*1vkZVO1Us+;JCo!lgtiun|hRKRUPNWk9GdNH*oRJXmtVu zVyW}0_Jh3Hk@-@ujZc*hV%!vPhFNgp21>IaJm?ugK|x7ek6ir~5TogpJoL}ue{j^%=o#t(O~z~ZDIm3{UQiE=KvHqB-&o073~{_U8`t+Jg(-Yc-z z1I=T8v#8Q%G`cEvJrD%stAa}Om71EGVXB1}l|-3sMW4Hagnpr^C=wldi=~u?*a#zs zd|ZThT>N!%_iKgNl;DcpuxGA^8xA|P3a_6DH_FknE`KE>;k0>vT#s8snVsXu$&c}U zy(xosCNz~So{-<|+oxv`9|^6e_w@!pU_0BAE_|_kJxAlQFwdFSmmijI#_7Jw=G|8u zuN2scmcf$u_B3@qriL^=-Q1gN4M{sJIZd6|VmH4rpP%PppR2U9kcOgft)F&+g`g^I zH6oLq!akYI($I-#KwCagr;yVm066{CD~Wo?FOf z@w(=1>}alX2vpEh{SDTAjBpI2HRI1>-_br*NHz&Z3aWiH6-yU^1>iE_*eo%h`=ab5 zb!^2zk@g{B)o%g0X-T|pq08L>pKhh^^s5oG> z+0$S=lCfQyC`eV`N6~_KKGeYvyHigNavJ&Fzqvvp%wcF9qo7h6Pf?JW2$@g^ex^!)D0w*l3!BeX4+ExF%ly zraAb;#dw$>kr?~i!ZDZ=Tp^}8g~S8g!4bhX=H!}%`@hJOzItr851W7;=i8MR#;tpJ zJB_C}VUQVIu+`XsC~UHrzJzY2h~sDEe@pk(bW0I9Ttz_!*x3OHizSL2CgAsuiEtkDyD)~vLdc#)i$umAXDjZVLH#V1Uaz`9xnwyPj^Cc|Uj z!XH>@#~*w{o2pn+EHF%nL^VzpBB8z}quy>Z5D}@b^(LpXhZC{q{11q?qiS)e+rT)k zax*iO|2miyPyd}aMw%&{Tb=eJHQy8|IF27uL3KML`9){IHG1jy_-U=1z{$)9=w(Nk zjL9TqJMwt?nx-al-lWztAw~-(gO=J8DaT&aN)$CD51w?ueOV44wko(agfuaS_i-$y z?weYy_8d1{w-@iD8*VS>Dkb-#k+-n!%-FM7^#IF)msNEk_7Z}Di1Ce9 z`ry&&UXSXbZYS~4z^loPm&#S_AQ07QPeNfA1XX?v(A zvTT|nVUGf9_lX2G41*KeJoi}LY;;tbm6l^l6$X0{{*V-Nn7iBr#$MW4y#IBp zE4$IUOi|7H?n3uY85wJ<{E#$%`L5hQte%y4z)bxSHJ)i5h96}98 zw{Nz8aErww=8VUqaO)KYcdyS5GPu+BAl)*s#ul;OzaoHVBcjW~xZ8Z#ydJx|8u_Vb zUrUiV{Rq0ki5zr~rO7K!XP6Jd6)@ZmWa^}z()guhws`VY{NW&1C?cv&rCJc*L&0`{iDJ{ zAdSaQ6YX;*$qLtN8M7bw3$X=&k`_he0B9@_5e6< zc?Ko;Z(ao;F_jP38a{xZirjO@qQM{{x9FQq$MfW-J{Eqfr%AQ8(BTmGVLRPO3)59! zGc&+ojLTAajAJ6~y>}XiQ9HJ18ntf;WKuIKdu=t_9 zOlAAK;|TvRDTA3+$NCZFEq7Ks8HesFuDv5;`BWyA2pk>9KMAz6>}cgJyr7ZiE!O7s zWxL&F(?ZK6h+$Ves;Y&OvadWIvEumYFr`GgG|3%ko=Uv3h{x^27W(#sV|K9 z;B$-n230uj{AdlA%3J=a-3AeMw=x=BxYDNhrzl=CRb}^#-`%61o?d5gol#MC$J404 zxk$j5IXu_Fp44g*5-C$yqNC!mk45W*QH9&S`y4;KiFNu4OBX3VaKV|&WN9AA!Wt!J z80xEHzcbjCoJYqQWT##B$;dJ4VU#(UeP05qR^Y&B*?j4}r1CueJoGh#z}B(t`N0w6 z7V7!3?zsa=i%%Yb*5d}1j4e}c!7vxYo#`w{ONkE150YA#<91A<8%G^mDW+6bYS|LI zD_5~-L|NU-p2-B`{GCRj%4Bbb9xmRgb`6-@t~o!fE6E;yUIzGRdVQ!)VtdI4zVj@9 zCtN56Rb8jJ-y`1!R104X8xE5P{NwDnI}EqWjtvf}Kxk~M7~B|A>=WfdJ&d~~hfSqs zhz;tdPZ@GetE9n7sHFG(WGqixcNIJXJF`!V+ZB}^!uB7LSz@o3^4mf@BRfL)4R29t zMqme9>R+^dB5U@;ruv|h{8|&BTBH*0!48&aET0qvwYzEJkjD=q2C*62R`Zw)X|RzQ z;kTbxMSP1WFCB2Qo4FCPGfM>%Kgel_IOGS4!;w8T3R`Dej>KEmDEHhE7BH1Q=W>{n z!hURy6+2LsMRy3PA_Atov^_KeZ!vN`PM+xt(Rq9?a6L~j*1Nq+4_FWewqmR$eKTOv zx_69p72VkjX{D?Dl7=C^Rh2|NoJZpy!&H6eNClz%(QXU3S$gY1bB{_+^}w2sI9$}2 zsH%jT|7i95fkRT=_S@J8KxA*__xJX^-{@(E5+S-HQPjRn!%t z?tCx!;0uNT#utnmvy93^yqd~Jm&k&e&n)s}bXFR#>5ujHX6gZ(?hWVo@ z(Ut5h1#(Qn2w$N>YuzVKwyY9wuA*&>?3WfCMg6lDz`^L!WBEO$AQ}X*5nSq8RVq|o zho`|;cFxYl`cZS)ZxXJnLbV9fB@lc-&}s#7u=h3w0~dgm#X7t0$=R@f=0+FnoMslW6NQwNfP zpL~>==;uoIWjCAJ(aiScmaR$Nj?4}iHB>-V)R=6@??`^s68RBTCEVllTM^!f;o!Mf ziW{NBt>45(!=Kuy@|R)}hU46{O-q|t5eWVs$;3(}&^cd1kiVzKh>UU2ZFVs!CvLrU zAQoTbPj-kNYjBsP#>qnvBN)=gN4uoF(Z@OBG;n~kb>ld2q}naGa)>XCYyK?3{AE!^ z>%pe&?>^HW*_+ul+tS?;q%>~^+na$eYPXOwh=f7Zfzmi|&D+L;wodvv#k4y3)&e39 z5%*gJK^v=}calQ(RR7j^=?tJYPn9)s=zZ{TwHfd z|ERMzjuwf#sf7d_Ae9Hp`n(%tktHQ<%n?rrS#o3{pOp9ejCJ)1oJ|$AEBpCFj105` zXShDl;Od_GF6(o*BqRL~IS(GXtQJi-W1NVe2gh~;aH9F{*WA9;0Yj>_fNFsvxD@T{z@yqSy5$Fhw_uaWwt3tA6zkGCbs)w}+xmN9w%SvB3qL z$$)+uqoh^P8JS@aD)rLT!%Ng5G{0 zFncodKtyoU13$83!{J;obJMdXwo>1x9V5dRsfaJ3PUH<=+`TcHxl9QyJFr^;A3%xV znL`eYkmzXAPF|ipLc*WgyDjTcyF@~&*AsV))-d!>Xf5>FvX$g772`QRmvxY<(V+AD zeNqp1Ly6#GnG?U8jXjD{fU!zWOT*~>^Z*igueJ%ll@PHltRDC+(zHYR`hpR{zQ!ij z)=ScCF6(UzrD-u{k}6QdAFJOl#H}f3H?_}dr)B1gKH;YSLF!q^76E>Zho;FVe_w4=HVd53b4RiwkER9IQZv`hl5s(uQFV;ih1E{tho{{?3dVTlE4x#&-r3_UELYusF z{dvE~Z~rv^9PqA#?}DM!@k4%(m7TWh@0L>2l59v!DsZFuV`+r*2QVZjc^eOjkLTPg ze2}D+OnE?dcL$D_j8Qv?ktP?*)rVb1E>k#EvpbLgn6fE$HUWB~@oMoln60;-Tk#UZ z&2HeP!^Jh%$V&%NmWR&Oa9D5+vUh@4q#*u9 zjK&?L(LrqPUr^Fn;`H7&MmWs2! z#bex#XR8sTnesPp_ZG1Vx#!^HU`cpTl-nHVr>WkLYwaJ8_+ zZhSxhw)G@fxo(X!7e&v&o|2V-X1d=2bQldw6v%33oNSMH%QqF zcZam}Yc6XOt#<>hz~DP{v}|Q}37B5^-a`XFkZHJp+YW;j!}YjzyC$}|c~y#3(-szc z6@=&Y`7Eo+hHExV2k%J4&sarRPM_>6vjos9Sq(Dmyvbcuo6o)%Q{1i883lRqRc-)X9g^!~`JO9uxoGFz{CLTadG7Ilmnk4c5jr+Paf zfe?ol^St6gw4x4bk!)$Xvb#$1sq)yz0*&*nI^|l8+oQFd7&gkm4*H$GR?!cuYs#qO zYs{VewsgL4%Xg#a%+j|MZyl&UPb!d}#EO;q5{hQaP3gFhXB_)+RwW4zMQ(0psGa-ocGH%*yAOmJ69xcir3=q0*3##;mz-yu z0J}WQJJ$9nd%2+k+D9iCal$3Smy@Rk0(lf8+Ob4dF;s)y?|=9#&ryFqBW<6m`a`9EmwQBlXMzBu2eHGDSN4U)LBdT^W-*)nqMo;+ z`QttFx&-m2F>t@pBMBP+cx1;c{fuO{U&1?rl+7oPYFM0b^Eu(iFU0f+n%4!UIorC* z;uNntzHulJf0k{Gk#WXGU1A5AH_1-38*f|;?>&2z?l2o|tFk}xLD7$oGX-`oc-#`1 z6i5QMSjj*?{A_mNM{1!#Ia0=QsL{G8X>2xw*o-S*(M4-4_Hhu+#)=xSiD!d9yC=xvbdK&bdg>CtkqZ3@``&*Cwta~#eUaMzhTt3|kk@|EHWQ(@)lG;#gO?I)r6U!v!8h=nJ z8Rb{+lA7{PoL5+d5&M#xI}`A+Ce{6$>LT65+5}b!rvq|L?Qg{xb4YI#>Z4i6u=!D> z5>3w>LEkVu+Z*=eL>#A)($2)m1x3NRlMvERwv1Qt4I;jRktiK_gX^xY?bZB2g;mPC zR_3c*PmJAIRPb3=EZ)&(}uivtQf^-Q}LsFdO zqea%Gg6V+`*u9Haf~9p}2R`WAc9Q^>N_UAze{-UXDKTmVv{X?GgRH?JW(r)QyoO>H zv~HwtTB3?lhFPTCMHaU%>h+vWMH<-_U89@4KX&A3yU!Ot{KVZor>tdq($;#EtY}l| z_pr!GQP=kvHF5U<>6&(|br>GeBSy`yUdk|zoOT+Vq1uF!<2})F=Snjwc$LOK_<1%q zL#MfZhZ^T>_9S>~|EwJ)`Dx86T{ZPb?9On3sdQ4d!s(N0p=bK%Y>w!`z7&K-{x^wT z{JbnjW*!iWeCGo!7Fr-ilHJBNb=6|21Dm0eFcyihO1HOIKat;MSc_hB>-gK>=!v4m zR+ecuW<{vv(FHmAeWVli4j0U1x7@i%V~wD;Skr=O`bEw#+=M^EKXD_DB>pfO_yvBL zYg=lD-{?4$qcUE0zJ;O_8Al+hZrs}96xlTq@sKpvjYaygkc(y@L$m%kW>5vo=|#>1 zY0PTO+L4aU@+0K(vE$}iJ-_pOd3}`CVdN9plc-FYQ{Qjg1`cK8Vw08|Szj%8D#wn+ zc!w=kS8mJ{62JV!y_6QR!r4N98abv_LheGp47s#_QMHES=v@EdPB25KgglMDVn&A$ zKI0%~CF8v;ZCZK5OVjjknp3b1o(oh2_bP1%-kYt8Fb-ZF7!_w<#IN_QRi2}fmMn7H zEf4y>n6o}-YNq=jSe=!3JgNE}*{-G4z2JfButntbcLEKwn8AI5=UGi|#?%Qeb}u*> zL*pWbES7|R{5Tr?(UzHq(=iyCCL0jQ$mgZc=Mt(EJ_ahu4 zhWt7^u;0G~tBxlkF*gu8>=E5c!TPV|C8|ezT5ElCY{VG#E9w15q+$+nJ{_m`MAUwk z-BSHQe4cw)(tnt7pOSR%&H<@AK@ojI-q=8RiM!bw$_T<#mmVOL6MdcKqz)2UCminMmw1C6qc?Db1`MUtY}Yf2cBq8J1it_S%tCJA(F7)P)o)TADN z*OY#(=s{axW@MbUCCMIcXIkj5?Ow(COvy5rTc(aL&1&?Z;YQ>9Nq;IZb^$%FFu~n#N zY3&?<~eEP<(Hx^ zSUk63%6-jSD5{H57{pQgSJvx7bY$d)~mXRe*I1K;R-IY zNIj|#d5k+T6xK};KaADyTg}SF-t{9m2SdruhJ{S+L$Ay1XD->x6s-Z0no*VzHX4zi zSLQpxs-KA+l|quss;mjN?P4{)#TIM0e*t}w-#^b8OJ)#vGz@gD5LNB9PR{uo_P>Dl zA2PiBsyDh$dC@{0%xzqs9>G|Cy049J3o|gC=OESBhM1nM+C0#SDulCk${tGKsj?ea z$u-X1H4rgoaE;5pGpuk|jywCVv_AZGwlR(PC-r4rT2b|}`7(2BWKk5#(}N@OyBVuI zRs$v-_+_Z0tF~hqHD48bLkv=`u&O zi3Fe$LJ?72g8@!)k8Pfi^o!v&SjIlg-e)ZJtvxkt3dfFlbxjy=Cv~&Gyo+J;Ucj-* z^9oy$B<}9?V9>W+hw31iY~z{%ao-9{9kDO|Au!%5TifU~w$8^uV!!V{hpo|U~<_^GPguH&R@ z0%eAUa`Tfd&BmjUU1iJ68%dZuFFvTXF?F9)v?%o&rf+g~XAQnBMGrf#y+C=#fwhe6 zGQwx-;#hh%VnfNMP)C2egoTyCFOE^2(SwDF;6TeJfyj z4IAkN!yZj%34V;t#LrALa&#!&KzXLac2*~S>+y~K8wc1_VzKnXL?>SSZD{A6zOWav zh_@>CJxLcpg#J;C=Y{kui?@ug|F*3D2Q0INXA{m>6a4L#yB`v}Z42cqxE}pruqt1S z7&4u`UAh2c824856YT15P=*tc5dn6NZHo!b>=0f}GK7|>cvAee$OCb$U>woL$Zmd8 z(j8^A3e$6&kR9}FMO{4K*e2zN_{q+4lYs|pirlxmI!ANOP~c*%{EtPOLhOSpArkiDn_T1i=PGok4%4hzb;qERUvy$>E9@&)01^NzMH8~V;V2rfp=;~$VNQ5 zwG6JhvAEICxTeTA2&XrJ#5{U}rLdj*(jvC3dDQn#(lLI-~C#>OB=$lFv_ahDsIm0F1BKJymhN#K3o;)`OTMO+HmIL7nhpARm z!W5zqY{jj`_tK`r~Vhf&S4CSp`GHPuBAVpt-Y-S=)yr_L5XbGHDo z=Guc=%7Ps5+}$%aYX);Vf-*FEj_XWu)uU(gE588wPm|M!@ChR4RaA0i;R| zd|dOR

EXs!w=TYac-ForYO^a#=xh#xOA0cnF%LV=W39l)%!6IVE|;@X zBD<=89S$&3W>FBZ}JFEF4Sr)3SZB}=*UF}kArssV{W;eYv{jGwFAR-zc#FJMGPs`n*FK}+<>fs}t=A>Q6z3@i3Az2&C{N92GgMWfYv0CA?$Jmcxb)35RWvOt0A&M_;90r=@ z%gql^;BE}WG6aSA{Oxn`J8Gxn7v1N%M@w%uZGHr#8u76XDE6(k-FUb$HgF=F zf;VUbTum_ts8)go;ehW1KVUUEa9*FP1a`@mRSJDOsEn_BwiR}}hazUlgXznCYuUtm zzjb(k^^XpR)GetfY#05J4i>}(#_TB6#}B+q1N(SifX?4sO5x?<&IPsq(Yc&Byi#`J zpnJX1viuBR)Mi%qU_j?AAbGZo)}eGx15Of4{aB#SQ zn2F>Q`1!~|wTI)g56wkzi0DHMcw;Z`6e)YZG~XJ6JMh4=!oN~h(?nf0#wpgs8Lg?X z=?)&}UP=Ntn#U}L{d zvzYhB62FB~^#o_5Oyb9IqDDqWe83O<8asmO8s071Y>b&COy&8gcV)=M(Gt0C6xwJ# zjgXv|Yu*z>Au|MS;`8o99pYKPjV00A-OvH)5Pw}K<`&S zv?t+2?p&un_IWR49~Zm0~UW&_@^6KX9lFys-n-)3$(Qkcs4sVte zdF$Tk(h~8?+0-~r+$J`v!&2wg>(C7O`iskaQQZ#`PYGx*z3_fyL>gPtz`W^DrIfp_ z)A#pY#J6fCoATnZFAM;aQo>WcVKwJ_%X4gF-#HGZqe6CbHrOk{*DiAF=sf~2 zKFm@)y^!4s&gYXA6D0jAvN#yiAI`+LW$>r@2OT2QOL9Iy4l=Mp-%}JE1uP0rNYBs& z3$fxmg}*m8wiLJ!;SNR2JiK`_BhV*T9296=9YRfH5??e3B%+M{wwFV2o5yQ^lm$Uz zej9n6r{IGqOt$oL878)PjMAty3GIOgB`6G9xqPFRR#u0PMRnC*>*Su>o8yFDJEApa zC*vSH?tZ?%_#Ugv~c zH&7Xemw^9r|0gNi=XBFfhv?y#V*`N`HNPwPOr?Y4Mdg7rsOmHkHU!WV9=ClBn4DBv zNiIdJ!4>E9@T&IHJKMs;>-MWhwEL}8l$vEK@+Oj;Mn4RH)}*qIXj zT|U3X2-q=wnKDdUJQVQ~IHBs;f+CkU_R(dFTJSsm&{}j(_~|dI-2=tJgt|#E0RR z(_0tX3a3ZXY{7nuoE=6rndpruMW1Hq_5#h7?UfPI272wAN9US$G06gM+qsKv?@N7U zJF_8R4=4YC{_lBs%g4TKk;)&c>}$9~to8lfhB#Wh*GR0*XvKMqiYHyhFJj5=ADFDQ z{x%)VbRZ3{D5TmgyRa>~-4{{2%RLD*_Z=_J&ziLzrNe8qj=!rz|Axx#0N9{Bwk!j%VnzCiF?uga^s9ynFivWoj8qij{1@#7OdTwgc})R zI%;3{IZht&(hM{ORRBFJXxSF$P!a9RtEkRk4ITOv$BYabsVA{4aMrzj5DA7^z~@luUQTy>XbaeH>dCyIIRXw z>Q;=Oy)&{Ai zDYgLerg??6Qgi%aXv?R(OspOSlmZj z#f*f?_ouzk^Y+qf@4e{Cs;pTPAS7YXko!{5kzgX2BU{zQx`V{9uKq*Jz*LeLmyceL?ks$-A9N zfcMmL?tIL>df~ff^D*I&t^J}K20BaXbL&p&yQe@KhruT(mhi=tdl?sv-K8Yd%WJ`G z-K#0o?5(U#%0oWKi5Dxau@JR*?Dc&OrWgYHsEyouL-?{E*9tuHIv?)3?rd zR%6uYKF(jd%An34iGqBFT0@ApAQ>!F*FFpQQw(OJAp6kg>I)58Kgg8ONqR4q$KLFj@h-3{KAbPu^x5Dox1DS@WRTIIB5|QictV@k;nFz00CNaJ zK9(y<5gVvLL=Lf`IfI zdJUo!ktWi62~`LPh=7zxQ96k9t{@#k4;@q>D1;8ugb0ydLl1=TF80}HKWFdrzR&lK zksoUe#>kpv&Ux4Cy01&NALXOv;m+_kqebfD4Evy4C2$=dZAvPyxxC_vUlb?FN1jzw z-l%S`C;QM{Af@y;k%>4AMtHf$S)0{pmfxgR>ZU98|0Q%>_RJZj&@XSY&^@`DUci4? zQ9xiUyhSH$AWq{6o{DZoz#t7sudFX}gc!B0_RMiF8jQ_)=ZUZR%xJ!I{L4;{A+D1W zK5t9ISs9v076obcthG#c>glY-1p=RnODVj(HZxAs>c_t<)SBTxEYwfHLTzr}X$8EB z2>Jbn#1HB%lssu4867H-a?q(a=*(|r)tT+5jF;S>uIQWYs3^+ybxW_7Qa&ER=P|R# z{-{$Wkehx_5mmD97q1HKJ3EFY)@1eKYlLl7$l(xGjo%L)-5`6aTDAtpF>y^YN#lP& zDVNjlQwwaHbN%RQ@_m#|C2YeS`o1J=9AxQgnQM~uPB<3Ee6XZs-vwwMa5M9^mI{Da zq&;lIj8c!66a&mNod^Yx)qHa=8)6soo8PBxQPrr3>?$+eGhyf2?^g-i58E80N4Pm3 zugCb#2jZ_t=c-M+GY9-Wm?M=8^m6gEQ&n^B%>cuzB_OY>^P=UC^H&(M?iCcQCHbVi zxl{g(zY}zyuxA8r;6k>QQH|?yy7G{v?9DRl4$|toBmEQBwNIGMX*1xY2=k1iA2G74 zp&%hxXIpfY#+uuWaWb!Qvdw6mXPLIp1;^4SR5={UaK^k+?JwDFEes$o}| z+-&-1Inujqe)Jo@2d~%uyud*?0KX8Z-)s*=q%#lh*CdZw^!eCDK$IK=!uk-d1@Io{ z(zNz;>(VqN$vYikm6m&PtNOSGH>@ZzrF^+;H}1 z`=zQS+bV50NrDH|)u2^%b^87Q2(_1{31eg{xR=PvDdL>^(z^4Kwtb#8Noo3>q65Cu2(Ikqg*g_yN{4D$ z3fMlGbE8nJFI(^Ad#`k$zRKxuuDD|sc(_AkPW4gGz5?X3j;YFYc*Mjg*Itm#1HG?? zwn3Jp_ePB+Lj)tAdTl(Fi$dIXI}*m2jTifjK*}W+D92oYx-vqx{U08LMR(X?I(`--G1u`bi z5FpSK*kcHJi|s~Vl!_1ntz~C4OV*w;c1);m6?@73iW)M+bE})J!luaA3>a-@C$98} z7>F_JNe0kWIKeMYeW%Hhsc7S@uz63m8ZmyIiN5qVr0lt1tOAnSca#Qat)AvMYAOka z%r>1`0{U&OQUt=*S(_Ewo~VZHS6W{U+s3OulT9ncdF?&9-dQxrT6OFw_Pi& z+>k4h8NznVn&tk{eE{@R>_AE@rlphG(&H|fQ}h~lunugMFMA;7qIpW^ZHzYNS85AG zGfGeEjWSY&>C%qk>J_1S8qn z-sR3qgH11xJJg^0;LN^HQNc&o_Ql2Zs#Sle~JE;4aA>LJZQwGd#v-xWdqQjn&8hYU|jzoeA3mPRQl7G3pm)cQyD!+d z>9-5pm(J^Ffn4D!d+8Av&PB~`PJ)d^xx|N8=?Ie4>L%wzt}xP#t#`Pa3}g_~{PQZ+1<-VKxpoSJmWmp5$zh1EV!P3qmRaZIlaV!J&wSQ(B*EWx{U@zq4Fp_32@SFk3yh)|F6Bb z@;Wa-WwpIf*RWzGt#om(ElM2LSP(4)|FyWX-zM=v%+GBy^60ngh-xAq(I zkJ~E<3TVm4tD0o*qEJ7!zQXAHgXnIh=ncj-PVL0lA!p)({dHma(d;Q^r(2o5`3ECK zd{c$$Rg-`8zn~=eo(lZq3>Wr=;#W_yJSkb`3zx7|EGFGo=bdKvq;7vtx6g^?CDN0> z$8}5T%{QyWhLM+gcQ840=|}oWEaLLlct;thQ;r`z3AeH2y@do0c{d?$VInS<3|A5g z+o7Z)3JY{@Zr*Rn&x22J!!tj{#p|6=Tuph~3) zDup+dP>o~1c=$h``7L+tePfH<=h$3zL2W^S0HawwG7!5=ZFy;Nj2w3g`Mao!HL=xs z)#kc#N{#Mf*+{BddFCa&GPrRvo0sbHwfrvV9@WTXTtEx#jIg&Ci)m`g-M*nPMLR;S z{V1i&^RaV{UGW@UeNU&Dea+(0Q-_3QZkYZwr`C1>^Hfw*srf%9r9M0Rgw`! z)EM^7CNSq-!N~<*a)j4LXH}^?tHRN|s^v;1^373vy{6gkgf2fGC(VGju;UoI0&C4v zUGEq~#MMA|oM%$RhP8rVLWP`5nz2G;mva=BGR`y5h6%g%kjXDG%Eq;yEVJpDkqUxz zkn112GyNG1(HOtx?wl;T(A2UYf@ASfceAicyDl44igXCB~UPU z+6d*|4KBBz+R?O3HgXjS{mq%DMcNqNp`Uy$q0!%o8Slj^rpoDbr%@_>nB3b9XL%g# zLH#PDM-$U>OpS(i;%iUMLD?$P>z-iZqhwn2upKEBAwjhq`FSD5(qfyf<6MXqZsvO8 zM9GN|)pF+o8x=AzBPHp{I+|Y<&FC4@F8Nl*eduyacQ54k%zZ+;K|iKS{d;Q9EejU< zo;&$-B80wMWLWjKmL84!Qenb^fXf7ql!Xn_cF|#BLIDuX@w9zq9wZ~ zVRwFz5_L$YY=tB4NPB!T@R?JT&%Ho)##N_gtYYmjY*fw4szI8C4UUZ9!ddx^m^_jqgd$_)qz)-Me$n?^DVAlr^Du*F;5v6PSuD;y=3SWa zvh)`d0_SN4yMp^kY5Q?$7og_8)%oeoBy9ySroh$O#^de=X{M|<{Jd+#cm1wNMR~b? z_8}?NL^(0MDVN*z*hQy>Fzd?k>m`75;gs7k@1-(Mv0wTHt_pkt{D|hEd?`c{mOES>MvlJwQr?z8r#!6P8x$CIogtRrb6*IblB<;* z@B27AJK+!uD&J`xj$)n)E-K#}Ed%#eCm!*$zD8)UF?|)JN2(0Lhh1iclJ&|kZiaJ-I}b@`Barx8MJ0oW|+OI<18t0UE|Y->2$*e zbe}{0kK%ArS2NUZ!#tDJ75giBG=i zD|t%o$^Kl$dOMx{aUg)@(Fb^6y#b^0ptBSOt4}PYU@( z&Z{n@DBO}aq;}JslV7+rPSdpnU#?$UVo4e>L+6+?nkN92idA6rMayx(I!*d#GZH+K zHfkfklJq{2gSoJdt@0;V%5-DO<`vWaA%~f#)6nG9HVJ>X2583WRH>)C8kVl2zkUWu z|NF=mht*q$u9ZglZx^7)IH7C)g{Myr?<~qFfE~^&xVxO>EVH|JeP@#+Wl>L*AC-wP zyL4X#((T18t!R_jL?g$MBDRhq=m$64%ACT9biB1*d%~jX#Hi88OUj&QDWMM#wNyiT zZ!c)Hx!;6Izbv6@kDmD%{l$GPdSU8$Rc0ZrraCim_`MjV|lX(het@+Tj_Ko zV)a+Ud`8-3oqS_HiUo{9HUo}jUw@W&W%Sq|z7lxs_x<#B(;nq5J25_K!)&qnIWCsk z4Elk{H0)!v!RbciVcOoSqLPsnPGM&vnluMZfBZ2sZYEc%rNZ1-X@Iu(EXEf#91gsopU3IwPrzu)Mk(<|mLtD}( zY94-@7Q;v&iu(@Vj>we6<_QTfS|p{s=rgnD!)ClhA_C8p>b^1Uj*X3UNfWyn|1PY3 z(R=+`^*3dw*+1GO)#Tx1GkH(MD~>1x=P#{t6Mow~lgZ%|jjK(B&bYJ)b`^4e;J;Q% zN5!VC>qnuwS4!zWUp+yod{1f^Z60C1OD8)@Km9%`2zz@{=^|h9!c+;PUrqW<#4k?v z1G>Cn3}RzKSuXhtdtj+_HoLYQ5*E#xozPwYwbhzk7BWOYGd%3PAto(ugY}w+F}x~y zgqXQEN$zWpA>q(R6_a9HpSo)koaJX3Gmy3>Tv#xm(ERX$f6G88eg)m|Q=J6VeyC~1 zOw2Db5OVCYs#yNqOP1aN5{o`i?3e0epkJEpItGy~f z$D?{b6(b(RargB*`u2-I#ny~8AMc8jCX7<7#j`-i33Ug@)1znGlRMB|SW3Z-*a(hm zwX}rZUq3(jnF^8l6-7bZcsf-+N}KolP3RJeBAnYseTv-;WO|EPjts{F9ZlBN7LPmv@A8Ke7EP0u9J2 z1Q>Er=HJjoMp{O{$aGC>mAW1^PrILw?WS8EXhL+i{2UlnK|XfTmbqeMVWBnX^Tje< z@`p~Hc54-rsKVN2p%)Zh0+B52cFt^r&Uede99HjT%T%<3qRC>kk40hu>oTme`CT=Z ziQeR6(7_0J*f*kJ^SFr8zp{`c54*YSVV90J|jF_o3gZzPSHPcc~{r+U+2vkFe;h zj2&h4Y7FQ<&uwTDfcUCwomSP3NL}-8cqotc!X|BAR(`B`3A9cPjen#d1_*L?-oXTGK$8&JYIg zCX^5FR3WZ3b_ATiIU&SrI4-e(1<+|gQ#;~*rtzbnUSwqsV}eSrkE}AnHsr{;BtjVj z!=+Zd9UN|>rS?B%*44VKMj@W5xV{o(Rt1OO(m#Fsf!3kC=C_j;{{8cyqt`<7>g~IX zYdN+o7ul|T98IE%38w-n8*tHeum`e8A4kpS_zPfYba=Q3g^;%gD)C$g3L2%zYh}7s zjwYGQ6%#_8)F&GI!xr#e9sbCPXJj|nsPGga!*plWdN=f5Wk53pVzq6wD

-b9fM( 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%0DBv_5_4C@8-fXLk!`dVTDG z9vMSh79p;PtJyW$Zn$+x%^38;yjR+i#?X(*B?QZGnb#;!Ak$)91?eLwl8H=gxx}TZ zZmB%RN`5sp@FMG&u1gH^@z@{ca-D33PCCbPFEMGAjq}lri0{SNu*CIr4-6znc$CsF)+HH3KxGxNBbeV#_Nax60_jbYB@ zUJpr$BLFGy@}g`Rhu?#$kIJ>G4~Y^cVQJgWp^Do4Wm@Vk=<8+BYqI_|H^3z295ML4 z4b%*z(nZk&FdT~3B!XM%%NI!m6+;miWo9y_Jl?h+HYOtbE+?|ano9(3lwL@;5IV_sVL>y?c=e$KQ1Tl?7y0MW@@18((M5Adx_ z$NqSXiB6zSAi5))^W(-?cU?*zhshgbPwj74ZN9#dn^+6M4FT=jpZ?D@?Vm4HyLJ@O zZL*3J!OfVdIrXQhn?GO?(47Zp>RhVPMRE7rNNvdUHwy#WHT^iYNmtQ#mXul(r&ErO zoo~(5&vI$NSlgYKhJ9IZ!N-lIUnXrSII&(_n$YRyaB9@g-TeG;-%xqPB_p=|+x;ub zMJ^9GKI{JcYVCtE4GbfjZ8GFyh^Bz1Z`L=>2^5vejrip4j2`ruM}?+H!W%*O(htA5UYYRB0dbz zqQZNEB%>^4-DONw=Pg=Z{+o>YmRy+GuDt-&akY9Rso}3BtX+(mpW{IB8mTy883%H4 zU4Xri_vDNo?-!<1WTBwM>a+;)yLAkHV5uhm8lhyaJAPx2!ptQ=mV#Nb8;xQB&l{JI zB8cql6U-B1BQob|nKCWGgxZtAyXrTLkDZ|#v}WRu-ZDDId&-n`i*X#_=I6h{zAHB5 zbDQm@{-yC)Id9fc7hyF2c|{nd&)Kwrl-BGHfXB&xE(T!UsRTsboRi_lxwW)uDDm=f z`N+!TU2hz`*bv-x+q?#7aA)%!UZRm3Zbgj91zMF=ynL-s2e9uisNM5GnR!Cs4n()S z4x13!Ugf9H=TgE=jGq8XH&#h4LoA9B6I7t)G%eXKol9`-5Z? z=J8LMf>HFA-UmTPV|==_Qe8B7li|*0ueD7=M#1^}Ro&!%-3nl5^HaczkI^QUttafY zEzcMp)x*KJm};>!foteb@QtmKSjO6hzsl;3-S_L%*jQmx1TK3TcR6@@lQ->2Qcmsf zsW)aXb@bhWau-2GrAOu{pTCCnBN{&t6Cz}POser`guU_!`{9f0d36nt=B+FOZr;>x zsA|mB1AcOu>EE9ENnUeghSpice.ai Docs

Spice.ai

Spice.ai makes it easy for developers to build apps that learn and adapt by streamlining the use of machine learning (ML) in software. Combined with time-series data, developers can create applications that continuously improve using ML recommendations.

Spice.ai takes a developer-first approach, and is focused on a fast, iterative, inner development loop, enabling developers to get started with ML in minutes instead of months.

📢 Read the Spice.ai announcement blog post at blog.spiceai.org.

📺 View a getting started walkthrough of Spice.ai in action here.

Features

The Spice.ai runtime is written in Golang and Python and runs as a container or microservice. It’s deployable to any public cloud, on-premises, and edge. It is configured with a simple manifest and accessed by HTTP APIs.

Spice.ai includes:

  • A lightweight, portable ML runtime accessible by simple HTTP APIs, allowing developers to use their preferred languages and frameworks
  • A dashboard to visualize data and learning
  • A developer-friendly CLI
  • Simple, git-committable, configuration and code

Community-Driven Data Components

Spice.ai also includes a library of community-driven data components for streaming and processing time series data, enabling developers to quickly and easily combine data with learning to create intelligent models.

Spicepod registry

Modern developers build with the community by leveraging registries such as npm, NuGet, and pip. The Spice.ai platform includes spicerack.org, the registry for ML building blocks.

As the community shares their ML building blocks (aka Spicepods, or pods for short), developers can quickly add them to their Spice.ai applications enabling them to stream data and build learning into their applications quickly and easily. Initially, Spicepods contain simple definitions of how the app should learn, and eventually will enable the sharing and use of fully-trained models.

Why Spice.ai?

Spice.ai is for developers who want to build intelligent applications but don’t have the time or resources to learn, build and integrate the required ML to do so.

Imagine you have timestamped measurements of the room temperature and access to air-conditioning controls. If you had a time-series ML engine, your application could optimize when the A/C activates. You could reduce energy usage by not overcooling the room as the temperature drops.

Now imagine learning Python or R, neural networks, deep-learning algorithms and building a system that streams and processes time-series data to do that. With Spice.ai — which includes a time-series ML engine accessible over HTTP APIs, a library of community-driven components for data streaming and processing, and an ecosystem of pre-created ML configurations — you can build upon the experience of the community instead of doing it all yourself. You can focus on business logic and building your application instead of the ML.

Pre-release software

⚠️ The vision to make it easy to build intelligent applications that learn is a vast undertaking. We haven’t figured it all out or solved all the problems yet, so we’re inviting you on this journey and are looking for feedback the direction.

Spice.ai and spicerack.org are both pre-release, early, alpha software. Until v1.0, Spice.ai may have gaps, including limited deep learning algorithms, training-at-scale, and simulated environments. Also, Spicepods aren’t searchable or listed on spicerack.org yet.

Our intention with this preview is to work with developers early to define and create the developer experience together. 🚀 See the Roadmap to v1.0-stable for upcoming features.

Join us!

We greatly appreciate and value your support! You can help Spice.ai in a number of ways:

We’re also starting a community call series soon!

Thank you for sharing this journey with us. 🙏

Sections

Concepts

Learn about Spice.ai concepts and terminology.

Getting started

How to get up and running with Spice.ai in your environment in minutes.

Quickstarts

Quickstart tutorials to get started with Spice.ai quickly. 🚀

Samples

Learn about Spice.ai with in-depth samples.


API

Documentation on the Spice.ai API.

CLI

Documentation on the Spice.ai CLI.

Reference

Reference documentation on the Pod specification.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Spice.ai Docs

Spice

Spice makes it easy for developers to build apps that learn and adapt by streamlining the use of machine learning (ML) in software. Combined with time-series data, developers can create applications that continuously improve using ML recommendations.

Spice takes a developer-first approach, and is focused on a fast, iterative, inner development loop, enabling developers to get started with ML in minutes instead of months.

📢 Read the Spice announcement blog post at blog.spiceai.org.

📺 View a getting started walkthrough of Spice in action here.

Features

The Spice runtime is written in Golang and Python and runs as a container or microservice. It’s deployable to any public cloud, on-premises, and edge. It is configured with a simple manifest and accessed by HTTP APIs.

Spice includes:

  • A lightweight, portable ML runtime accessible by simple HTTP APIs, allowing developers to use their preferred languages and frameworks
  • A dashboard to visualize data and learning
  • A developer-friendly CLI
  • Simple, git-committable, configuration and code

Community-Driven Data Components

Spice also includes a library of community-driven data components for streaming and processing time series data, enabling developers to quickly and easily combine data with learning to create intelligent models.

Spicepod registry

Modern developers build with the community by leveraging registries such as npm, NuGet, and pip. The Spice platform includes spicerack.org, the registry for ML building blocks.

As the community shares their ML building blocks (aka Spicepods, or pods for short), developers can quickly add them to their Spice.ai applications enabling them to stream data and build learning into their applications quickly and easily. Initially, Spicepods contain simple definitions of how the app should learn, and eventually will enable the sharing and use of fully-trained models.

Why Spice.ai?

Spice.ai is for developers who want to build intelligent applications but don’t have the time or resources to learn, build and integrate the required ML to do so.

Imagine you have timestamped measurements of the room temperature and access to air-conditioning controls. If you had a time-series ML engine, your application could optimize when the A/C activates. You could reduce energy usage by not overcooling the room as the temperature drops.

Now imagine learning Python or R, neural networks, deep-learning algorithms and building a system that streams and processes time-series data to do that. With Spice.ai — which includes a time-series ML engine accessible over HTTP APIs, a library of community-driven components for data streaming and processing, and an ecosystem of pre-created ML configurations — you can build upon the experience of the community instead of doing it all yourself. You can focus on business logic and building your application instead of the ML.

Pre-release software

⚠️ The vision to make it easy to build intelligent applications that learn is a vast undertaking. We haven’t figured it all out or solved all the problems yet, so we’re inviting you on this journey and are looking for feedback the direction.

Spice.ai and spicerack.org are both pre-release, early, alpha software. Until v1.0, Spice.ai may have gaps, including limited deep learning algorithms, training-at-scale, and simulated environments. Also, Spicepods aren’t searchable or listed on spicerack.org yet.

Our intention with this preview is to work with developers early to define and create the developer experience together. 🚀 See the Roadmap to v1.0-stable for upcoming features.

Join us!

We greatly appreciate and value your support! You can help Spice.ai in a number of ways:

We’re also starting a community call series soon!

Thank you for sharing this journey with us. 🙏

Sections

Concepts

Learn about Spice.ai concepts and terminology.

Getting started

How to get up and running with Spice.ai in your environment in minutes.


CLI

Documentation on the Spice.ai CLI.

Reference

Reference documentation on the Pod specification.

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/install/index.html b/install/index.html index a5578822..04987915 100644 --- a/install/index.html +++ b/install/index.html @@ -3,4 +3,4 @@ -">
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +">
© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/quickstarts/index.html b/quickstarts/index.html deleted file mode 100644 index 8c0e9694..00000000 --- a/quickstarts/index.html +++ /dev/null @@ -1 +0,0 @@ -Quickstarts | Spice.ai Docs

Quickstarts

Quickstart tutorials to get started with Spice.ai quickly 🚀

Spice.ai Quickstart Tutorials

These simple tutorials use static data to help you get started with Spice.ai quickly. For examples of Spicepods that use streaming data, see Samples.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/duration/index.html b/reference/duration/index.html deleted file mode 100644 index febc3308..00000000 --- a/reference/duration/index.html +++ /dev/null @@ -1,12 +0,0 @@ -Duration literals | Spice.ai Docs

Duration literals

A duration literal is a representation of a length of time. It has an integer part and a duration unit part. Multiple durations may be specified together and the resulting duration is the sum of each smaller part. When several durations are specified together, larger units must appear before smaller ones, and there can be no repeated units.

duration_lit = { int_lit duration_unit } .
-duration_unit = "h" | "m" | "s" | "ms" | "us" | "µs" | "ns" .
-
UnitsMeaning
hhour (60 minutes)
mminute (60 seconds)
ssecond
msmilliseconds (1 thousandth of a second)
us or µsmicroseconds (1 millionth of a second)
nsnanoseconds (1 billionth of a second)

Durations represent a length of time. -Lengths of time are dependent on specific instants in time they occur and as such, -durations do not represent a fixed amount of time. -Hours (h) is the largest duration unit as it is the larged unit not affected by daylight savings adjustments. Larger units such as days, months, or years in the future.

Examples of duration literals
1s
-1h15m  // 1 hour and 15 minutes
-72h // 72h hrs = 3 days
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/index.html b/reference/index.html index d8188cd8..512d5ba7 100644 --- a/reference/index.html +++ b/reference/index.html @@ -1 +1 @@ -Spice.ai Reference Docs | Spice.ai Docs
\ No newline at end of file +Spice.ai Reference Docs | Spice.ai Docs

Spice.ai Reference Docs

Reference documentation on the Spice.ai API, CLI and Pod manifest syntax.

Manifest syntax for Spicepods

Detailed documentation on the Spicepod manifest syntax (spicepod.yaml)

Timestamps

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/pod/index.html b/reference/pod/index.html deleted file mode 100644 index c4166843..00000000 --- a/reference/pod/index.html +++ /dev/null @@ -1,287 +0,0 @@ -Manifest syntax for Spice.ai Pods | Spice.ai Docs

Manifest syntax for Spice.ai Pods

Detailed documentation on the Spice.ai Pod manifest syntax

About YAML syntax for pod manifests

Pod manifests use YAML syntax, and must end in a .yaml file extension. If you’re new to YAML and want to learn more, see “Learn YAML in Y minutes.”

You must store pod manifest files in the spicepods directory of your application code. It is not required for the spicepods directory to be located at the root of your code repository.

name

The name of your pod. Spice.ai uses the name of your pod when rendering the dashboard and as the key for the API requests. If you omit name, Spice.ai sets it to the name of the YAML file excluding the .yaml extension.

params

An optional map of parameters that you can specify to tune how Spice.ai interacts with your pod. The following parameters are available:

ParameterDefault
epoch_timeNow - period
period72 hours (72h)
interval1 minute (1m)
granularity10 seconds (10s)
episodes10

Example

params:
-  epoch_time: 1605312000
-  period: 72h
-  interval: 1m
-  granularity: 10s
-  episodes: 10
-

params.epoch_time

An epoch defines the beginning, or start, of the data stream. If Spice.ai receives data from before the epoch time, it is not used during training.

If epoch is omitted, it defaults to now - period.

epoch_time is an integer timestamp.

Example

params:
-  epoch_time: 1605312000
-

params.period

A period is the total span of time that is considered for a pod. The end of the data stream that Spice.ai will look at is the epoch + period.

If period is omitted, it defaults to 72 hours (72h).

period is a duration literal.

Example

params:
-  period: 72h
-

params.interval

The interval is the time span that Spice.ai uses as a single input to the neural networks that power Spice.ai. Attempting to get a recommendation without Spice.ai having at least one intervals worth of data will result in an error.

If interval is omitted, it defaults to 1 minute (1m).

interval is a duration literal.

Example

params:
-  interval: 1m
-

params.granularity

The granularity is the smallest unit of time that specifies how many timesteps there are in an interval. The granularity cannot be larger than the interval. When streaming data in a continuous manner, the Spice.ai runtime can give a new recommendation for action after each new granularity’s worth of data is collected.

If granularity is omitted, it defaults to 10 seconds (10s).

granularity is a duration literal. The smallest granularity Spice.ai supports is 1 second (1s).

Example

params:
-  granularity: 10s
-

params.episodes

An episode is a sequence of simulated actions the Spice.ai pod will take over the dataset during training. After an episode has completed in a training run, the neural networks powering Spice.ai will update giving it a chance to learn from its experience. The more episodes specified, the more chances the Spice.ai pod will be able to learn how to maximize its rewards, at the expense of a longer training run. More episodes is not always better, as there is a risk the Spice.ai pod will “overfit” to the data available in the training run.

If episodes is omitted, it defaults to 10.

episodes is a positive integer.

Example

params:
-  episodes: 10
-

time

Pod time, time-series and time-data related configuration is defined in the time section.

time.categories

A list of time categories, such as month or weekday enabling the automatic creation of fields from the observation time. For example, by specifiying month the Spice.ai engine automatically creates a field in the data called time_month_<month> with a value calculated from the month of which that timestamp relates. This enables learning from cyclical patterns, such as monthly or daily cycles.

Example

time:
-  categories:
-    - month
-    - dayofweek
-

Supported category values are:

month -dayofmonth -dayofweek -hour

dataspaces

A pod must contain at least one dataspace.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-    measurements:
-      - name: close
-    data:
-      connector:
-        name: file
-        params:
-          path: data/btcusd.csv
-      processor:
-        name: csv
-  - from: local
-    name: portfolio
-    measurements:
-      - name: usd_balance
-        initializer: 0
-      - name: btc_balance
-        initializer: 0
-    actions:
-      small_buy: |
-        usd_balance -= args.price
-        btc_balance += 1        
-      large_buy: |
-        usd_balance -= args.price
-        btc_balance += 10        
-      sell: |
-        usd_balance += args.price 
-        btc_balance -= 1        
-    laws:
-      - usd_balance >= 0
-      - btc_balance >= 0
-

dataspaces[*].from

Required. A label used to indicate where the data is from.

Example

dataspaces:
-  - from: coinbase
-

dataspaces[*].name

Required. The name to use for this datasource.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-

dataspaces[*].identifiers

Defines the dataspace identifiers.

An identifier is a string that correlates a unique set of data. Examples are transaction ids, order ids, or correlation ids.

Identifiers may be ingested, visualized, and fetched through observation APIs, however are not yet made available to the AI engine for learning. If you have feedback on how you’d like to incorporate them, please let us know.

dataspaces[*].identifiers[*].name

Required. The name of the identifier.

Example

identifiers:
-  - name: transaction_id
-

dataspaces[*].identifiers[*].selector

Defines the field selector that maps a data field to the identifier name. Defaults to the identifier name if not provided.

Example

In the source data:

time,my_balance,my_transaction_id
-100,10,1A3
-200,20,1A4
-

Selects the my_transaction_id data field mapped to the transaction_id identifier.

identifiers:
-  - name: transaction_id
-    selector: my_transaction_id
-

dataspaces[*].measurements

Defines the dataspace measurements.

dataspaces[*].measurements[*].name

Required. The name of the field to create.

Example

measurements:
-  - name: balance
-

dataspaces[*].measurements[*].initializer

May be used to specify an initial value for the field.

initializer is a float.

Example

measurements:
-  - name: balance
-    initializer: 10.0
-

dataspaces[*].measurements[*].selector

Defines the field selector that maps a data field to the measurement name. Defaults to the measurement name if not provided.

Example

In the source data:

time,my_balance
-100,10
-200,20
-

This would “select” the my_balance column and place it into balance to be used by Spice.ai

measurements:
-  - name: balance
-    selector: my_balance
-

dataspaces[*].measurements[*].fill

Used to specify how to treat missing data. Possible values are previous or none. The default value is previous.

previous will take the last data point and “fill” it in. none will fill in the data with 0.

Example

In the source data:

time,balance
-100,10
-125,
-150,15
-175,
-200,20
-

The following manifest:

measurements:
-  - name: balance
-    fill: previous
-

would produce this data to the AI Engine:

time,balance
-100,10
-125,10
-150,15
-175,15
-200,20
-

dataspaces[*].categories

Process categorical data. Categorical data is a group or collection of discrete strings.

Some examples of categorical data include: colors, star ratings, brands, programming languages, age group, hair color, grades, etc.

Define categorical collections in the Spicepod manifest by the categories node. Specify each category with a name and a list of discrete values.

Example

dataspaces:
-  - from: rainbow
-    name: attributes
-    categories:
-      - name: color
-        values:
-          - red
-          - orange
-          - yellow
-          - green
-          - blue
-          - indigo
-          - violet
-

dataspaces[*].categories[*].name

Both the category name and the dataspace observation field name.

dataspaces[*].categories[*].selector

Selects the source data field mapped to the data space field. Defaults to name if not provided.

Example

In the source data:

time,color_rainbow
-100,red
-200,blue
-

The data field color_rainbow is selected as the mapped source data for the data space observation field color.

categories:
-  - name: color
-    selector: color_rainbow
-

dataspaces[*].categories[*].values

Specifies the list of discrete category name values.

Unspecified values in source data are ignored and are not included in the dataspace observations.

dataspaces[*].tags

Specifies the list of tag selectors and values.

The list of selectors is optional.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-    tags:
-      values:
-        - buy
-        - sell
-

dataspaces[*].tags.selectors

Specifies the list of fields that should populate tags. The _tags field is always included by default.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-    tags:
-      selectors:
-        - is_last
-      values:
-        - buy
-        - sell
-

dataspaces[*].tags.values

The list of possible tag values. Each item is a string value. Unspecified tags in source data are ignored and are not included in the dataspace observations.

Tag values are aggregated to a unique tag value list at the pod scope.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-    tags:
-      values:
-        - buy
-        - sell
-

dataspaces[*].tags.selectors

Specifies the list of source data fields to include in the tags collection. The _tags field is always included by default.

Example

dataspaces:
-  - from: coinbase
-    name: btcusd
-    tags:
-      selectors:
-        - is_last
-      values:
-        - buy
-        - sell
-

dataspaces[*].tags.values

The list of possible tag values. Tag values are aggregated to a unique tag value list at the pod scope.

dataspaces[*].data

Defines the data connector and data processor for the dataspace.

If this section is omitted, the data should be provided through the observations API.

data:
-  connector:
-    name: file
-    params:
-      path: data.csv
-

dataspaces[*].data.connector

The connector used to fetch data from an external data source. The connector code should exist in the data-components-contrib repository.

dataspaces[*].data.connector.name

The name of the connector to use.

The following connectors are currently supported:

Connector Name
file
flight
http
influxdb
coinbase
twitter

dataspaces[*].data.connector.params

A map of key-value pairs that are used to control the behavior of the connector.

Example -The file connector uses the path param to control which file to load.

data:
-  connector:
-    name: file
-    params:
-      path: data.csv
-

dataspaces[*].data.processor

Once the data has been fetched with the connector, it needs to be processed into a format that Spice.ai can understand. The processor specified here will take the raw data from the connector and transform it into the observations that the Spice.ai runtime expects.

Example -The csv processor will process the data coming from the file connector.

data:
-  connector:
-    name: file
-    params:
-      path: data.csv
-  processor:
-    name: csv
-

dataspaces[*].data.processor.name

The name of the processor to use.

The following processors are currently supported:

Processor Name
arrow
csv
flux-csv
json

dataspaces[*].data.processor.params

A map of key-value pairs that are used to control the behavior of the processor.

Where time is not native to the data-stream, specific data processors, including the JSON and CSV data processors, support selecting a custom field to populate time with the time_selector parameter.

Time selector example

data:
-  processor:
-    name: json
-    params:
-      time_selector: created_at
-

dataspaces[*].seed_data

Defines the seed data connector and processor for the dataspace.

Seed data is loaded before standard data and uses the same syntax as the dataspaces[*].data section.

This section is optional.

seed_data:
-  connector:
-    name: file
-    params:
-      path: data.csv
-

dataspaces[*].actions

A map of dataspace actions. The key is the name of the action to perform, the value is a python code block that will be executed whenever this action is taken during a training run.

This can be used to simulate effects of actions taken during a training run on the observation space. Arguments can be passed into this dataspace action and can be referenced within the python code by prefixing the argument with args.

Example

dataspaces:
-  - from: local
-    name: portfolio
-    measurements:
-      - name: usd_balance
-      - name: btc_balance
-    actions:
-      buy: |
-        usd_balance -= args.price
-        btc_balance += 1        
-

dataspaces[*].laws

A list of dataspace laws. Each item is a python expression that is evaluated during a training run to ensure that certain conditions aren’t violated. If the Spice.ai runtime attempts to take an action that would violate a law, any dataspace actions that would have affected the observation space are not applied and a negative reward is applied to the timestep.

Example

In this example, if the usd_balance would go below 0, the dataspace action that would affect the usd_balance is not applied to the observation space.

dataspaces:
-  - from: local
-  name: portfolio
-  measurements:
-    - name: usd_balance
-    - name: btc_balance
-  actions:
-    buy: |
-      usd_balance -= args.price
-      btc_balance += 1      
-  laws:
-    - usd_balance >= 0
-    - btc_balance >= 0
-

actions

Required. The set of actions that the Spice.ai runtime can choose from when giving recommendations.

Example

actions:
-  - name: jump
-  - name: move_right
-  - name: move_left
-

actions[*].name

The name of the action that can be taken. The action name should not include any spaces.

actions[*].do

An optional section that specifies which datasource action should be invoked whenever this action is selected during a training run.

Example

actions:
-  - name: buy
-    do:
-      name: local.portfolio.buy
-      args:
-        price: coinbase.btcusd.close
-

actions[*].do.name

The fully-qualified name of the dataspace action to invoke. A fully qualified name takes the form of:

dataspace.from.dataspace.name.dataspace.actions[*].name

Example

A dataspace defined as:

dataspaces:
-  - from: local
-    name: portfolio
-    measurements:
-      - name: btc_balance
-    actions:
-      buy: |
-        btc_balance += 1
-

would have a fully-qualified action name of local.portfolio.buy and would be referenced as:

actions:
-  - name: buy
-    do:
-      name: local.portfolio.buy
-

actions[*].do.args

A map of arguments to pass to the dataspace action. The key can be referenced by name in the defining dataspace action definition prefixed by args.. The value can be a constant or a fully qualified dataspace field.

A fully qualified dataspace field takes the form of:

dataspace.from.dataspace.name.dataspace.field[*].name

Example

A dataspace with the following definition:

dataspaces:
-  - from: game
-    name: world
-    measurements:
-      - name: player_position
-

could be referenced in the args as game.world.player_position:

actions:
-  - name: pick_up_coin
-    do:
-      name: game.character.pick_up_coin
-      args:
-        position: game.world.player_position
-

and could be referenced in the dataspace action with args.position:

dataspaces:
-  - from: game
-    name: character
-    measurements:
-      - name: coins
-    actions:
-      pick_up_coin: |
-        if args.position > 10:
-          game.character.coins += 1        
-

training

Required. Controls the training process for Spice.ai.

Example

training:
-  rewards:
-    - reward: buy
-      with: reward = 1
-    - reward: sell
-      with: reward = 1
-    - reward: hold
-      with: reward = 1
-

training.goal

End the training early if Spice.ai reaches a training goal three times in a row.

After a single episode is completed from a training run, a score is kept of the cumulative rewards that the Spice.ai runtime received. Use the goal here to write a python expression to check if the training goal has been met.

Example

training:
-  goal: score >= 100
-

training.loggers

A list of training loggers to enable for each pod training run.

Supported loggers and their values are:

LoggerValue
TensorBoardtensorboard

Example

training:
-  loggers:
-    - tensorboard
-

training.reward_init

A python code block that will be run before an action specific reward code block runs. Use this to define common variables that will be useful to reference in the specific reward code blocks.

Example

training:
-  reward_init: |
-    # Compute price change between previous state and this one 
-    # so it can be used in all three reward functions
-    prev_price = current_state["coinbase_btcusd_close"]
-    new_price = next_state["coinbase_btcusd_close"]
-    change_in_price = new_price - prev_price    
-  rewards:
-    - reward: buy
-      with: reward = -change_in_price
-    - reward: sell
-      with: reward = change_in_price
-
-    - reward: hold
-      with: |
-        if change_in_price > 0:
-          reward = -0.1
-        else:
-          reward = 0.1        
-

training.reward_funcs

The path to a Python file that defines the reward functions to use, instead of python code blocks.

training.rewards

Required. Defines how to reward the Spice.ai runtime during training so that it learns to take more intelligent actions.

This can be a list of reward definitions or the string “uniform” to indicate that all rewards should receive the same reward.

Example

training:
-  rewards: uniform
-
training:
-  rewards:
-    - reward: buy
-      with: reward = 1
-    - reward: sell
-      with: reward = 1
-

training.rewards[*].reward

The name of the action to associate this reward function with. Should be the same name as an action defined in actions

actions:
-  - name: jump
-
-training:
-  rewards:
-    - reward: jump
-      with: reward = 1
-

training.rewards[*].with

If training.reward_funcs is defined, then this should be the name of the function defined in the python file to use for specifying which reward to give the Spice.ai agent for taking this action.

If training.reward_funcs is not defined, then this is a python code block that needs to assign a variable to reward to specify which reward to give the Spice.ai agent for taking this action.

See Rewards for more information on how to define reward functions.

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/pod/quickstarts-trader/index.html b/reference/pod/quickstarts-trader/index.html deleted file mode 100644 index b7b0ea12..00000000 --- a/reference/pod/quickstarts-trader/index.html +++ /dev/null @@ -1,105 +0,0 @@ -Trader | Spice.ai Docs

Trader

From: https://github.com/spiceai/quickstarts/tree/trunk/trader

name: trader
-params:
-  epoch_time: 1605312000
-  granularity: 30m
-  interval: 6h
-  period: 72h
-  episodes: 10
-dataspaces:
-  - from: coinbase
-    name: btcusd
-    measurements:
-      - name: close
-    data:
-      connector:
-        name: file
-        params:
-          path: spicepods/data/btcusd.csv
-      processor:
-        name: csv
-  - from: local
-    name: portfolio
-    measurements:
-      - name: usd_balance
-        initializer: 0 # update with the starting balance to train with
-      - name: btc_balance
-        initializer: 0 # update with the starting balance to train with
-    actions:
-      small_buy: |
-        usd_balance -= args.price
-        btc_balance += 1        
-      large_buy: |
-        usd_balance -= args.price
-        btc_balance += 10        
-      sell: |
-        usd_balance += args.price 
-        btc_balance -= 1        
-    laws:
-      - usd_balance >= 0
-      - btc_balance >= 0
-
-actions:
-  - name: small_buy
-    do:
-      name: local.portfolio.small_buy
-      args:
-        price: coinbase.btcusd.close
-
-  - name: large_buy
-    do:
-      name: local.portfolio.large_buy
-      args:
-        price: coinbase.btcusd.close
-
-  - name: sell
-    do:
-      name: local.portfolio.sell
-      args:
-        price: coinbase.btcusd.close
-
-  - name: hold
-
-training:
-  # Compute price change between previous state and this one
-  # so it can be used in all three reward functions
-  reward_init: |
-    prev_price = current_state["coinbase_btcusd_close"]
-    new_price = next_state["coinbase_btcusd_close"]
-    change_in_price = new_price - prev_price    
-
-  rewards:
-    - reward: small_buy
-      # Reward buying when the price decreases
-      # Penalize buying when the price increases
-      with: |
-                reward = -change_in_price
-
-    - reward: large_buy
-      # Reward buying when the price decreases
-      # Penalize buying when the price increases
-      with: |
-                reward = -10 * change_in_price
-
-    - reward: sell
-      # Reward selling when the price increases
-      # Penalize selling when the price decreases
-      with: |
-                reward = change_in_price
-
-    - reward: hold
-      # Penalize holding slightly to incentivize more frequent trading
-      # Holding during large price movements will be penalized more harshly
-      with: |
-        if change_in_price > 0:
-          reward = -0.1
-        else:
-          reward = 0.1        
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/pod/samples-gardener/index.html b/reference/pod/samples-gardener/index.html deleted file mode 100644 index a662406e..00000000 --- a/reference/pod/samples-gardener/index.html +++ /dev/null @@ -1,71 +0,0 @@ -Gardener | Spice.ai Docs

Gardener

From: https://github.com/spiceai/samples/blob/trunk/gardener/README.md

name: gardener
-params:
-  epoch_time: 1612557000
-  granularity: 10m
-  interval: 1h
-  period: 720h
-dataspaces:
-  - from: sensors
-    name: garden
-    measurements:
-      - name: temperature
-      - name: moisture
-    data:
-      connector:
-        name: file
-        params:
-          path: data/garden_data.csv
-      processor:
-        name: csv
-
-actions:
-  - name: close_valve
-  - name: open_valve_half
-  - name: open_valve_full
-
-training:
-  rewards:
-    - reward: close_valve
-      # Reward keeping moisture content above 25%
-      with: |
-        if next_state["sensors_garden_moisture"] > 0.25:
-          reward = 200
-
-        # Penalize low moisture content depending on how far the garden has dried out
-        else:
-          reward = -100 * (0.25 - next_state["sensors_garden_moisture"])
-
-          # Penalize especially heavily if the drying trend is continuing (next_state is drier than current_state)
-          if next_state["sensors_garden_moisture"] < current_state["sensors_garden_moisture"]:
-            reward = reward * 2        
-
-    - reward: open_valve_half
-      # Reward watering when needed, more heavily if the garden is more dried out
-      with: |
-        if next_state["sensors_garden_moisture"] < 0.25:
-          reward = 100 * (0.25 - next_state["sensors_garden_moisture"])
-
-        # Penalize wasting water
-        # Penalize overwatering depending on how overwatered the garden is
-        else:
-          reward = -50 * (next_state["sensors_garden_moisture"] - 0.25)        
-
-    - reward: open_valve_full
-      # Reward watering when needed, more heavily if the garden is more dried out
-      with: |
-        if next_state["sensors_garden_moisture"] < 0.25:
-          reward = 200 * (0.25 - next_state["sensors_garden_moisture"])
-
-        # Penalize wasting water more heavily with valve fully open
-        # Penalize overwatering depending on how overwatered the garden is
-        else:
-          reward = -100 * (next_state["sensors_garden_moisture"] - 0.25)        
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/pod/samples-serverops/index.html b/reference/pod/samples-serverops/index.html deleted file mode 100644 index 97d81385..00000000 --- a/reference/pod/samples-serverops/index.html +++ /dev/null @@ -1,97 +0,0 @@ -Server Ops | Spice.ai Docs

Server Ops

From: https://github.com/spiceai/samples/tree/trunk/serverops

name: serverops
-params:
-  period: 24h
-  interval: 10m
-  granularity: 30s
-dataspaces:
-  - from: hostmetrics
-    name: cpu
-    data:
-      connector:
-        name: influxdb
-        params:
-          url: SPICE_INFLUXDB_URL
-          token: SPICE_INFLUXDB_TOKEN
-          org: SPICE_INFLUXDB_ORG
-          bucket: SPICE_INFLUXDB_BUCKET
-          measurement: cpu
-          field: usage_idle
-      processor:
-        name: flux-csv
-    measurements:
-      # "usage_idle" measures the percentage of time the CPU is idle
-      # Higher values indicate less CPU usage
-      - name: usage_idle
-
-actions:
-  - name: perform_maintenance
-  - name: preload_cache
-  - name: do_nothing
-
-training:
-  reward_init: |
-    high_cpu_usage_threshold = 10
-
-    cpu_usage_new = 100 - next_state["hostmetrics_cpu_usage_idle"]
-    cpu_usage_prev = 100 - current_state["hostmetrics_cpu_usage_idle"]
-    cpu_usage_delta = cpu_usage_new - cpu_usage_prev
-
-    cpu_usage_delta_abs = cpu_usage_delta
-    if cpu_usage_delta_abs < 0:
-      cpu_usage_delta_abs *= -1    
-
-  rewards:
-    - reward: perform_maintenance
-      # Reward when cpu usage is low and stable
-      with: |
-        if cpu_usage_new < high_cpu_usage_threshold:
-          # The lower the cpu usage, the higher the reward
-          reward = high_cpu_usage_threshold - cpu_usage_new
-
-          # Add an additional reward if the cpu usage trend is stable
-          if cpu_usage_delta_abs < 2:
-            reward *= 1.5
-
-        else:
-          # Penalize performing maintenance at a time when cpu usage is high
-          # The higher the cpu usage, the more harsh the penalty should be 
-          reward = high_cpu_usage_threshold - cpu_usage_new        
-
-    - reward: preload_cache
-      # Reward when cpu usage is low and rising
-      # Is the cpu usage high now, and was the cpu usage low previously?
-      # If so, previous state was a better time to preload,
-      # so give a negative reward based on the change
-      with: |
-        if cpu_usage_new > high_cpu_usage_threshold and cpu_usage_delta > 25:
-          reward = -cpu_usage_delta
-
-        # Reward preloading during low cpu usage
-        else:
-          reward = high_cpu_usage_threshold - cpu_usage_new        
-
-    - reward: do_nothing
-      # Reward doing nothing under high cpu usage
-      # The higher the cpu usage, the higher the reward
-      with: |
-        if cpu_usage_new > high_cpu_usage_threshold:
-          reward = high_cpu_usage_threshold - cpu_usage_new
-
-        # Penalize doing nothing slightly when cpu usage is low
-        else:
-          reward = -1
-
-          # If the cpu usage trend is unstable, do not apply the penalty
-          if cpu_usage_delta_abs > 5:
-            reward = 0        
-
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/spicepod/datasets/index.html b/reference/spicepod/datasets/index.html new file mode 100644 index 00000000..865884df --- /dev/null +++ b/reference/spicepod/datasets/index.html @@ -0,0 +1,44 @@ +Datasets | Spice.ai Docs

Datasets

Datasets YAML reference

A Spicepod can contain one or more datasets referenced by relative path, or defined inline.

datasets

Inline example:

spicepod.yaml

datasets:
+  - from: spice.ai/eth/beacon/eigenlayer
+    name: strategy_manager_deposits
+    params:
+      app: goerli-app
+    acceleration:
+      enabled: true
+      mode: inmemory # / file
+      engine: arrow # / duckdb
+      refresh_interval: 1h
+      refresh_mode: full / append # update / incremental
+      retention: 30m
+

spicepod.yaml

datasets:
+  - from: databricks.com/spiceai/datasets
+    name: uniswap_eth_usd
+    params:
+      environment: prod
+    acceleration:
+      enabled: true
+      mode: inmemory # / file
+      engine: arrow # / duckdb
+      refresh_interval: 1h
+      refresh_mode: full / append # update / incremental
+      retention: 30m
+

spicepod.yaml

datasets:
+  - from: local/Users/phillip/data/test.parquet
+    name: test
+    acceleration:
+      enabled: true
+      mode: inmemory # / file
+      engine: arrow # / duckdb
+      refresh_interval: 1h
+      refresh_mode: full / append # update / incremental
+      retention: 30m
+

Relative path example:

spicepod.yaml

datasets:
+  - from: datasets/uniswap_v2_eth_usdc
+

datasets/uniswap_v2_eth_usdc/dataset.yaml

name: spiceai.uniswap_v2_eth_usdc
+type: overwrite
+source: spice.ai
+auth: spice.ai
+acceleration:
+  enabled: true
+  refresh: 1h
+

name

The name of the dataset. This is used to reference the dataset in the pod manifest, as well as in external data sources.

type

The type of dataset. The following types are supported:

  • overwrite - Overwrites the dataset with the contents of the dataset source.
  • append - Appends new data from dataset source to the dataset.

source

The source of the dataset. The following sources are supported:

  • spice.ai
  • dremio (coming soon)
  • databricks (coming soon)

auth

Optional. The authentication profile to use to connect to the dataset source. Use spice login to create a new authentication profile.

If not specified, the default profile for the data source is used.

acceleration

Optional. Accelerate queries to the dataset by caching data locally.

acceleration.enabled

Optional. Enable or disable acceleration.

acceleration.refresh

Optional. The interval to refresh the data for the dataset if the dataset type is overwrite.

For append datasets, the refresh interval not used.

i.e. 1h for 1 hour, 1m for 1 minute, 1s for 1 second, etc.

acceleration.retention

Optional. Only supported for append datasets. Specifies how long to retain data updates from the data source before they are deleted.

If not specified, the default retention is to keep all data.

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/spicepod/index.html b/reference/spicepod/index.html new file mode 100644 index 00000000..1cae133e --- /dev/null +++ b/reference/spicepod/index.html @@ -0,0 +1,24 @@ +Manifest syntax for Spicepods | Spice.ai Docs

Manifest syntax for Spicepods

Detailed documentation on the Spicepod manifest syntax (spicepod.yaml)

About YAML syntax for Spicepod manifests (spicepod.yaml)

Spicepod manifests use YAML syntax and must be named spicepod.yaml or spicepod.yml. If you’re new to YAML and want to learn more, see “Learn YAML in Y minutes.”

Spicepod manifest files are stored in the root directory of your application code.

version

The version of the Spicepod manifest. The current version is v1beta1.

kind

The kind of Spicepod manifest. The kind is Spicepod.

name

The name of the Spicepod.

metadata

An optional map of metadata.

Example

metadata:
+  epoch_time: 1605312000
+  period: 72h
+  interval: 1m
+  granularity: 10s
+  episodes: 10
+

datasets

A Spicepod can contain one or more datasets referenced by relative path.

Example

A datasets referenced by relative path.

datasets:
+  - from: datasets/uniswap_v2_eth_usdc
+

A datasets with a dependency on another dataset.

datasets:
+  - from: datasets/uniswap_v2_eth_usdc
+    dependsOn: datasets/uniswap_eth_usdc
+

A dataset defined inline.

datasets:
+  - name: spiceai.uniswap_v2_eth_usdc
+    type: overwrite
+    source: spice.ai
+    acceleration:
+      enabled: true
+      refresh: 1h
+

models

A Spicepod can contain one or more models referenced by relative path.

Example

A model referenced by path.

models:
+  - from: models/gas_fees
+

dependencies

A list of dependent Spicepods.

dependencies:
+  - lukekim/demo
+  - spicehq/nfts
+

Datasets

Datasets YAML reference

© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/reference/timestamp/index.html b/reference/timestamp/index.html index 24e1d52f..790d28ca 100644 --- a/reference/timestamp/index.html +++ b/reference/timestamp/index.html @@ -4,5 +4,5 @@ More information about Unix time can be found on Wikipedia. Example 1630814986 // 2021-09-05T04:09:46Z ">
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file +Example 1630814986 // 2021-09-05T04:09:46Z ">

Timestamps

In Spice.ai all timestamps are represented as an integer value denoting the number of seconds that have passed since the Unix epoch in UTC time. The Unix epoch is defined as 1970-01-01T00:00:00Z.

More information about Unix time can be found on Wikipedia.

Example

1630814986 // 2021-09-05T04:09:46Z
+
© 2024 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/samples/index.html b/samples/index.html deleted file mode 100644 index 57025126..00000000 --- a/samples/index.html +++ /dev/null @@ -1 +0,0 @@ -Samples | Spice.ai Docs

Samples

Learn about Spice.ai with in-depth samples

Learn about Spice.ai with in-depth samples

These tutorials are more in-depth than the Quickstarts and use live streaming data for learning.

Apps that learn and adapt

  • ServerOps - Run server maintainance during periods of low load.
  • Gardener - Intelligently water a simulated garden.
  • Trader - Bitcoin trading from Coinbase Pro exchange data.

Deploy Spice.ai

  • Kubernetes - Use Spice.ai in your Kubernetes cluster.
© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index f92e7b12..9f2575a9 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -/getting-started/install-spiceai/2021-09-07T11:02:27+09:00/concepts/time/2021-12-03T16:13:13+09:00/concepts/2021-12-03T16:13:13+09:00/getting-started/train-pod/2021-09-07T15:12:09+09:00/concepts/recommendations/2021-11-15T22:43:12+09:00/concepts/interpretations/2021-12-08T22:42:26+09:00/concepts/rewards/external/2021-11-04T09:03:22+09:00/concepts/rewards/2021-12-08T22:42:26+09:00/concepts/dataspaces/2021-12-29T14:12:59+09:00/getting-started/2021-09-07T14:49:21+09:00/getting-started/next-steps/2021-10-26T08:39:30+09:00/quickstarts/2021-10-29T14:26:53+09:00/samples/2021-10-29T14:38:21+09:00/deep-learning-ai/interface/2021-09-07T16:58:37+09:00/training/2021-12-23T17:31:53+09:00/training/monitoring/2021-12-29T14:12:59+09:00/deep-learning-ai/2021-12-08T22:39:34+09:00/deep-learning-ai/vpg/2021-09-07T16:58:37+09:00/deep-learning-ai/dql/2021-09-07T16:58:37+09:00/deep-learning-ai/sac/2021-12-08T22:39:34+09:00/api/2021-09-03T20:36:50+09:00/cli/2021-12-23T17:31:53+09:00/reference/pod/samples-gardener/2021-12-08T22:42:26+09:00/reference/pod/2022-04-21T11:03:45+09:00/reference/2021-09-03T20:36:50+09:00/cli/reference/2021-12-23T17:31:53+09:00/acknowledgements/2021-10-04T16:38:44-07:00/reference/pod/quickstarts-trader/2021-12-08T22:42:26+09:00/reference/duration/2021-09-27T14:40:06+09:00/reference/pod/samples-serverops/2021-12-08T22:42:26+09:00/reference/timestamp/2021-09-07T14:49:21+09:00/2021-12-28T08:36:16+09:00/install/2021-09-07T14:34:20+09:00 \ No newline at end of file +/concepts/2024-02-22T19:38:11-08:00/getting-started/2024-02-22T19:38:11-08:00/cli/2024-02-22T19:38:11-08:00/reference/2021-09-03T20:36:50+09:00/cli/reference/2024-02-22T19:38:11-08:00/reference/spicepod/2024-02-22T19:38:11-08:00/acknowledgements/2024-02-22T19:38:11-08:00/reference/spicepod/datasets/2024-02-22T19:38:11-08:00/reference/timestamp/2021-09-07T14:49:21+09:00/2024-02-22T19:38:11-08:00/install/2021-09-07T14:34:20+09:00 \ No newline at end of file diff --git a/training/index.html b/training/index.html deleted file mode 100644 index b6a46c8a..00000000 --- a/training/index.html +++ /dev/null @@ -1 +0,0 @@ -Spice.ai Training Docs | Spice.ai Docs
\ No newline at end of file diff --git a/training/monitoring/index.html b/training/monitoring/index.html deleted file mode 100644 index 1767e08f..00000000 --- a/training/monitoring/index.html +++ /dev/null @@ -1,40 +0,0 @@ -Monitoring Training | Spice.ai Docs

Monitoring Training

Training runs may be monitored for progress, performance, and debugging in several ways.

The main mediums of monitoring are:

  • Command Line
  • Dashboard Monitoring
  • Training Loggers

Command Line

Training run progress is logged to the command line by default.

Example output from the Trader Quickstart:

2021/12/23 05:33:19 trader -> Starting training...
-2021/12/23 05:33:19 trader -> Training 10 episodes...
-2021/12/23 05:33:20 trader -> Episode 1 completed with score of -560.8.
-2021/12/23 05:33:20 trader -> Action Counts: hold = 20, large_buy = 27, sell = 57, small_buy = 28.
-2021/12/23 05:33:20 trader -> Episode 2 completed with score of -619.8.
-2021/12/23 05:33:20 trader -> Action Counts: hold = 8, large_buy = 6, sell = 102, small_buy = 16.
-2021/12/23 05:33:21 trader -> Episode 3 completed with score of -80.8.
-2021/12/23 05:33:21 trader -> Action Counts: hold = 116, large_buy = 8, sell = 6, small_buy = 2.
-2021/12/23 05:33:21 trader -> Episode 4 completed with score of -40.6.
-2021/12/23 05:33:21 trader -> Action Counts: hold = 124, large_buy = 2, sell = 2, small_buy = 4.
-2021/12/23 05:33:22 trader -> Episode 5 completed with score of -26.1.
-2021/12/23 05:33:22 trader -> Action Counts: hold = 127, large_buy = 2, sell = 1, small_buy = 2.
-2021/12/23 05:33:22 trader -> Episode 6 completed with score of -15.9.
-2021/12/23 05:33:22 trader -> Action Counts: hold = 129, large_buy = 1, sell = 1, small_buy = 1.
-2021/12/23 05:33:23 trader -> Episode 7 completed with score of -1.0.
-2021/12/23 05:33:23 trader -> Action Counts: hold = 132, large_buy = 0, sell = 0, small_buy = 0.
-2021/12/23 05:33:23 trader -> Episode 8 completed with score of -1.0.
-2021/12/23 05:33:23 trader -> Action Counts: hold = 132, large_buy = 0, sell = 0, small_buy = 0.
-2021/12/23 05:33:24 trader -> Episode 9 completed with score of -10.8.
-2021/12/23 05:33:24 trader -> Action Counts: hold = 130, large_buy = 2, sell = 0, small_buy = 0.
-2021/12/23 05:33:24 trader -> Episode 10 completed with score of -6.1.
-2021/12/23 05:33:24 trader -> Action Counts: hold = 131, large_buy = 0, sell = 1, small_buy = 0.
-2021/12/23 05:33:24 trader -> Max training episodes (10) reached!
-

Dashboard Monitoring

Training run progress can also be visualized in the dashboard http://localhost:8000 after navigating to the pod view.

dashboard-training-run

Training Loggers

Spice.ai supports logging to monitoring tools like TensorBoard.

This logging can either be enabled at the pod level using the training.loggers Spicepod section or as a parameter to the spice train command. Once enabled, the runtime will log training metrics for that tool.

A button to open the tool will appear on the training run in the dashboard. Clicking the button will open the relevant monitoring tool.

Example for TensorBoard:

See documentation for:

© 2022 Spice AI, Inc. All Rights Reserved
\ No newline at end of file