From 63f6a55de1cc970d5947f88f7a1f72a22b902caf Mon Sep 17 00:00:00 2001 From: Kalle Struik Date: Sun, 9 Apr 2023 00:12:04 +0200 Subject: [PATCH] Initial commit --- .gitignore | 4 + build.gradle.kts | 33 + gradle.properties | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 + gradlew.bat | 89 + kotlin-js-store/yarn.lock | 3520 ++++++++++++ settings.gradle.kts | 3 + src/main/kotlin/Client.kt | 26 + src/main/kotlin/NameChangeEvent.kt | 6 + src/main/kotlin/SchemaPart.kt | 219 + src/main/kotlin/SchemaPartStyles.kt | 17 + src/main/kotlin/Styles.kt | 107 + src/main/kotlin/ValueChangeEvent.kt | 6 + src/main/kotlin/Welcome.kt | 47 + src/main/kotlin/WelcomeStyles.kt | 17 + .../kotlin/components/DescriptionBlock.kt | 67 + src/main/kotlin/components/JsonArray.kt | 159 + src/main/kotlin/components/JsonArrayEntry.kt | 129 + src/main/kotlin/components/JsonBoolean.kt | 85 + src/main/kotlin/components/JsonMap.kt | 219 + src/main/kotlin/components/JsonMapEntry.kt | 175 + src/main/kotlin/components/JsonNumber.kt | 95 + src/main/kotlin/components/JsonObject.kt | 126 + .../kotlin/components/JsonSchemaComponent.kt | 59 + src/main/kotlin/components/JsonSchemaRoot.kt | 137 + src/main/kotlin/components/JsonString.kt | 111 + src/main/kotlin/schema/ConfigSchema.kt | 14 + .../kotlin/schema/ConfigValueConstraints.kt | 14 + src/main/kotlin/schema/ConfigValueType.kt | 11 + src/main/kotlin/schema/JsonSchema.kt | 34 + src/main/resources/arena.schema.json | 4797 +++++++++++++++++ src/main/resources/index.html | 12 + 34 files changed, 10530 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 kotlin-js-store/yarn.lock create mode 100644 settings.gradle.kts create mode 100644 src/main/kotlin/Client.kt create mode 100644 src/main/kotlin/NameChangeEvent.kt create mode 100644 src/main/kotlin/SchemaPart.kt create mode 100644 src/main/kotlin/SchemaPartStyles.kt create mode 100644 src/main/kotlin/Styles.kt create mode 100644 src/main/kotlin/ValueChangeEvent.kt create mode 100644 src/main/kotlin/Welcome.kt create mode 100644 src/main/kotlin/WelcomeStyles.kt create mode 100644 src/main/kotlin/components/DescriptionBlock.kt create mode 100644 src/main/kotlin/components/JsonArray.kt create mode 100644 src/main/kotlin/components/JsonArrayEntry.kt create mode 100644 src/main/kotlin/components/JsonBoolean.kt create mode 100644 src/main/kotlin/components/JsonMap.kt create mode 100644 src/main/kotlin/components/JsonMapEntry.kt create mode 100644 src/main/kotlin/components/JsonNumber.kt create mode 100644 src/main/kotlin/components/JsonObject.kt create mode 100644 src/main/kotlin/components/JsonSchemaComponent.kt create mode 100644 src/main/kotlin/components/JsonSchemaRoot.kt create mode 100644 src/main/kotlin/components/JsonString.kt create mode 100644 src/main/kotlin/schema/ConfigSchema.kt create mode 100644 src/main/kotlin/schema/ConfigValueConstraints.kt create mode 100644 src/main/kotlin/schema/ConfigValueType.kt create mode 100644 src/main/kotlin/schema/JsonSchema.kt create mode 100644 src/main/resources/arena.schema.json create mode 100644 src/main/resources/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4048e1d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.gradle/ +.idea/ +build/ + diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..67257b1 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,33 @@ +plugins { + kotlin("js") version "1.6.10" + kotlin("plugin.serialization") version "1.6.10" +} + +group = "nl.kallestruik" +version = "1.0" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(kotlin("test")) + implementation("org.jetbrains.kotlin-wrappers:kotlin-react:17.0.2-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-dom:17.0.2-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-styled:5.3.1-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-router-dom:5.2.0-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-redux:4.1.0-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlin-wrappers:kotlin-react-redux:7.2.4-pre.240-kotlin-1.5.30") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") +} + +kotlin { + js(IR) { + binaries.executable() + browser { + commonWebpackConfig { + cssSupport.enabled = true + } + } + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..8af57df --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +kotlin.code.style=official +kotlin.js.generate.executable.default=false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e750102 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock new file mode 100644 index 0000000..1b80b3c --- /dev/null +++ b/kotlin-js-store/yarn.lock @@ -0,0 +1,3520 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.4.5": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.7", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== + +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/component-emitter@^1.2.10": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" + integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== + +"@types/cookie@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.8": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/eslint-scope@^3.7.0": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/node@*", "@types/node@>=10.0.0": + version "17.0.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" + integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react-redux@^7.1.20": + version "7.1.22" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" + integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react@*": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" + integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" + integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== + +"@webpack-cli/info@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" + integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" + integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn@^8.4.1: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" + integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.19.1, body-parser@^1.19.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserslist@^4.14.5: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-lite@^1.0.30001286: + version "1.0.30001312" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + +css-loader@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" + integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== + dependencies: + icss-utils "^5.1.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + semver "^7.3.5" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" + integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-format@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873" + integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@~4.3.1: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +default-gateway@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.4.17: + version "1.4.68" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz#d79447b6bd1bec9183f166bb33d4bef0d5e4e568" + integrity sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +engine.io-parser@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.3.tgz#83d3a17acfd4226f19e721bb22a1ee8f7662d2f6" + integrity sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA== + dependencies: + base64-arraybuffer "0.1.4" + +engine.io@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-4.1.2.tgz#f96ceb56d4b39cc7ca5bd29a20e9c99c1ad1a765" + integrity sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~4.0.0" + ws "~7.4.2" + +enhanced-resolve@^5.8.3: + version "5.9.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" + integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +follow-redirects@^1.0.0: + version "1.14.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== + +format-util@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" + integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.7: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-middleware@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inline-style-prefixer@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== + dependencies: + css-in-js-utils "^2.0.0" + +internal-ip@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" + integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== + dependencies: + default-gateway "^6.0.0" + ipaddr.js "^1.9.1" + is-ip "^3.1.0" + p-event "^4.2.0" + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +karma-chrome-launcher@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== + dependencies: + which "^1.2.1" + +karma-mocha@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" + integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== + dependencies: + minimist "^1.2.3" + +karma-sourcemap-loader@0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" + integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== + dependencies: + graceful-fs "^4.1.2" + +karma-webpack@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" + integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + webpack-merge "^4.1.5" + +karma@6.3.4: + version "6.3.4" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.4.tgz#359899d3aab3d6b918ea0f57046fd2a6b68565e6" + integrity sha512-hbhRogUYIulfkBTZT7xoPrCYhRBnBoqbbL4fszWD0ReFGUxU+LYBr3dwKdAluaDQ/ynT9/7C+Lf7pPNW4gSx4Q== + dependencies: + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + colors "^1.4.0" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.3.0" + mime "^2.5.2" + minimatch "^3.0.4" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^3.1.0" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.28" + yargs "^16.1.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.3.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.1.tgz#9d3a8bf2c31c1e213fe3fc398a6053f7a2bc53e8" + integrity sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg== + dependencies: + date-format "^4.0.3" + debug "^4.3.3" + flatted "^3.2.4" + rfdc "^1.3.0" + streamroller "^3.0.2" + +loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.1.tgz#879ad447200773912898b46cd516a7abbb5e50b0" + integrity sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.3, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mocha@9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.2.tgz#93f53175b0f0dc4014bd2d612218fccfcf3534d3" + integrity sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.2" + debug "4.3.2" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.25" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.1.5" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nanoid@3.1.25: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== + +nanoid@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-releases@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-assign@^4, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + dependencies: + "@types/retry" "^0.12.0" + retry "^0.13.1" + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.15: + version "8.4.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" + integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== + dependencies: + nanoid "^3.2.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-redux@^7.2.4: + version "7.2.6" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +react-router-dom@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" + integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" + integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.1: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + +redux@^4.0.0, redux@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" + integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== + dependencies: + "@babel/runtime" "^7.9.2" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve@^1.9.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.11: + version "1.10.14" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@6.0.0, serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +socket.io-adapter@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz#edc5dc36602f2985918d631c1399215e97a1b527" + integrity sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg== + +socket.io-parser@~4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" + integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== + dependencies: + "@types/component-emitter" "^1.2.10" + component-emitter "~1.3.0" + debug "~4.3.1" + +socket.io@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-3.1.2.tgz#06e27caa1c4fc9617547acfbb5da9bc1747da39a" + integrity sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw== + dependencies: + "@types/cookie" "^0.4.0" + "@types/cors" "^2.8.8" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.1" + engine.io "~4.1.0" + socket.io-adapter "~2.1.0" + socket.io-parser "~4.0.3" + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" + integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.2" + source-map-js "^0.6.2" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +streamroller@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.2.tgz#30418d0eee3d6c93ec897f892ed098e3a81e68b7" + integrity sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA== + dependencies: + date-format "^4.0.3" + debug "^4.1.1" + fs-extra "^10.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.0.tgz#d66ea95fc50b22f8b79b69a9e414760fcf58d8d8" + integrity sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ== + +styled-components@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" + integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-invariant@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +ua-parser-js@^0.7.28: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +watchpack@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.0.tgz#dc43e6e0f80dd52e89cbf73d5294bcd7ad6eb343" + integrity sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.0" + "@webpack-cli/info" "^1.4.0" + "@webpack-cli/serve" "^1.6.0" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^5.2.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== + dependencies: + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.1.tgz#759d3337f0fbea297fbd1e433ab04ccfc000076b" + integrity sha512-qNXQCVYo1kYhH9pgLtm8LRNkXX3XzTfHSj/zqzaqYzGPca+Qjr+81wj1jgPMCHhIhso9WEQ+kX9z23iG9PzQ7w== + dependencies: + ansi-html-community "^0.0.8" + bonjour "^3.5.0" + chokidar "^3.5.1" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + del "^6.0.0" + express "^4.17.1" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + internal-ip "^6.2.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^3.1.0" + selfsigned "^1.10.11" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + strip-ansi "^7.0.0" + url "^0.11.0" + webpack-dev-middleware "^5.2.1" + ws "^8.1.0" + +webpack-merge@^4.1.5: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.2.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@5.57.1: + version "5.57.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.57.1.tgz#ead5ace2c17ecef2ae8126f143bfeaa7f55eab44" + integrity sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.2.0" + webpack-sources "^3.2.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^8.1.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..6905d2d --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ + +rootProject.name = "DConfig-Web" + diff --git a/src/main/kotlin/Client.kt b/src/main/kotlin/Client.kt new file mode 100644 index 0000000..2f5fd66 --- /dev/null +++ b/src/main/kotlin/Client.kt @@ -0,0 +1,26 @@ +import components.jsonSchemaRoot +import react.dom.render +import kotlinx.browser.document +import kotlinx.browser.window + +fun main() { + //TODO: + // - Parse and render description + // - Check constraints? + // - Defaults? + // - Make things look nice + + + window.onload = { + render(document.getElementById("root")) { + jsonSchemaRoot("/arena.schema.json") +// child(SchemaPart::class) { +// attrs { +// source = "/arena.schema.json" +// name = "ROOT" +// required = true +// } +// } + } + } +} diff --git a/src/main/kotlin/NameChangeEvent.kt b/src/main/kotlin/NameChangeEvent.kt new file mode 100644 index 0000000..f9e4806 --- /dev/null +++ b/src/main/kotlin/NameChangeEvent.kt @@ -0,0 +1,6 @@ +import kotlinx.serialization.json.JsonElement + +data class NameChangeEvent( + val id: String, + val name: String, +) \ No newline at end of file diff --git a/src/main/kotlin/SchemaPart.kt b/src/main/kotlin/SchemaPart.kt new file mode 100644 index 0000000..a05d084 --- /dev/null +++ b/src/main/kotlin/SchemaPart.kt @@ -0,0 +1,219 @@ +import kotlinx.html.InputType +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import org.w3c.dom.HTMLInputElement +import org.w3c.xhr.XMLHttpRequest +import react.* +import react.dom.option +import schema.JsonSchema +import schema.JsonType +import styled.* + +external interface SchemaPartProps : Props { + var source: String? + var name: String + var schema: JsonSchema? + var required: Boolean +} + +data class SchemaPartState( + var source: String?, + var name: String, + var schema: JsonSchema?, + var required: Boolean, + var arrayItems: MutableList = mutableListOf(), + var mapItems: MutableMap = mutableMapOf(), + var nextMapItem: String= "", +): State + +class SchemaPart(props: SchemaPartProps) : RComponent(props) { + + init { + this.state = SchemaPartState( + source = props.source, + name = props.name, + schema = props.schema, + required = props.required, + ) + + val json = Json { + ignoreUnknownKeys = true + prettyPrint = true + } + + val xmlHttp = XMLHttpRequest() + if (state.source != null) { + xmlHttp.open("GET", "${props.source}") + xmlHttp.onload = { + val schema: JsonSchema = json.decodeFromString(xmlHttp.responseText) + setState { + this.schema = schema + } + } + + xmlHttp.send() + } + } + + override fun RBuilder.render() { + if (state.name == "\$schema") + return + + styledDiv { + css { + +SchemaPartStyles.schemaPart + } + + if (state.schema?.type == JsonType.NUMBER) { + styledDiv { + if (state.required) + +"*" + + +state.name + + styledInput(InputType.number) { + + } + } + return@styledDiv + } + + if (state.schema?.type == JsonType.STRING) { + styledDiv { + if (state.required) + +"*" + + +state.name + + if (state.schema?.enum?.isNotEmpty() == true) { + styledSelect { + for (opt in state.schema!!.enum) { + option("", opt) + } + } + } else { + styledInput(InputType.text) { + + } + } + } + return@styledDiv + } + + if (state.schema?.type == JsonType.BOOLEAN) { + styledDiv { + if (state.required) + +"*" + + +state.name + + styledInput(InputType.checkBox) { + + } + } + return@styledDiv + } + + styledSpan { + css { + +SchemaPartStyles.schemaName + } + if (state.required) + +"*" + + +state.name + } + + styledDiv { + var type = state.schema?.type + if (type == null || type == JsonType.UNKNOWN) + type = state.schema?.conditionIf?.type + + if (!(type == JsonType.OBJECT || type == JsonType.ARRAY)) + +"Type: $type" + } + + if (state.schema != null) { + // Object properties + for (property in state.schema!!.properties) { + child(SchemaPart::class) { + attrs { + name = property.key + schema = property.value + required = state.schema?.required?.contains(property.key) ?: false + } + } + } + + // Array entries + if (state.schema?.type == JsonType.ARRAY) { + styledButton { + +"+" + attrs.onClickFunction = { + setState { + arrayItems.add(state.schema!!.items!!) + } + } + } + } + + // Object map elements + if (state.schema?.additionalProperties != null) { + styledInput { + attrs.onChangeFunction = { + state.nextMapItem = (it.target as HTMLInputElement).value + } + } + styledButton { + +"+" + attrs.onClickFunction = { + setState { + mapItems[state.nextMapItem] = state.schema!!.additionalProperties!! + } + } + } + } + } + + for (child in state.arrayItems) { + child(SchemaPart::class) { + attrs { + name = "Item" + schema = child + } + } + } + + for (child in state.mapItems) { + child(SchemaPart::class) { + attrs { + name = child.key + schema = child.value + } + } + } + } +// styledDiv { +// css { +// +WelcomeStyles.textContainer +// } +// +"Hello, ${state.name}" +// } +// styledInput { +// css { +// +WelcomeStyles.textInput +// } +// attrs { +// type = InputType.text +// value = state.name +// onChangeFunction = { event -> +// setState( +// WelcomeState(name = (event.target as HTMLInputElement).value) +// ) +// } +// } +// } + } +} diff --git a/src/main/kotlin/SchemaPartStyles.kt b/src/main/kotlin/SchemaPartStyles.kt new file mode 100644 index 0000000..b40113d --- /dev/null +++ b/src/main/kotlin/SchemaPartStyles.kt @@ -0,0 +1,17 @@ +import kotlinx.css.* +import styled.StyleSheet + +object SchemaPartStyles : StyleSheet("SchemaPartStyles", isStatic = true) { + val schemaPart by css { + margin(0.px, 0.px, 10.px, 20.px) + padding(5.px) + + + + } + + val schemaName by css { + padding(5.px) + backgroundColor = rgba(0, 0, 0, 0.2) + } +} diff --git a/src/main/kotlin/Styles.kt b/src/main/kotlin/Styles.kt new file mode 100644 index 0000000..e45088b --- /dev/null +++ b/src/main/kotlin/Styles.kt @@ -0,0 +1,107 @@ +import kotlinx.css.* +import kotlinx.css.properties.border +import styled.CssHolder +import styled.StyleSheet + +object Styles : StyleSheet("Styles", isStatic = true) { + val inputContainer by css { + display = Display.inlineBlock + position = Position.relative + textAlign = TextAlign.left + width = LinearDimension.fitContent + paddingTop = 10.px + margin(5.px, 10.px, 5.px, 10.px) + + input { + display = Display.block + border(2.px, BorderStyle.solid, Color.white, 5.px) + padding(10.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + fontWeight = FontWeight.normal + + focus { + outline = Outline.none + } + } + + select { + display = Display.block + border(2.px, BorderStyle.solid, Color.white, 5.px) + padding(10.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + fontWeight = FontWeight.normal + + focus { + outline = Outline.none + } + } + + label { + position = Position.absolute + textTransform = TextTransform.capitalize + top = (-5).px + left = 10.px + padding(0.px, 2.px) + backgroundColor = rgb(21, 21, 21) + color = Color.white + } + + focusWithin { + color = hex(0xCD23F8) + + input { + borderColor = hex(0xCD23F8) + } + + select { + borderColor = hex(0xCD23F8) + } + } + } + + val jsonContainer by css { + margin(10.px, 20.px, 10.px, 20.px) + } + + val objectHeader by css { + display = Display.flex + alignContent = Align.center + alignItems = Align.center + justifyContent = JustifyContent.spaceBetween + backgroundColor = rgb(32, 32, 32) + padding(5.px) + } + + val objectContainer by css { + borderWidth = 2.px + borderStyle = BorderStyle.solid + margin(10.px) + } + + val descriptionContainer by css { + display = Display.flex + margin(10.px) + backgroundColor = rgb(6, 25, 80) + } + + val descriptionIconContainer by css { + display = Display.inlineFlex + alignItems = Align.center + alignContent = Align.center + backgroundColor = hex(0x114683) + boxSizing = BoxSizing.borderBox + padding(15.px) + } + + val descriptionText by css { + display = Display.inlineBlock + padding(10.px) + alignSelf = Align.center + } + + val descriptionLine by css { + margin(0.px) + } +} diff --git a/src/main/kotlin/ValueChangeEvent.kt b/src/main/kotlin/ValueChangeEvent.kt new file mode 100644 index 0000000..59114e7 --- /dev/null +++ b/src/main/kotlin/ValueChangeEvent.kt @@ -0,0 +1,6 @@ +import kotlinx.serialization.json.JsonElement + +data class ValueChangeEvent( + val id: String, + val value: JsonElement, +) \ No newline at end of file diff --git a/src/main/kotlin/Welcome.kt b/src/main/kotlin/Welcome.kt new file mode 100644 index 0000000..9120f3b --- /dev/null +++ b/src/main/kotlin/Welcome.kt @@ -0,0 +1,47 @@ +import kotlinx.html.InputType +import kotlinx.html.js.onChangeFunction +import org.w3c.dom.HTMLInputElement +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import react.dom.attrs +import styled.css +import styled.styledDiv +import styled.styledInput + +external interface WelcomeProps : Props { + var name: String +} + +data class WelcomeState(val name: String) : State + +class Welcome(props: WelcomeProps) : RComponent(props) { + + init { + state = WelcomeState(props.name) + } + + override fun RBuilder.render() { + styledDiv { + css { + +WelcomeStyles.textContainer + } + +"Hello, ${state.name}" + } + styledInput { + css { + +WelcomeStyles.textInput + } + attrs { + type = InputType.text + value = state.name + onChangeFunction = { event -> + setState( + WelcomeState(name = (event.target as HTMLInputElement).value) + ) + } + } + } + } +} diff --git a/src/main/kotlin/WelcomeStyles.kt b/src/main/kotlin/WelcomeStyles.kt new file mode 100644 index 0000000..d3b2276 --- /dev/null +++ b/src/main/kotlin/WelcomeStyles.kt @@ -0,0 +1,17 @@ +import kotlinx.css.* +import styled.StyleSheet + +object WelcomeStyles : StyleSheet("WelcomeStyles", isStatic = true) { + val textContainer by css { + padding(5.px) + + backgroundColor = rgb(8, 97, 22) + color = rgb(56, 246, 137) + } + + val textInput by css { + margin(vertical = 5.px) + + fontSize = 14.px + } +} diff --git a/src/main/kotlin/components/DescriptionBlock.kt b/src/main/kotlin/components/DescriptionBlock.kt new file mode 100644 index 0000000..5edff2c --- /dev/null +++ b/src/main/kotlin/components/DescriptionBlock.kt @@ -0,0 +1,67 @@ +package components + +import Styles +import kotlinx.html.classes +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import react.dom.attrs +import styled.css +import styled.styledDiv +import styled.styledI +import styled.styledP + +external interface DescriptionBlockProps: Props { + var description: List +} + +class DescriptionBlock(props: DescriptionBlockProps): RComponent() { + + override fun RBuilder.render() { + if (props.description.isEmpty()) + return + + styledDiv { + css { + +Styles.descriptionContainer + } + + styledDiv { + css { + +Styles.descriptionIconContainer + } + + styledI { + attrs { + classes = setOf("ri-information-line", "ri-xl") + } + } + } + + styledDiv { + css { + +Styles.descriptionText + } + + for (line in props.description) { + styledP { + css { + +Styles.descriptionLine + } + +line + } + } + } + } + } + +} + +fun RBuilder.descriptionBlock(description: List?) { + child(DescriptionBlock::class) { + attrs { + this.description = description?: listOf() + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonArray.kt b/src/main/kotlin/components/JsonArray.kt new file mode 100644 index 0000000..20d825d --- /dev/null +++ b/src/main/kotlin/components/JsonArray.kt @@ -0,0 +1,159 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.css.properties.border +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.buildJsonArray +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonArrayProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonArray? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonArrayState( + var entries: MutableMap = mutableMapOf(), + var data: kotlinx.serialization.json.JsonArray?, + var realData: MutableMap = mutableMapOf(), + var showChildren: Boolean = true, + var nextId: Int = 0, +): State + + +class JsonArray(props: JsonArrayProps): RComponent() { + init { + this.state = JsonArrayState( + data = props.data, + ) + + props.data?.forEachIndexed { index, element -> + state.entries[index] = props.schema.items!! + state.realData[index] = element + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + //ri-delete-bin-7-line + + if (props.name != "") { + styledLabel { + css { + textTransform = TextTransform.capitalize + } + +props.name + } + } + + styledI { + css { + color = hex(0x4caf50) + alignSelf = Align.center + } + attrs { + classes = setOf("ri-add-line", "ri-xl") + onClickFunction = { + setState { + entries[state.nextId] = props.schema.items!! + nextId++ + showChildren = true + } + } + } + } + } + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + state.entries.forEach { + jsonArrayEntry( + schema = it.value, + data = state.realData[it.key], + id = it.key.toString(), + handleChange = ::handleChange, + onDelete = ::handleDelete, + level = props.level + 1, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.realData[event.id.toInt()] = event.value + state.data = buildJsonArray { + state.realData.forEach { + add(it.value) + } + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } + + fun handleDelete(id: String) { + state.realData.remove(id.toInt()) + state.data = buildJsonArray { + state.realData.forEach { + add(it.value) + } + } + + setState { + entries.remove(id.toInt()) + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } +} + +fun RBuilder.jsonArray(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonArray?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonArray::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonArrayEntry.kt b/src/main/kotlin/components/JsonArrayEntry.kt new file mode 100644 index 0000000..7a3e61f --- /dev/null +++ b/src/main/kotlin/components/JsonArrayEntry.kt @@ -0,0 +1,129 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.ConfigValueType +import schema.JsonType +import styled.* + +external interface JsonArrayEntryProps: Props { + var name: String + var schema: ConfigSchema + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var onDelete: (id: String) -> Unit + var level: Int +} + +data class JsonArrayEntryState( + var data: JsonElement?, + var showChildren: Boolean = true, +): State + +class JsonArrayEntry(props: JsonArrayEntryProps): RComponent() { + + init { + this.state = JsonArrayEntryState( + data = props.data, + ) + } + + override fun RBuilder.render() { + styledDiv { + css { + margin(0.px, 0.px, 10.px, 20.px) + padding(5.px) + display = Display.flex + alignContent = Align.center + alignItems = Align.center + } + + if (props.schema.type != ConfigValueType.OBJECT) + styledI { + css { + color = Color.red + } + attrs { + classes = setOf("ri-delete-bin-7-line ri-xl") + onClickFunction = { + props.onDelete(props.id) + } + } + } + + styledDiv { + css { + display = Display.inlineBlock + if (props.schema.type == ConfigValueType.OBJECT) { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + } + + if (props.schema.type == ConfigValueType.OBJECT) + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + styledI { + css { + color = Color.red + } + attrs { + classes = setOf("ri-delete-bin-7-line") + onClickFunction = { + props.onDelete(props.id) + } + } + } + } + + if (state.showChildren) + jsonSchema( + schema = props.schema, + name = "", + data = state.data, + id = props.id, + handleChange = props.handleChange, + level = props.level, + ) + } + } + } +} + +fun RBuilder.jsonArrayEntry(schema: ConfigSchema, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, onDelete: (id: String) -> Unit, level: Int) { + child(JsonArrayEntry::class) { + attrs { + this.schema = schema + this.data = data + this.id = id + this.handleChange = handleChange + this.onDelete = onDelete + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonBoolean.kt b/src/main/kotlin/components/JsonBoolean.kt new file mode 100644 index 0000000..6d79055 --- /dev/null +++ b/src/main/kotlin/components/JsonBoolean.kt @@ -0,0 +1,85 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.booleanOrNull +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.JsonType +import styled.css +import styled.styledDiv +import styled.styledInput +import styled.styledLabel + +external interface JsonBooleanProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonBooleanState( + var value: Boolean = false, + var data: JsonPrimitive?, +): State + + +class JsonBoolean(props: JsonBooleanProps): RComponent() { + init { + val default = props.schema.default?.booleanOrNull ?: false + this.state = JsonBooleanState( + value = props.data?.booleanOrNull ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.checkBox + checked = state.value + onChangeFunction = { + val value = (it.target as HTMLInputElement).checked + setState { + this.value = value + } + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + } + } + +} + +fun RBuilder.jsonBoolean(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonBoolean::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonMap.kt b/src/main/kotlin/components/JsonMap.kt new file mode 100644 index 0000000..8864482 --- /dev/null +++ b/src/main/kotlin/components/JsonMap.kt @@ -0,0 +1,219 @@ +package components + +import NameChangeEvent +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.buildJsonObject +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonMapProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonObject? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonMapState( + var entries: MutableMap = mutableMapOf(), + var names: MutableMap = mutableMapOf(), + var data: kotlinx.serialization.json.JsonObject?, + var showChildren: Boolean = true, +): State + + +class JsonMap(props: JsonMapProps): RComponent() { + init { + this.state = JsonMapState( + data = props.data, + ) + + val random = Random(Random.nextInt()) + state.data = buildJsonObject { + props.data?.forEach { entry -> + val index = random.nextInt().toString() + state.entries[index] = props.schema.items!! + state.names[index] = entry.key + put(index, entry.value) + } + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + if (props.name != "") { + styledLabel { + css { + textTransform = TextTransform.capitalize + marginLeft = 10.px + } + +props.name + } + } + + styledI { + css { + color = hex(0x4caf50) + marginLeft = 10.px + alignSelf = Align.center + } + attrs { + classes = setOf("ri-add-line", "ri-xl") + onClickFunction = { + val id = Random.nextInt().toString() + setState { + entries[id] = props.schema.items!! + names[id] = "" + } + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + for (entry in state.entries) { + jsonMapEntry( + schema = entry.value, + key = state.names[entry.key] ?: "", + data = state.data?.get(entry.key), + id = entry.key, + handleChange = ::handleChange, + onNameChange = ::handleNameChange, + onDelete = ::handleDelete, + allowedKeys = props.schema.constraints.allowedKeys?.filter { it.intersect(state.names.values.toSet()).isEmpty() }, + usePredefinedKeys = !props.schema.constraints.allowedKeys.isNullOrEmpty(), + level = props.level, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + put(entry.key, entry.value) + } + + put(event.id, event.value) + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } + + fun handleNameChange(event: NameChangeEvent) { + setState { + names[event.id] = event.name + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key == event.id) { + put(event.name, entry.value) + continue + } + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } + + fun handleDelete(id: String) { + setState { + data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + if (entry.key == id) + continue + + put(entry.key, entry.value) + } + } + names.remove(id) + entries.remove(id) + } + + val newData = buildJsonObject { + if (state.data != null) { + for (entry in state.data!!) { + if (entry.key == id) { + continue + } + if (entry.key in state.names) + put(state.names[entry.key]!!, entry.value) + } + } + } + + props.handleChange(ValueChangeEvent(props.id, newData)) + } +} + +fun RBuilder.jsonMap(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonObject?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonMap::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonMapEntry.kt b/src/main/kotlin/components/JsonMapEntry.kt new file mode 100644 index 0000000..dd599d3 --- /dev/null +++ b/src/main/kotlin/components/JsonMapEntry.kt @@ -0,0 +1,175 @@ +package components + +import NameChangeEvent +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.HTMLSelectElement +import react.* +import react.dom.attrs +import react.dom.option +import schema.ConfigSchema +import styled.* +import kotlin.random.Random + +external interface JsonMapEntryProps: Props { + var name: String + var schema: ConfigSchema + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var onNameChange: (event: NameChangeEvent) -> Unit + var onDelete: (id: String) -> Unit + var allowedKeys: List>? + var usePredefinedKeys: Boolean + var level: Int +} + +data class JsonMapEntryState( + var data: JsonElement?, + var showChildren: Boolean = true, + var name: String, +): State + +class JsonMapEntry(props: JsonMapEntryProps): RComponent() { + + init { + this.state = JsonMapEntryState( + data = props.data, + name = props.name, + ) + + if (!props.allowedKeys.isNullOrEmpty() && props.name.isBlank()) { + val name = props.allowedKeys?.getOrNull(0)?.getOrNull(0) ?: "" + console.log("Defaulting name to $name") + this.state.name = name + + props.onNameChange(NameChangeEvent(props.id, name)) + } + } + + override fun RBuilder.render() { + styledDiv { + css { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + if (props.usePredefinedKeys) { + styledSelect { + if (state.name.isNotBlank()){ + option("", state.name) + } + + for (optGroup in props.allowedKeys!!) { + for (opt in optGroup) + option("", opt) + } + + + + attrs { + value = state.name + onChangeFunction = { + val value = (it.target as HTMLSelectElement).value + setState { + this.name = value + } + + props.onNameChange(NameChangeEvent(props.id, value)) + } + } + } + } else { + styledInput { + attrs { + type = InputType.text + value = state.name + onChangeFunction = { + val value = (it.target as HTMLInputElement).value + setState { + this.name = value + } + + props.onNameChange(NameChangeEvent(props.id, value)) + } + } + } + } + + styledI { + css { + color = Color.red + marginLeft = 10.px + alignSelf = Align.center + } + attrs { + classes = setOf("ri-delete-bin-7-line") + onClickFunction = { + props.onDelete(props.id) + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + jsonSchema( + schema = props.schema, + name = "", + data = state.data, + id = props.id, + handleChange = props.handleChange, + level = props.level + ) + } + } + } +} + +fun RBuilder.jsonMapEntry(schema: ConfigSchema, key: String, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, onNameChange: (event: NameChangeEvent) -> Unit, onDelete: (id: String) -> Unit, allowedKeys: List>?, usePredefinedKeys: Boolean, level: Int) { + child(JsonMapEntry::class) { + attrs { + this.schema = schema + this.name = key + this.data = data + this.id = id + this.handleChange = handleChange + this.onNameChange = onNameChange + this.onDelete = onDelete + this.allowedKeys = allowedKeys + this.usePredefinedKeys = usePredefinedKeys + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonNumber.kt b/src/main/kotlin/components/JsonNumber.kt new file mode 100644 index 0000000..472959a --- /dev/null +++ b/src/main/kotlin/components/JsonNumber.kt @@ -0,0 +1,95 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.doubleOrNull +import kotlinx.serialization.json.floatOrNull +import kotlinx.serialization.json.intOrNull +import org.w3c.dom.HTMLInputElement +import react.* +import react.dom.attrs +import schema.ConfigSchema +import schema.JsonType +import styled.css +import styled.styledDiv +import styled.styledInput +import styled.styledLabel + +external interface JsonNumberProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonNumberState( + var value: Double = 0.0, + var data: JsonPrimitive?, +): State + + +class JsonNumber(props: JsonNumberProps): RComponent() { + init { + val default = props.schema.default?.doubleOrNull ?: 0.0 + + this.state = JsonNumberState( + value = props.data?.content?.toDoubleOrNull() ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + css { + +Styles.inputContainer + } + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.number + value = state.value.toString() + onChangeFunction = { + val value = (it.target as HTMLInputElement).value.toDoubleOrNull() + if (value != null) { + setState { + this.value = value + this.data = JsonPrimitive(value) + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } + } + } + +} + +fun RBuilder.jsonNumber(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonNumber::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonObject.kt b/src/main/kotlin/components/JsonObject.kt new file mode 100644 index 0000000..be691f2 --- /dev/null +++ b/src/main/kotlin/components/JsonObject.kt @@ -0,0 +1,126 @@ +package components + +import ValueChangeEvent +import kotlinx.css.* +import kotlinx.html.classes +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.json.buildJsonObject +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.* + +external interface JsonObjectProps: Props { + var schema: ConfigSchema + var name: String + var data: kotlinx.serialization.json.JsonObject? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class JsonObjectState( + var data: kotlinx.serialization.json.JsonObject?, + var showChildren: Boolean = true, +): State + +class JsonObject(props: JsonObjectProps): RComponent() { + init { + this.state = JsonObjectState( + data = props.data, + ) + } + + override fun RBuilder.render() { + styledDiv { + css { + if (props.name != "") { + borderColor = hsl((props.level * 40) % 256, 100, 15) + +Styles.objectContainer + } + } + if (props.name != "") { + + styledDiv { + css { + +Styles.objectHeader + } + styledI { + attrs { + classes = if (state.showChildren) { + setOf("ri-arrow-down-s-line", "ri-xl") + } else { + setOf("ri-arrow-right-s-line", "ri-xl") + } + + onClickFunction = { + setState { + showChildren = !showChildren + } + } + } + } + + styledLabel { + css { + textTransform = TextTransform.capitalize + } + +props.name + } + + styledDiv { + css { + width = 24.px + } + } + } + } + + styledDiv { + css { + if (!state.showChildren) + display = Display.none + } + + descriptionBlock(props.schema.description) + + for (property in props.schema.children!!) { + jsonSchema( + schema = property.value, + name = property.key, + data = state.data?.get(property.key), + id = property.key, + handleChange = ::handleChange, + level = props.level + 1, + ) + } + } + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = buildJsonObject { + if (state.data != null) + for (entry in state.data!!) { + put(entry.key, entry.value) + } + + put(event.id, event.value) + } + + props.handleChange(ValueChangeEvent(props.id, state.data!!)) + } +} + +fun RBuilder.jsonObject(schema: ConfigSchema, name: String, data: kotlinx.serialization.json.JsonObject?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int) { + child(JsonObject::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonSchemaComponent.kt b/src/main/kotlin/components/JsonSchemaComponent.kt new file mode 100644 index 0000000..fb4887a --- /dev/null +++ b/src/main/kotlin/components/JsonSchemaComponent.kt @@ -0,0 +1,59 @@ +package components + +import ValueChangeEvent +import kotlinx.serialization.json.* +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonObject +import react.Props +import react.RBuilder +import react.RComponent +import react.State +import schema.ConfigSchema +import schema.ConfigValueType + +external interface ConfigSchemaComponentProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonElement? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit + var level: Int +} + +data class ConfigSchemaComponentState( + var data: JsonElement?, +): State + +class ConfigSchemaComponent(props: ConfigSchemaComponentProps): RComponent() { + init { + this.state = ConfigSchemaComponentState( + data = props.data, + ) + } + + override fun RBuilder.render() { + when (props.schema.type) { + ConfigValueType.STRING -> jsonString(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.BOOLEAN -> jsonBoolean(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.OBJECT -> jsonObject(props.schema, props.name, state.data as JsonObject?, props.id, props.handleChange, props.level) + ConfigValueType.LIST -> jsonArray(props.schema, props.name, state.data as JsonArray?, props.id, props.handleChange, props.level) + ConfigValueType.MAP -> jsonMap(props.schema, props.name, state.data as JsonObject?, props.id, props.handleChange, props.level) + ConfigValueType.INTEGER -> jsonNumber(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + ConfigValueType.FLOAT -> jsonNumber(props.schema, props.name, state.data as JsonPrimitive?, props.id, props.handleChange) + } + } +} + +fun RBuilder.jsonSchema(schema: ConfigSchema, name: String, data: JsonElement?, id: String, handleChange: (event: ValueChangeEvent) -> Unit, level: Int = 0, attributes: ConfigSchemaComponentProps.() -> Unit = {}) { + child(ConfigSchemaComponent::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + this.level = level + attributes(this) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonSchemaRoot.kt b/src/main/kotlin/components/JsonSchemaRoot.kt new file mode 100644 index 0000000..fe926de --- /dev/null +++ b/src/main/kotlin/components/JsonSchemaRoot.kt @@ -0,0 +1,137 @@ +package components + +import ValueChangeEvent +import kotlinx.browser.window +import kotlinx.css.* +import kotlinx.html.InputType +import kotlinx.html.classes +import kotlinx.html.js.onChangeFunction +import kotlinx.html.js.onClickFunction +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.url.URL +import org.w3c.dom.url.URLSearchParams +import org.w3c.files.Blob +import org.w3c.files.File +import org.w3c.files.FileReader +import org.w3c.files.get +import org.w3c.xhr.XMLHttpRequest +import react.* +import react.dom.attrs +import schema.ConfigSchema +import styled.css +import styled.styledDiv +import styled.styledI +import styled.styledInput + +external interface JsonSchemaRootProps: Props { + var source: String +} + +data class JsonSchemaRootState( + var schema: ConfigSchema? = null, + var data: JsonObject = JsonObject(mapOf()), + var showJson: Boolean = false, +): State + + +class JsonSchemaRoot(props: JsonSchemaRootProps): RComponent() { + init { + this.state = JsonSchemaRootState() + + val json = Json { + ignoreUnknownKeys = true + prettyPrint = true + } + + val xmlHttp = XMLHttpRequest() + xmlHttp.open("GET", props.source) + xmlHttp.onload = { + val schema: ConfigSchema = json.decodeFromString(xmlHttp.responseText) + setState { + this.schema = schema + } + } + + xmlHttp.send() + } + + override fun RBuilder.render() { + styledDiv { + css { + backgroundColor = Color.black + width = 100.pct + fontSize = 2.rem + } + + styledI { + css { + + } + attrs { + classes = setOf("ri-folder-open-line") + } + + styledInput { + attrs { + type = InputType.file + onChangeFunction = { + val reader = FileReader() + reader.onloadend = { + setState { + data = Json.decodeFromString(reader.result as String) + } + } + reader.readAsText((it.target as HTMLInputElement).files!![0]!!) + } + } + } + } + styledI { + css { + + } + attrs { + classes = setOf("ri-save-3-line") + onClickFunction = { + setState { + showJson = !showJson + } + val encoded = Json.encodeToString(state.data) + console.log(encoded) +// //TODO: Send to the server and have to server respond with the data and a +// // Content-Disposition: attachment header. This should open a save dialog +//// window.location.assign("data:application/json;charset=utf-8,$encoded") +// js("window.open(\"data:application/json;charset=utf-8,\" + encodeURI(encoded), \"_blank\")") + } + } + } + } + + if (state.showJson) { + styledDiv { + +Json.encodeToString(state.data) + } + } + + if (state.schema != null) + jsonSchema(state.schema!!, "", state.data, "", ::handleChange) { + key = state.data.toString() + } + } + + fun handleChange(event: ValueChangeEvent) { + state.data = event.value as JsonObject + } +} + +fun RBuilder.jsonSchemaRoot(source: String) { + child(JsonSchemaRoot::class) { + attrs { + this.source = source + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/components/JsonString.kt b/src/main/kotlin/components/JsonString.kt new file mode 100644 index 0000000..9276646 --- /dev/null +++ b/src/main/kotlin/components/JsonString.kt @@ -0,0 +1,111 @@ +package components + +import ValueChangeEvent +import kotlinx.css.portal +import kotlinx.html.InputType +import kotlinx.html.id +import kotlinx.html.js.onChangeFunction +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.contentOrNull +import org.w3c.dom.HTMLInputElement +import org.w3c.dom.HTMLSelectElement +import react.* +import react.dom.attrs +import react.dom.option +import schema.ConfigSchema +import schema.JsonType +import styled.* + +external interface JsonStringProps: Props { + var schema: ConfigSchema + var name: String + var data: JsonPrimitive? + var id: String + var handleChange: (event: ValueChangeEvent) -> Unit +} + +data class JsonStringState( + var value: String = "", + var data: JsonPrimitive?, +): State + + +class JsonString(props: JsonStringProps): RComponent() { + init { + val default: String = props.schema.default?.contentOrNull ?: "" + + this.state = JsonStringState( + value = props.data?.content ?: default, + data = props.data, + ) + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(state.value))) + } + + override fun RBuilder.render() { + styledDiv { + css { + +Styles.inputContainer + } + if (props.name != "") { + styledLabel { + +props.name + attrs { + htmlFor = "${props.id}-input" + } + } + } + + + if (!props.schema.constraints.enum.isNullOrEmpty()) { + styledSelect { + for (opt in props.schema.constraints.enum!!) { + option("", opt) + } + + attrs { + id = "${props.id}-input" + value = state.value + onChangeFunction = { + val value = (it.target as HTMLSelectElement).value + setState { + this.value = value + this.data = JsonPrimitive(value) + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } else { + styledInput { + attrs { + id = "${props.id}-input" + type = InputType.text + value = state.value + onChangeFunction = { + val value = (it.target as HTMLInputElement).value + setState { + this.value = value + } + + props.handleChange(ValueChangeEvent(props.id, JsonPrimitive(value))) + } + } + } + } + } + } +} + +fun RBuilder.jsonString(schema: ConfigSchema, name: String, data: JsonPrimitive?, id: String, handleChange: (event: ValueChangeEvent) -> Unit) { + child(JsonString::class) { + attrs { + this.schema = schema + this.name = name + this.data = data + this.id = id + this.handleChange = handleChange + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/schema/ConfigSchema.kt b/src/main/kotlin/schema/ConfigSchema.kt new file mode 100644 index 0000000..bebd02d --- /dev/null +++ b/src/main/kotlin/schema/ConfigSchema.kt @@ -0,0 +1,14 @@ +package schema + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonPrimitive + +@Serializable +data class ConfigSchema( + val type: ConfigValueType, + val description: List? = null, + val children: Map? = null, + val items: ConfigSchema? = null, + val default: JsonPrimitive? = null, + val constraints: ConfigValueConstraints = ConfigValueConstraints(), +) diff --git a/src/main/kotlin/schema/ConfigValueConstraints.kt b/src/main/kotlin/schema/ConfigValueConstraints.kt new file mode 100644 index 0000000..cd7ee6b --- /dev/null +++ b/src/main/kotlin/schema/ConfigValueConstraints.kt @@ -0,0 +1,14 @@ +package schema + +import kotlinx.serialization.Serializable + +@Serializable +data class ConfigValueConstraints( + val enum: List? = null, + val allowedKeys: List>? = null, + val maxLength: Int? = null, + val maxValueInt: Long? = null, + val minValueInt: Long? = null, + val maxValueFloat: Double? = null, + val minValueFloat: Double? = null, +) \ No newline at end of file diff --git a/src/main/kotlin/schema/ConfigValueType.kt b/src/main/kotlin/schema/ConfigValueType.kt new file mode 100644 index 0000000..5bfb99b --- /dev/null +++ b/src/main/kotlin/schema/ConfigValueType.kt @@ -0,0 +1,11 @@ +package schema + +enum class ConfigValueType { + STRING, + MAP, + LIST, + OBJECT, + BOOLEAN, + INTEGER, + FLOAT +} \ No newline at end of file diff --git a/src/main/kotlin/schema/JsonSchema.kt b/src/main/kotlin/schema/JsonSchema.kt new file mode 100644 index 0000000..3a999d0 --- /dev/null +++ b/src/main/kotlin/schema/JsonSchema.kt @@ -0,0 +1,34 @@ +package schema + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +data class JsonSchema( + @SerialName("\$schema") + val schema: String = "", + val type: JsonType = JsonType.UNKNOWN, + val properties: Map = mapOf(), + val additionalProperties: JsonSchema? = null, + val definitions: Map = mapOf(), + val required: List = listOf(), + val items: JsonSchema? = null, + val description: String = "", + val enum: List = listOf(), + @SerialName("if") val conditionIf: JsonSchema? = null, + @SerialName("then") val conditionThen: JsonSchema? = null, + @SerialName("else") val conditionElse: JsonSchema? = null, +) + +@Serializable +enum class JsonType { + @SerialName("unknown") UNKNOWN, + @SerialName("string") STRING, + @SerialName("number") NUMBER, + @SerialName("boolean") BOOLEAN, + @SerialName("object") OBJECT, + @SerialName("array") ARRAY, + @SerialName("null") NULL, + +} diff --git a/src/main/resources/arena.schema.json b/src/main/resources/arena.schema.json new file mode 100644 index 0000000..2d89ed6 --- /dev/null +++ b/src/main/resources/arena.schema.json @@ -0,0 +1,4797 @@ +{ + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the arena." + ] + }, + "spawns": { + "type": "MAP", + "description": [ + "The spawns that the arena will use. These alone are not enough to make a player spawn (See spawnRules)." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "x": { + "type": "FLOAT", + "description": [ + "The x coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "y": { + "type": "FLOAT", + "description": [ + "The y coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "z": { + "type": "FLOAT", + "description": [ + "The z coordinate of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 1.7976931348623157E308, + "minValueFloat": 4.9E-324 + } + }, + "yaw": { + "type": "FLOAT", + "description": [ + "The yaw of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 180.0, + "minValueFloat": 0.0 + } + }, + "pitch": { + "type": "FLOAT", + "description": [ + "The pitch of the spawn point." + ], + "default": 0.0, + "constraints": { + "maxValueFloat": 90.0, + "minValueFloat": 0.0 + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "loadouts": { + "type": "MAP", + "description": [ + "The loadouts for the arena. These determine the items a player spawns with and what potion effects they get." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "hotbar": { + "type": "MAP", + "description": [ + "The items that will be in the players hotbar." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [ + [ + "0" + ], + [ + "1" + ], + [ + "2" + ], + [ + "3" + ], + [ + "4" + ], + [ + "5" + ], + [ + "6" + ], + [ + "7" + ], + [ + "8" + ] + ] + } + }, + "armor": { + "type": "MAP", + "description": [ + "The items that will be in the players armor slots." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [ + [ + "helmet", + "head" + ], + [ + "chestplate", + "chest", + "elytra" + ], + [ + "leggings", + "legs", + "pants" + ], + [ + "boots", + "feet" + ] + ] + } + }, + "offhand": { + "type": "OBJECT", + "description": [ + "The item that will be in the players offhand." + ], + "children": { + "material": { + "type": "STRING", + "description": [ + "The item type." + ], + "default": "AIR", + "constraints": { + "enum": [ + "AIR", + "STONE", + "GRANITE", + "POLISHED_GRANITE", + "DIORITE", + "POLISHED_DIORITE", + "ANDESITE", + "POLISHED_ANDESITE", + "DEEPSLATE", + "COBBLED_DEEPSLATE", + "POLISHED_DEEPSLATE", + "CALCITE", + "TUFF", + "DRIPSTONE_BLOCK", + "GRASS_BLOCK", + "DIRT", + "COARSE_DIRT", + "PODZOL", + "ROOTED_DIRT", + "CRIMSON_NYLIUM", + "WARPED_NYLIUM", + "COBBLESTONE", + "OAK_PLANKS", + "SPRUCE_PLANKS", + "BIRCH_PLANKS", + "JUNGLE_PLANKS", + "ACACIA_PLANKS", + "DARK_OAK_PLANKS", + "CRIMSON_PLANKS", + "WARPED_PLANKS", + "OAK_SAPLING", + "SPRUCE_SAPLING", + "BIRCH_SAPLING", + "JUNGLE_SAPLING", + "ACACIA_SAPLING", + "DARK_OAK_SAPLING", + "BEDROCK", + "SAND", + "RED_SAND", + "GRAVEL", + "COAL_ORE", + "DEEPSLATE_COAL_ORE", + "IRON_ORE", + "DEEPSLATE_IRON_ORE", + "COPPER_ORE", + "DEEPSLATE_COPPER_ORE", + "GOLD_ORE", + "DEEPSLATE_GOLD_ORE", + "REDSTONE_ORE", + "DEEPSLATE_REDSTONE_ORE", + "EMERALD_ORE", + "DEEPSLATE_EMERALD_ORE", + "LAPIS_ORE", + "DEEPSLATE_LAPIS_ORE", + "DIAMOND_ORE", + "DEEPSLATE_DIAMOND_ORE", + "NETHER_GOLD_ORE", + "NETHER_QUARTZ_ORE", + "ANCIENT_DEBRIS", + "COAL_BLOCK", + "RAW_IRON_BLOCK", + "RAW_COPPER_BLOCK", + "RAW_GOLD_BLOCK", + "AMETHYST_BLOCK", + "BUDDING_AMETHYST", + "IRON_BLOCK", + "COPPER_BLOCK", + "GOLD_BLOCK", + "DIAMOND_BLOCK", + "NETHERITE_BLOCK", + "EXPOSED_COPPER", + "WEATHERED_COPPER", + "OXIDIZED_COPPER", + "CUT_COPPER", + "EXPOSED_CUT_COPPER", + "WEATHERED_CUT_COPPER", + "OXIDIZED_CUT_COPPER", + "CUT_COPPER_STAIRS", + "EXPOSED_CUT_COPPER_STAIRS", + "WEATHERED_CUT_COPPER_STAIRS", + "OXIDIZED_CUT_COPPER_STAIRS", + "CUT_COPPER_SLAB", + "EXPOSED_CUT_COPPER_SLAB", + "WEATHERED_CUT_COPPER_SLAB", + "OXIDIZED_CUT_COPPER_SLAB", + "WAXED_COPPER_BLOCK", + "WAXED_EXPOSED_COPPER", + "WAXED_WEATHERED_COPPER", + "WAXED_OXIDIZED_COPPER", + "WAXED_CUT_COPPER", + "WAXED_EXPOSED_CUT_COPPER", + "WAXED_WEATHERED_CUT_COPPER", + "WAXED_OXIDIZED_CUT_COPPER", + "WAXED_CUT_COPPER_STAIRS", + "WAXED_EXPOSED_CUT_COPPER_STAIRS", + "WAXED_WEATHERED_CUT_COPPER_STAIRS", + "WAXED_OXIDIZED_CUT_COPPER_STAIRS", + "WAXED_CUT_COPPER_SLAB", + "WAXED_EXPOSED_CUT_COPPER_SLAB", + "WAXED_WEATHERED_CUT_COPPER_SLAB", + "WAXED_OXIDIZED_CUT_COPPER_SLAB", + "OAK_LOG", + "SPRUCE_LOG", + "BIRCH_LOG", + "JUNGLE_LOG", + "ACACIA_LOG", + "DARK_OAK_LOG", + "CRIMSON_STEM", + "WARPED_STEM", + "STRIPPED_OAK_LOG", + "STRIPPED_SPRUCE_LOG", + "STRIPPED_BIRCH_LOG", + "STRIPPED_JUNGLE_LOG", + "STRIPPED_ACACIA_LOG", + "STRIPPED_DARK_OAK_LOG", + "STRIPPED_CRIMSON_STEM", + "STRIPPED_WARPED_STEM", + "STRIPPED_OAK_WOOD", + "STRIPPED_SPRUCE_WOOD", + "STRIPPED_BIRCH_WOOD", + "STRIPPED_JUNGLE_WOOD", + "STRIPPED_ACACIA_WOOD", + "STRIPPED_DARK_OAK_WOOD", + "STRIPPED_CRIMSON_HYPHAE", + "STRIPPED_WARPED_HYPHAE", + "OAK_WOOD", + "SPRUCE_WOOD", + "BIRCH_WOOD", + "JUNGLE_WOOD", + "ACACIA_WOOD", + "DARK_OAK_WOOD", + "CRIMSON_HYPHAE", + "WARPED_HYPHAE", + "OAK_LEAVES", + "SPRUCE_LEAVES", + "BIRCH_LEAVES", + "JUNGLE_LEAVES", + "ACACIA_LEAVES", + "DARK_OAK_LEAVES", + "AZALEA_LEAVES", + "FLOWERING_AZALEA_LEAVES", + "SPONGE", + "WET_SPONGE", + "GLASS", + "TINTED_GLASS", + "LAPIS_BLOCK", + "SANDSTONE", + "CHISELED_SANDSTONE", + "CUT_SANDSTONE", + "COBWEB", + "GRASS", + "FERN", + "AZALEA", + "FLOWERING_AZALEA", + "DEAD_BUSH", + "SEAGRASS", + "SEA_PICKLE", + "WHITE_WOOL", + "ORANGE_WOOL", + "MAGENTA_WOOL", + "LIGHT_BLUE_WOOL", + "YELLOW_WOOL", + "LIME_WOOL", + "PINK_WOOL", + "GRAY_WOOL", + "LIGHT_GRAY_WOOL", + "CYAN_WOOL", + "PURPLE_WOOL", + "BLUE_WOOL", + "BROWN_WOOL", + "GREEN_WOOL", + "RED_WOOL", + "BLACK_WOOL", + "DANDELION", + "POPPY", + "BLUE_ORCHID", + "ALLIUM", + "AZURE_BLUET", + "RED_TULIP", + "ORANGE_TULIP", + "WHITE_TULIP", + "PINK_TULIP", + "OXEYE_DAISY", + "CORNFLOWER", + "LILY_OF_THE_VALLEY", + "WITHER_ROSE", + "SPORE_BLOSSOM", + "BROWN_MUSHROOM", + "RED_MUSHROOM", + "CRIMSON_FUNGUS", + "WARPED_FUNGUS", + "CRIMSON_ROOTS", + "WARPED_ROOTS", + "NETHER_SPROUTS", + "WEEPING_VINES", + "TWISTING_VINES", + "SUGAR_CANE", + "KELP", + "MOSS_CARPET", + "MOSS_BLOCK", + "HANGING_ROOTS", + "BIG_DRIPLEAF", + "SMALL_DRIPLEAF", + "BAMBOO", + "OAK_SLAB", + "SPRUCE_SLAB", + "BIRCH_SLAB", + "JUNGLE_SLAB", + "ACACIA_SLAB", + "DARK_OAK_SLAB", + "CRIMSON_SLAB", + "WARPED_SLAB", + "STONE_SLAB", + "SMOOTH_STONE_SLAB", + "SANDSTONE_SLAB", + "CUT_SANDSTONE_SLAB", + "PETRIFIED_OAK_SLAB", + "COBBLESTONE_SLAB", + "BRICK_SLAB", + "STONE_BRICK_SLAB", + "NETHER_BRICK_SLAB", + "QUARTZ_SLAB", + "RED_SANDSTONE_SLAB", + "CUT_RED_SANDSTONE_SLAB", + "PURPUR_SLAB", + "PRISMARINE_SLAB", + "PRISMARINE_BRICK_SLAB", + "DARK_PRISMARINE_SLAB", + "SMOOTH_QUARTZ", + "SMOOTH_RED_SANDSTONE", + "SMOOTH_SANDSTONE", + "SMOOTH_STONE", + "BRICKS", + "BOOKSHELF", + "MOSSY_COBBLESTONE", + "OBSIDIAN", + "TORCH", + "END_ROD", + "CHORUS_PLANT", + "CHORUS_FLOWER", + "PURPUR_BLOCK", + "PURPUR_PILLAR", + "PURPUR_STAIRS", + "SPAWNER", + "OAK_STAIRS", + "CHEST", + "CRAFTING_TABLE", + "FARMLAND", + "FURNACE", + "LADDER", + "COBBLESTONE_STAIRS", + "SNOW", + "ICE", + "SNOW_BLOCK", + "CACTUS", + "CLAY", + "JUKEBOX", + "OAK_FENCE", + "SPRUCE_FENCE", + "BIRCH_FENCE", + "JUNGLE_FENCE", + "ACACIA_FENCE", + "DARK_OAK_FENCE", + "CRIMSON_FENCE", + "WARPED_FENCE", + "PUMPKIN", + "CARVED_PUMPKIN", + "JACK_O_LANTERN", + "NETHERRACK", + "SOUL_SAND", + "SOUL_SOIL", + "BASALT", + "POLISHED_BASALT", + "SMOOTH_BASALT", + "SOUL_TORCH", + "GLOWSTONE", + "INFESTED_STONE", + "INFESTED_COBBLESTONE", + "INFESTED_STONE_BRICKS", + "INFESTED_MOSSY_STONE_BRICKS", + "INFESTED_CRACKED_STONE_BRICKS", + "INFESTED_CHISELED_STONE_BRICKS", + "INFESTED_DEEPSLATE", + "STONE_BRICKS", + "MOSSY_STONE_BRICKS", + "CRACKED_STONE_BRICKS", + "CHISELED_STONE_BRICKS", + "DEEPSLATE_BRICKS", + "CRACKED_DEEPSLATE_BRICKS", + "DEEPSLATE_TILES", + "CRACKED_DEEPSLATE_TILES", + "CHISELED_DEEPSLATE", + "BROWN_MUSHROOM_BLOCK", + "RED_MUSHROOM_BLOCK", + "MUSHROOM_STEM", + "IRON_BARS", + "CHAIN", + "GLASS_PANE", + "MELON", + "VINE", + "GLOW_LICHEN", + "BRICK_STAIRS", + "STONE_BRICK_STAIRS", + "MYCELIUM", + "LILY_PAD", + "NETHER_BRICKS", + "CRACKED_NETHER_BRICKS", + "CHISELED_NETHER_BRICKS", + "NETHER_BRICK_FENCE", + "NETHER_BRICK_STAIRS", + "ENCHANTING_TABLE", + "END_PORTAL_FRAME", + "END_STONE", + "END_STONE_BRICKS", + "DRAGON_EGG", + "SANDSTONE_STAIRS", + "ENDER_CHEST", + "EMERALD_BLOCK", + "SPRUCE_STAIRS", + "BIRCH_STAIRS", + "JUNGLE_STAIRS", + "CRIMSON_STAIRS", + "WARPED_STAIRS", + "COMMAND_BLOCK", + "BEACON", + "COBBLESTONE_WALL", + "MOSSY_COBBLESTONE_WALL", + "BRICK_WALL", + "PRISMARINE_WALL", + "RED_SANDSTONE_WALL", + "MOSSY_STONE_BRICK_WALL", + "GRANITE_WALL", + "STONE_BRICK_WALL", + "NETHER_BRICK_WALL", + "ANDESITE_WALL", + "RED_NETHER_BRICK_WALL", + "SANDSTONE_WALL", + "END_STONE_BRICK_WALL", + "DIORITE_WALL", + "BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_WALL", + "POLISHED_BLACKSTONE_BRICK_WALL", + "COBBLED_DEEPSLATE_WALL", + "POLISHED_DEEPSLATE_WALL", + "DEEPSLATE_BRICK_WALL", + "DEEPSLATE_TILE_WALL", + "ANVIL", + "CHIPPED_ANVIL", + "DAMAGED_ANVIL", + "CHISELED_QUARTZ_BLOCK", + "QUARTZ_BLOCK", + "QUARTZ_BRICKS", + "QUARTZ_PILLAR", + "QUARTZ_STAIRS", + "WHITE_TERRACOTTA", + "ORANGE_TERRACOTTA", + "MAGENTA_TERRACOTTA", + "LIGHT_BLUE_TERRACOTTA", + "YELLOW_TERRACOTTA", + "LIME_TERRACOTTA", + "PINK_TERRACOTTA", + "GRAY_TERRACOTTA", + "LIGHT_GRAY_TERRACOTTA", + "CYAN_TERRACOTTA", + "PURPLE_TERRACOTTA", + "BLUE_TERRACOTTA", + "BROWN_TERRACOTTA", + "GREEN_TERRACOTTA", + "RED_TERRACOTTA", + "BLACK_TERRACOTTA", + "BARRIER", + "LIGHT", + "HAY_BLOCK", + "WHITE_CARPET", + "ORANGE_CARPET", + "MAGENTA_CARPET", + "LIGHT_BLUE_CARPET", + "YELLOW_CARPET", + "LIME_CARPET", + "PINK_CARPET", + "GRAY_CARPET", + "LIGHT_GRAY_CARPET", + "CYAN_CARPET", + "PURPLE_CARPET", + "BLUE_CARPET", + "BROWN_CARPET", + "GREEN_CARPET", + "RED_CARPET", + "BLACK_CARPET", + "TERRACOTTA", + "PACKED_ICE", + "ACACIA_STAIRS", + "DARK_OAK_STAIRS", + "DIRT_PATH", + "SUNFLOWER", + "LILAC", + "ROSE_BUSH", + "PEONY", + "TALL_GRASS", + "LARGE_FERN", + "WHITE_STAINED_GLASS", + "ORANGE_STAINED_GLASS", + "MAGENTA_STAINED_GLASS", + "LIGHT_BLUE_STAINED_GLASS", + "YELLOW_STAINED_GLASS", + "LIME_STAINED_GLASS", + "PINK_STAINED_GLASS", + "GRAY_STAINED_GLASS", + "LIGHT_GRAY_STAINED_GLASS", + "CYAN_STAINED_GLASS", + "PURPLE_STAINED_GLASS", + "BLUE_STAINED_GLASS", + "BROWN_STAINED_GLASS", + "GREEN_STAINED_GLASS", + "RED_STAINED_GLASS", + "BLACK_STAINED_GLASS", + "WHITE_STAINED_GLASS_PANE", + "ORANGE_STAINED_GLASS_PANE", + "MAGENTA_STAINED_GLASS_PANE", + "LIGHT_BLUE_STAINED_GLASS_PANE", + "YELLOW_STAINED_GLASS_PANE", + "LIME_STAINED_GLASS_PANE", + "PINK_STAINED_GLASS_PANE", + "GRAY_STAINED_GLASS_PANE", + "LIGHT_GRAY_STAINED_GLASS_PANE", + "CYAN_STAINED_GLASS_PANE", + "PURPLE_STAINED_GLASS_PANE", + "BLUE_STAINED_GLASS_PANE", + "BROWN_STAINED_GLASS_PANE", + "GREEN_STAINED_GLASS_PANE", + "RED_STAINED_GLASS_PANE", + "BLACK_STAINED_GLASS_PANE", + "PRISMARINE", + "PRISMARINE_BRICKS", + "DARK_PRISMARINE", + "PRISMARINE_STAIRS", + "PRISMARINE_BRICK_STAIRS", + "DARK_PRISMARINE_STAIRS", + "SEA_LANTERN", + "RED_SANDSTONE", + "CHISELED_RED_SANDSTONE", + "CUT_RED_SANDSTONE", + "RED_SANDSTONE_STAIRS", + "REPEATING_COMMAND_BLOCK", + "CHAIN_COMMAND_BLOCK", + "MAGMA_BLOCK", + "NETHER_WART_BLOCK", + "WARPED_WART_BLOCK", + "RED_NETHER_BRICKS", + "BONE_BLOCK", + "STRUCTURE_VOID", + "SHULKER_BOX", + "WHITE_SHULKER_BOX", + "ORANGE_SHULKER_BOX", + "MAGENTA_SHULKER_BOX", + "LIGHT_BLUE_SHULKER_BOX", + "YELLOW_SHULKER_BOX", + "LIME_SHULKER_BOX", + "PINK_SHULKER_BOX", + "GRAY_SHULKER_BOX", + "LIGHT_GRAY_SHULKER_BOX", + "CYAN_SHULKER_BOX", + "PURPLE_SHULKER_BOX", + "BLUE_SHULKER_BOX", + "BROWN_SHULKER_BOX", + "GREEN_SHULKER_BOX", + "RED_SHULKER_BOX", + "BLACK_SHULKER_BOX", + "WHITE_GLAZED_TERRACOTTA", + "ORANGE_GLAZED_TERRACOTTA", + "MAGENTA_GLAZED_TERRACOTTA", + "LIGHT_BLUE_GLAZED_TERRACOTTA", + "YELLOW_GLAZED_TERRACOTTA", + "LIME_GLAZED_TERRACOTTA", + "PINK_GLAZED_TERRACOTTA", + "GRAY_GLAZED_TERRACOTTA", + "LIGHT_GRAY_GLAZED_TERRACOTTA", + "CYAN_GLAZED_TERRACOTTA", + "PURPLE_GLAZED_TERRACOTTA", + "BLUE_GLAZED_TERRACOTTA", + "BROWN_GLAZED_TERRACOTTA", + "GREEN_GLAZED_TERRACOTTA", + "RED_GLAZED_TERRACOTTA", + "BLACK_GLAZED_TERRACOTTA", + "WHITE_CONCRETE", + "ORANGE_CONCRETE", + "MAGENTA_CONCRETE", + "LIGHT_BLUE_CONCRETE", + "YELLOW_CONCRETE", + "LIME_CONCRETE", + "PINK_CONCRETE", + "GRAY_CONCRETE", + "LIGHT_GRAY_CONCRETE", + "CYAN_CONCRETE", + "PURPLE_CONCRETE", + "BLUE_CONCRETE", + "BROWN_CONCRETE", + "GREEN_CONCRETE", + "RED_CONCRETE", + "BLACK_CONCRETE", + "WHITE_CONCRETE_POWDER", + "ORANGE_CONCRETE_POWDER", + "MAGENTA_CONCRETE_POWDER", + "LIGHT_BLUE_CONCRETE_POWDER", + "YELLOW_CONCRETE_POWDER", + "LIME_CONCRETE_POWDER", + "PINK_CONCRETE_POWDER", + "GRAY_CONCRETE_POWDER", + "LIGHT_GRAY_CONCRETE_POWDER", + "CYAN_CONCRETE_POWDER", + "PURPLE_CONCRETE_POWDER", + "BLUE_CONCRETE_POWDER", + "BROWN_CONCRETE_POWDER", + "GREEN_CONCRETE_POWDER", + "RED_CONCRETE_POWDER", + "BLACK_CONCRETE_POWDER", + "TURTLE_EGG", + "DEAD_TUBE_CORAL_BLOCK", + "DEAD_BRAIN_CORAL_BLOCK", + "DEAD_BUBBLE_CORAL_BLOCK", + "DEAD_FIRE_CORAL_BLOCK", + "DEAD_HORN_CORAL_BLOCK", + "TUBE_CORAL_BLOCK", + "BRAIN_CORAL_BLOCK", + "BUBBLE_CORAL_BLOCK", + "FIRE_CORAL_BLOCK", + "HORN_CORAL_BLOCK", + "TUBE_CORAL", + "BRAIN_CORAL", + "BUBBLE_CORAL", + "FIRE_CORAL", + "HORN_CORAL", + "DEAD_BRAIN_CORAL", + "DEAD_BUBBLE_CORAL", + "DEAD_FIRE_CORAL", + "DEAD_HORN_CORAL", + "DEAD_TUBE_CORAL", + "TUBE_CORAL_FAN", + "BRAIN_CORAL_FAN", + "BUBBLE_CORAL_FAN", + "FIRE_CORAL_FAN", + "HORN_CORAL_FAN", + "DEAD_TUBE_CORAL_FAN", + "DEAD_BRAIN_CORAL_FAN", + "DEAD_BUBBLE_CORAL_FAN", + "DEAD_FIRE_CORAL_FAN", + "DEAD_HORN_CORAL_FAN", + "BLUE_ICE", + "CONDUIT", + "POLISHED_GRANITE_STAIRS", + "SMOOTH_RED_SANDSTONE_STAIRS", + "MOSSY_STONE_BRICK_STAIRS", + "POLISHED_DIORITE_STAIRS", + "MOSSY_COBBLESTONE_STAIRS", + "END_STONE_BRICK_STAIRS", + "STONE_STAIRS", + "SMOOTH_SANDSTONE_STAIRS", + "SMOOTH_QUARTZ_STAIRS", + "GRANITE_STAIRS", + "ANDESITE_STAIRS", + "RED_NETHER_BRICK_STAIRS", + "POLISHED_ANDESITE_STAIRS", + "DIORITE_STAIRS", + "COBBLED_DEEPSLATE_STAIRS", + "POLISHED_DEEPSLATE_STAIRS", + "DEEPSLATE_BRICK_STAIRS", + "DEEPSLATE_TILE_STAIRS", + "POLISHED_GRANITE_SLAB", + "SMOOTH_RED_SANDSTONE_SLAB", + "MOSSY_STONE_BRICK_SLAB", + "POLISHED_DIORITE_SLAB", + "MOSSY_COBBLESTONE_SLAB", + "END_STONE_BRICK_SLAB", + "SMOOTH_SANDSTONE_SLAB", + "SMOOTH_QUARTZ_SLAB", + "GRANITE_SLAB", + "ANDESITE_SLAB", + "RED_NETHER_BRICK_SLAB", + "POLISHED_ANDESITE_SLAB", + "DIORITE_SLAB", + "COBBLED_DEEPSLATE_SLAB", + "POLISHED_DEEPSLATE_SLAB", + "DEEPSLATE_BRICK_SLAB", + "DEEPSLATE_TILE_SLAB", + "SCAFFOLDING", + "REDSTONE", + "REDSTONE_TORCH", + "REDSTONE_BLOCK", + "REPEATER", + "COMPARATOR", + "PISTON", + "STICKY_PISTON", + "SLIME_BLOCK", + "HONEY_BLOCK", + "OBSERVER", + "HOPPER", + "DISPENSER", + "DROPPER", + "LECTERN", + "TARGET", + "LEVER", + "LIGHTNING_ROD", + "DAYLIGHT_DETECTOR", + "SCULK_SENSOR", + "TRIPWIRE_HOOK", + "TRAPPED_CHEST", + "TNT", + "REDSTONE_LAMP", + "NOTE_BLOCK", + "STONE_BUTTON", + "POLISHED_BLACKSTONE_BUTTON", + "OAK_BUTTON", + "SPRUCE_BUTTON", + "BIRCH_BUTTON", + "JUNGLE_BUTTON", + "ACACIA_BUTTON", + "DARK_OAK_BUTTON", + "CRIMSON_BUTTON", + "WARPED_BUTTON", + "STONE_PRESSURE_PLATE", + "POLISHED_BLACKSTONE_PRESSURE_PLATE", + "LIGHT_WEIGHTED_PRESSURE_PLATE", + "HEAVY_WEIGHTED_PRESSURE_PLATE", + "OAK_PRESSURE_PLATE", + "SPRUCE_PRESSURE_PLATE", + "BIRCH_PRESSURE_PLATE", + "JUNGLE_PRESSURE_PLATE", + "ACACIA_PRESSURE_PLATE", + "DARK_OAK_PRESSURE_PLATE", + "CRIMSON_PRESSURE_PLATE", + "WARPED_PRESSURE_PLATE", + "IRON_DOOR", + "OAK_DOOR", + "SPRUCE_DOOR", + "BIRCH_DOOR", + "JUNGLE_DOOR", + "ACACIA_DOOR", + "DARK_OAK_DOOR", + "CRIMSON_DOOR", + "WARPED_DOOR", + "IRON_TRAPDOOR", + "OAK_TRAPDOOR", + "SPRUCE_TRAPDOOR", + "BIRCH_TRAPDOOR", + "JUNGLE_TRAPDOOR", + "ACACIA_TRAPDOOR", + "DARK_OAK_TRAPDOOR", + "CRIMSON_TRAPDOOR", + "WARPED_TRAPDOOR", + "OAK_FENCE_GATE", + "SPRUCE_FENCE_GATE", + "BIRCH_FENCE_GATE", + "JUNGLE_FENCE_GATE", + "ACACIA_FENCE_GATE", + "DARK_OAK_FENCE_GATE", + "CRIMSON_FENCE_GATE", + "WARPED_FENCE_GATE", + "POWERED_RAIL", + "DETECTOR_RAIL", + "RAIL", + "ACTIVATOR_RAIL", + "SADDLE", + "MINECART", + "CHEST_MINECART", + "FURNACE_MINECART", + "TNT_MINECART", + "HOPPER_MINECART", + "CARROT_ON_A_STICK", + "WARPED_FUNGUS_ON_A_STICK", + "ELYTRA", + "OAK_BOAT", + "SPRUCE_BOAT", + "BIRCH_BOAT", + "JUNGLE_BOAT", + "ACACIA_BOAT", + "DARK_OAK_BOAT", + "STRUCTURE_BLOCK", + "JIGSAW", + "TURTLE_HELMET", + "SCUTE", + "FLINT_AND_STEEL", + "APPLE", + "BOW", + "ARROW", + "COAL", + "CHARCOAL", + "DIAMOND", + "EMERALD", + "LAPIS_LAZULI", + "QUARTZ", + "AMETHYST_SHARD", + "RAW_IRON", + "IRON_INGOT", + "RAW_COPPER", + "COPPER_INGOT", + "RAW_GOLD", + "GOLD_INGOT", + "NETHERITE_INGOT", + "NETHERITE_SCRAP", + "WOODEN_SWORD", + "WOODEN_SHOVEL", + "WOODEN_PICKAXE", + "WOODEN_AXE", + "WOODEN_HOE", + "STONE_SWORD", + "STONE_SHOVEL", + "STONE_PICKAXE", + "STONE_AXE", + "STONE_HOE", + "GOLDEN_SWORD", + "GOLDEN_SHOVEL", + "GOLDEN_PICKAXE", + "GOLDEN_AXE", + "GOLDEN_HOE", + "IRON_SWORD", + "IRON_SHOVEL", + "IRON_PICKAXE", + "IRON_AXE", + "IRON_HOE", + "DIAMOND_SWORD", + "DIAMOND_SHOVEL", + "DIAMOND_PICKAXE", + "DIAMOND_AXE", + "DIAMOND_HOE", + "NETHERITE_SWORD", + "NETHERITE_SHOVEL", + "NETHERITE_PICKAXE", + "NETHERITE_AXE", + "NETHERITE_HOE", + "STICK", + "BOWL", + "MUSHROOM_STEW", + "STRING", + "FEATHER", + "GUNPOWDER", + "WHEAT_SEEDS", + "WHEAT", + "BREAD", + "LEATHER_HELMET", + "LEATHER_CHESTPLATE", + "LEATHER_LEGGINGS", + "LEATHER_BOOTS", + "CHAINMAIL_HELMET", + "CHAINMAIL_CHESTPLATE", + "CHAINMAIL_LEGGINGS", + "CHAINMAIL_BOOTS", + "IRON_HELMET", + "IRON_CHESTPLATE", + "IRON_LEGGINGS", + "IRON_BOOTS", + "DIAMOND_HELMET", + "DIAMOND_CHESTPLATE", + "DIAMOND_LEGGINGS", + "DIAMOND_BOOTS", + "GOLDEN_HELMET", + "GOLDEN_CHESTPLATE", + "GOLDEN_LEGGINGS", + "GOLDEN_BOOTS", + "NETHERITE_HELMET", + "NETHERITE_CHESTPLATE", + "NETHERITE_LEGGINGS", + "NETHERITE_BOOTS", + "FLINT", + "PORKCHOP", + "COOKED_PORKCHOP", + "PAINTING", + "GOLDEN_APPLE", + "ENCHANTED_GOLDEN_APPLE", + "OAK_SIGN", + "SPRUCE_SIGN", + "BIRCH_SIGN", + "JUNGLE_SIGN", + "ACACIA_SIGN", + "DARK_OAK_SIGN", + "CRIMSON_SIGN", + "WARPED_SIGN", + "BUCKET", + "WATER_BUCKET", + "LAVA_BUCKET", + "POWDER_SNOW_BUCKET", + "SNOWBALL", + "LEATHER", + "MILK_BUCKET", + "PUFFERFISH_BUCKET", + "SALMON_BUCKET", + "COD_BUCKET", + "TROPICAL_FISH_BUCKET", + "AXOLOTL_BUCKET", + "BRICK", + "CLAY_BALL", + "DRIED_KELP_BLOCK", + "PAPER", + "BOOK", + "SLIME_BALL", + "EGG", + "COMPASS", + "BUNDLE", + "FISHING_ROD", + "CLOCK", + "SPYGLASS", + "GLOWSTONE_DUST", + "COD", + "SALMON", + "TROPICAL_FISH", + "PUFFERFISH", + "COOKED_COD", + "COOKED_SALMON", + "INK_SAC", + "GLOW_INK_SAC", + "COCOA_BEANS", + "WHITE_DYE", + "ORANGE_DYE", + "MAGENTA_DYE", + "LIGHT_BLUE_DYE", + "YELLOW_DYE", + "LIME_DYE", + "PINK_DYE", + "GRAY_DYE", + "LIGHT_GRAY_DYE", + "CYAN_DYE", + "PURPLE_DYE", + "BLUE_DYE", + "BROWN_DYE", + "GREEN_DYE", + "RED_DYE", + "BLACK_DYE", + "BONE_MEAL", + "BONE", + "SUGAR", + "CAKE", + "WHITE_BED", + "ORANGE_BED", + "MAGENTA_BED", + "LIGHT_BLUE_BED", + "YELLOW_BED", + "LIME_BED", + "PINK_BED", + "GRAY_BED", + "LIGHT_GRAY_BED", + "CYAN_BED", + "PURPLE_BED", + "BLUE_BED", + "BROWN_BED", + "GREEN_BED", + "RED_BED", + "BLACK_BED", + "COOKIE", + "FILLED_MAP", + "SHEARS", + "MELON_SLICE", + "DRIED_KELP", + "PUMPKIN_SEEDS", + "MELON_SEEDS", + "BEEF", + "COOKED_BEEF", + "CHICKEN", + "COOKED_CHICKEN", + "ROTTEN_FLESH", + "ENDER_PEARL", + "BLAZE_ROD", + "GHAST_TEAR", + "GOLD_NUGGET", + "NETHER_WART", + "POTION", + "GLASS_BOTTLE", + "SPIDER_EYE", + "FERMENTED_SPIDER_EYE", + "BLAZE_POWDER", + "MAGMA_CREAM", + "BREWING_STAND", + "CAULDRON", + "ENDER_EYE", + "GLISTERING_MELON_SLICE", + "AXOLOTL_SPAWN_EGG", + "BAT_SPAWN_EGG", + "BEE_SPAWN_EGG", + "BLAZE_SPAWN_EGG", + "CAT_SPAWN_EGG", + "CAVE_SPIDER_SPAWN_EGG", + "CHICKEN_SPAWN_EGG", + "COD_SPAWN_EGG", + "COW_SPAWN_EGG", + "CREEPER_SPAWN_EGG", + "DOLPHIN_SPAWN_EGG", + "DONKEY_SPAWN_EGG", + "DROWNED_SPAWN_EGG", + "ELDER_GUARDIAN_SPAWN_EGG", + "ENDERMAN_SPAWN_EGG", + "ENDERMITE_SPAWN_EGG", + "EVOKER_SPAWN_EGG", + "FOX_SPAWN_EGG", + "GHAST_SPAWN_EGG", + "GLOW_SQUID_SPAWN_EGG", + "GOAT_SPAWN_EGG", + "GUARDIAN_SPAWN_EGG", + "HOGLIN_SPAWN_EGG", + "HORSE_SPAWN_EGG", + "HUSK_SPAWN_EGG", + "LLAMA_SPAWN_EGG", + "MAGMA_CUBE_SPAWN_EGG", + "MOOSHROOM_SPAWN_EGG", + "MULE_SPAWN_EGG", + "OCELOT_SPAWN_EGG", + "PANDA_SPAWN_EGG", + "PARROT_SPAWN_EGG", + "PHANTOM_SPAWN_EGG", + "PIG_SPAWN_EGG", + "PIGLIN_SPAWN_EGG", + "PIGLIN_BRUTE_SPAWN_EGG", + "PILLAGER_SPAWN_EGG", + "POLAR_BEAR_SPAWN_EGG", + "PUFFERFISH_SPAWN_EGG", + "RABBIT_SPAWN_EGG", + "RAVAGER_SPAWN_EGG", + "SALMON_SPAWN_EGG", + "SHEEP_SPAWN_EGG", + "SHULKER_SPAWN_EGG", + "SILVERFISH_SPAWN_EGG", + "SKELETON_SPAWN_EGG", + "SKELETON_HORSE_SPAWN_EGG", + "SLIME_SPAWN_EGG", + "SPIDER_SPAWN_EGG", + "SQUID_SPAWN_EGG", + "STRAY_SPAWN_EGG", + "STRIDER_SPAWN_EGG", + "TRADER_LLAMA_SPAWN_EGG", + "TROPICAL_FISH_SPAWN_EGG", + "TURTLE_SPAWN_EGG", + "VEX_SPAWN_EGG", + "VILLAGER_SPAWN_EGG", + "VINDICATOR_SPAWN_EGG", + "WANDERING_TRADER_SPAWN_EGG", + "WITCH_SPAWN_EGG", + "WITHER_SKELETON_SPAWN_EGG", + "WOLF_SPAWN_EGG", + "ZOGLIN_SPAWN_EGG", + "ZOMBIE_SPAWN_EGG", + "ZOMBIE_HORSE_SPAWN_EGG", + "ZOMBIE_VILLAGER_SPAWN_EGG", + "ZOMBIFIED_PIGLIN_SPAWN_EGG", + "EXPERIENCE_BOTTLE", + "FIRE_CHARGE", + "WRITABLE_BOOK", + "WRITTEN_BOOK", + "ITEM_FRAME", + "GLOW_ITEM_FRAME", + "FLOWER_POT", + "CARROT", + "POTATO", + "BAKED_POTATO", + "POISONOUS_POTATO", + "MAP", + "GOLDEN_CARROT", + "SKELETON_SKULL", + "WITHER_SKELETON_SKULL", + "PLAYER_HEAD", + "ZOMBIE_HEAD", + "CREEPER_HEAD", + "DRAGON_HEAD", + "NETHER_STAR", + "PUMPKIN_PIE", + "FIREWORK_ROCKET", + "FIREWORK_STAR", + "ENCHANTED_BOOK", + "NETHER_BRICK", + "PRISMARINE_SHARD", + "PRISMARINE_CRYSTALS", + "RABBIT", + "COOKED_RABBIT", + "RABBIT_STEW", + "RABBIT_FOOT", + "RABBIT_HIDE", + "ARMOR_STAND", + "IRON_HORSE_ARMOR", + "GOLDEN_HORSE_ARMOR", + "DIAMOND_HORSE_ARMOR", + "LEATHER_HORSE_ARMOR", + "LEAD", + "NAME_TAG", + "COMMAND_BLOCK_MINECART", + "MUTTON", + "COOKED_MUTTON", + "WHITE_BANNER", + "ORANGE_BANNER", + "MAGENTA_BANNER", + "LIGHT_BLUE_BANNER", + "YELLOW_BANNER", + "LIME_BANNER", + "PINK_BANNER", + "GRAY_BANNER", + "LIGHT_GRAY_BANNER", + "CYAN_BANNER", + "PURPLE_BANNER", + "BLUE_BANNER", + "BROWN_BANNER", + "GREEN_BANNER", + "RED_BANNER", + "BLACK_BANNER", + "END_CRYSTAL", + "CHORUS_FRUIT", + "POPPED_CHORUS_FRUIT", + "BEETROOT", + "BEETROOT_SEEDS", + "BEETROOT_SOUP", + "DRAGON_BREATH", + "SPLASH_POTION", + "SPECTRAL_ARROW", + "TIPPED_ARROW", + "LINGERING_POTION", + "SHIELD", + "TOTEM_OF_UNDYING", + "SHULKER_SHELL", + "IRON_NUGGET", + "KNOWLEDGE_BOOK", + "DEBUG_STICK", + "MUSIC_DISC_13", + "MUSIC_DISC_CAT", + "MUSIC_DISC_BLOCKS", + "MUSIC_DISC_CHIRP", + "MUSIC_DISC_FAR", + "MUSIC_DISC_MALL", + "MUSIC_DISC_MELLOHI", + "MUSIC_DISC_STAL", + "MUSIC_DISC_STRAD", + "MUSIC_DISC_WARD", + "MUSIC_DISC_11", + "MUSIC_DISC_WAIT", + "MUSIC_DISC_PIGSTEP", + "TRIDENT", + "PHANTOM_MEMBRANE", + "NAUTILUS_SHELL", + "HEART_OF_THE_SEA", + "CROSSBOW", + "SUSPICIOUS_STEW", + "LOOM", + "FLOWER_BANNER_PATTERN", + "CREEPER_BANNER_PATTERN", + "SKULL_BANNER_PATTERN", + "MOJANG_BANNER_PATTERN", + "GLOBE_BANNER_PATTERN", + "PIGLIN_BANNER_PATTERN", + "COMPOSTER", + "BARREL", + "SMOKER", + "BLAST_FURNACE", + "CARTOGRAPHY_TABLE", + "FLETCHING_TABLE", + "GRINDSTONE", + "SMITHING_TABLE", + "STONECUTTER", + "BELL", + "LANTERN", + "SOUL_LANTERN", + "SWEET_BERRIES", + "GLOW_BERRIES", + "CAMPFIRE", + "SOUL_CAMPFIRE", + "SHROOMLIGHT", + "HONEYCOMB", + "BEE_NEST", + "BEEHIVE", + "HONEY_BOTTLE", + "HONEYCOMB_BLOCK", + "LODESTONE", + "CRYING_OBSIDIAN", + "BLACKSTONE", + "BLACKSTONE_SLAB", + "BLACKSTONE_STAIRS", + "GILDED_BLACKSTONE", + "POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_SLAB", + "POLISHED_BLACKSTONE_STAIRS", + "CHISELED_POLISHED_BLACKSTONE", + "POLISHED_BLACKSTONE_BRICKS", + "POLISHED_BLACKSTONE_BRICK_SLAB", + "POLISHED_BLACKSTONE_BRICK_STAIRS", + "CRACKED_POLISHED_BLACKSTONE_BRICKS", + "RESPAWN_ANCHOR", + "CANDLE", + "WHITE_CANDLE", + "ORANGE_CANDLE", + "MAGENTA_CANDLE", + "LIGHT_BLUE_CANDLE", + "YELLOW_CANDLE", + "LIME_CANDLE", + "PINK_CANDLE", + "GRAY_CANDLE", + "LIGHT_GRAY_CANDLE", + "CYAN_CANDLE", + "PURPLE_CANDLE", + "BLUE_CANDLE", + "BROWN_CANDLE", + "GREEN_CANDLE", + "RED_CANDLE", + "BLACK_CANDLE", + "SMALL_AMETHYST_BUD", + "MEDIUM_AMETHYST_BUD", + "LARGE_AMETHYST_BUD", + "AMETHYST_CLUSTER", + "POINTED_DRIPSTONE", + "WATER", + "LAVA", + "TALL_SEAGRASS", + "PISTON_HEAD", + "MOVING_PISTON", + "WALL_TORCH", + "FIRE", + "SOUL_FIRE", + "REDSTONE_WIRE", + "OAK_WALL_SIGN", + "SPRUCE_WALL_SIGN", + "BIRCH_WALL_SIGN", + "ACACIA_WALL_SIGN", + "JUNGLE_WALL_SIGN", + "DARK_OAK_WALL_SIGN", + "REDSTONE_WALL_TORCH", + "SOUL_WALL_TORCH", + "NETHER_PORTAL", + "ATTACHED_PUMPKIN_STEM", + "ATTACHED_MELON_STEM", + "PUMPKIN_STEM", + "MELON_STEM", + "WATER_CAULDRON", + "LAVA_CAULDRON", + "POWDER_SNOW_CAULDRON", + "END_PORTAL", + "COCOA", + "TRIPWIRE", + "POTTED_OAK_SAPLING", + "POTTED_SPRUCE_SAPLING", + "POTTED_BIRCH_SAPLING", + "POTTED_JUNGLE_SAPLING", + "POTTED_ACACIA_SAPLING", + "POTTED_DARK_OAK_SAPLING", + "POTTED_FERN", + "POTTED_DANDELION", + "POTTED_POPPY", + "POTTED_BLUE_ORCHID", + "POTTED_ALLIUM", + "POTTED_AZURE_BLUET", + "POTTED_RED_TULIP", + "POTTED_ORANGE_TULIP", + "POTTED_WHITE_TULIP", + "POTTED_PINK_TULIP", + "POTTED_OXEYE_DAISY", + "POTTED_CORNFLOWER", + "POTTED_LILY_OF_THE_VALLEY", + "POTTED_WITHER_ROSE", + "POTTED_RED_MUSHROOM", + "POTTED_BROWN_MUSHROOM", + "POTTED_DEAD_BUSH", + "POTTED_CACTUS", + "CARROTS", + "POTATOES", + "SKELETON_WALL_SKULL", + "WITHER_SKELETON_WALL_SKULL", + "ZOMBIE_WALL_HEAD", + "PLAYER_WALL_HEAD", + "CREEPER_WALL_HEAD", + "DRAGON_WALL_HEAD", + "WHITE_WALL_BANNER", + "ORANGE_WALL_BANNER", + "MAGENTA_WALL_BANNER", + "LIGHT_BLUE_WALL_BANNER", + "YELLOW_WALL_BANNER", + "LIME_WALL_BANNER", + "PINK_WALL_BANNER", + "GRAY_WALL_BANNER", + "LIGHT_GRAY_WALL_BANNER", + "CYAN_WALL_BANNER", + "PURPLE_WALL_BANNER", + "BLUE_WALL_BANNER", + "BROWN_WALL_BANNER", + "GREEN_WALL_BANNER", + "RED_WALL_BANNER", + "BLACK_WALL_BANNER", + "BEETROOTS", + "END_GATEWAY", + "FROSTED_ICE", + "KELP_PLANT", + "DEAD_TUBE_CORAL_WALL_FAN", + "DEAD_BRAIN_CORAL_WALL_FAN", + "DEAD_BUBBLE_CORAL_WALL_FAN", + "DEAD_FIRE_CORAL_WALL_FAN", + "DEAD_HORN_CORAL_WALL_FAN", + "TUBE_CORAL_WALL_FAN", + "BRAIN_CORAL_WALL_FAN", + "BUBBLE_CORAL_WALL_FAN", + "FIRE_CORAL_WALL_FAN", + "HORN_CORAL_WALL_FAN", + "BAMBOO_SAPLING", + "POTTED_BAMBOO", + "VOID_AIR", + "CAVE_AIR", + "BUBBLE_COLUMN", + "SWEET_BERRY_BUSH", + "WEEPING_VINES_PLANT", + "TWISTING_VINES_PLANT", + "CRIMSON_WALL_SIGN", + "WARPED_WALL_SIGN", + "POTTED_CRIMSON_FUNGUS", + "POTTED_WARPED_FUNGUS", + "POTTED_CRIMSON_ROOTS", + "POTTED_WARPED_ROOTS", + "CANDLE_CAKE", + "WHITE_CANDLE_CAKE", + "ORANGE_CANDLE_CAKE", + "MAGENTA_CANDLE_CAKE", + "LIGHT_BLUE_CANDLE_CAKE", + "YELLOW_CANDLE_CAKE", + "LIME_CANDLE_CAKE", + "PINK_CANDLE_CAKE", + "GRAY_CANDLE_CAKE", + "LIGHT_GRAY_CANDLE_CAKE", + "CYAN_CANDLE_CAKE", + "PURPLE_CANDLE_CAKE", + "BLUE_CANDLE_CAKE", + "BROWN_CANDLE_CAKE", + "GREEN_CANDLE_CAKE", + "RED_CANDLE_CAKE", + "BLACK_CANDLE_CAKE", + "POWDER_SNOW", + "CAVE_VINES", + "CAVE_VINES_PLANT", + "BIG_DRIPLEAF_STEM", + "POTTED_AZALEA_BUSH", + "POTTED_FLOWERING_AZALEA_BUSH" + ] + } + }, + "amount": { + "type": "INTEGER", + "description": [ + "The amount." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "enchantments": { + "type": "LIST", + "description": [ + "The enchantments that will be applied to the item." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the enchantment.", + "", + "Valid values: The id of the enchantment as shown in the /enchant command without the minecraft:", + "For example: sharpness, knockback, power" + ] + }, + "level": { + "type": "INTEGER", + "description": [ + "The level of the enchantment. Allows over enchanting." + ], + "default": 1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + } + } + } + }, + "unbreakable": { + "type": "BOOLEAN", + "description": [ + "Whether the item takes durability damage or not." + ], + "default": false + }, + "placeOn": { + "type": "LIST", + "description": [ + "A list of blocks that this block can be placed on. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "canBreak": { + "type": "LIST", + "description": [ + "A list of blocks that this item can be break. Requires the feature GAMEMODE_ADVENTURE to work.", + "", + "Valid values: all minecraft block ids as seen in game with F3+h on without the minecraft:", + "For example: stone, granite, andesite, diamond_block" + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "effects": { + "type": "LIST", + "description": [ + "The potion effects that will be applied to players upon spawning." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "name": { + "type": "STRING", + "description": [ + "The name of the potion effect.", + "", + "Valid values: the name of the potion effect as seen in the /effect command without minecraft:", + "For example: invisibility, strength, haste" + ] + }, + "strength": { + "type": "INTEGER", + "description": [ + "The strength of the potion effect." + ], + "constraints": { + "maxValueInt": 255, + "minValueInt": 0 + } + }, + "duration": { + "type": "INTEGER", + "description": [ + "The duration of the potion effect in ticks. (20 ticks = 1 second)" + ], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "hidden": { + "type": "BOOLEAN", + "description": [ + "Whether the potion effect should be hidden from the player. This hides the particles and the icon." + ] + } + } + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "checkpoints": { + "type": "LIST", + "description": [ + "The checkpoints for the arena. Both normal checkpoints and finish points are defined here." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "label": { + "type": "STRING", + "description": [ + "The name of the checkpoint." + ] + }, + "lower": { + "type": "OBJECT", + "description": [ + "The lower corner of the checkpoint area." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "upper": { + "type": "OBJECT", + "description": [ + "The upper corner of the checkpoint area." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "spawn-rule": { + "type": "STRING", + "description": [ + "The spawn rule to use for this checkpoint when respawning or moving players." + ] + }, + "spawn-pool": { + "type": "STRING", + "description": [ + "The spawn pool to use for this checkpoint when respawning or moving players." + ] + }, + "move-player": { + "type": "BOOLEAN", + "description": [ + "Whether or not to teleport players to the spawn-rule/spawn-pool when they reach the checkpoint." + ], + "default": false + }, + "is-finish": { + "type": "BOOLEAN", + "description": [ + "Whether or not this checkpoint counts as a finish. If it does players will be placed into spectator mode upon reaching it." + ], + "default": false + } + } + } + }, + "points": { + "type": "OBJECT", + "description": [ + "The points that can be obtained by doing certain actions.", + "These points are always awarded top down with the last repeating.", + "For example when you set kill to 10, 5, and 0, the first player to get a kill will receive 10 points, the second 5, and every player after that will receive 0." + ], + "children": { + "kill": { + "type": "LIST", + "description": [ + "The points given to a player when they get a kill." + ], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "last-man-standing": { + "type": "LIST", + "description": [ + "The points given to a player for staying alive the longest." + ], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "checkpoints": { + "type": "MAP", + "description": [ + "The points given to a player for reaching a checkpoint.", + "", + "Valid keys: the label of a checkpoint defined in the checkpoints section." + ], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "pools": { + "type": "MAP", + "description": [ + "The points given to a player for reaching a checkpoint that is part of a spawn pool.", + "The first list represents the first checkpoint, the second the second checkpoint, etc", + "", + "Valid keys: the names of spawn pools as defined in the spawn-pools section." + ], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "LIST", + "description": [], + "items": { + "type": "INTEGER", + "description": [], + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + } + } + }, + "spawnRules": { + "type": "MAP", + "description": [ + "The spawn rules used by the arena. These rules are used by many different components to link multiple spawns together with a set of items.", + "There are two special spawn rules that are required for the operation of the plugin. These are:", + "initial - Used by the plugin to do the initial round of spawning.", + "spectator - Used by the plugin to spawn the spectators." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "reuse-spawns": { + "type": "BOOLEAN", + "description": [ + "Whether or not to reuse the spawns for different players." + ], + "default": true + }, + "reuse-individual": { + "type": "BOOLEAN", + "description": [ + "Whether or not to reuse the spawns for individual players.", + "When this is set a player will always use the same spawn after spawning there once." + ], + "default": false + }, + "spawns": { + "type": "LIST", + "description": [ + "The list of spawns that this spawn rule can pick from.", + "", + "Valid values: any spawn name defined in the spawns section." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "loadout": { + "type": "STRING", + "description": [ + "The loadout to use for players that are spawned using this spawn rule. Use none to not give them any items.", + "", + "Valid values: any loadout defined in the loadouts section or none." + ], + "default": "none" + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "features": { + "type": "LIST", + "description": [ + "The list of features that are enabled in the arena." + ], + "items": { + "type": "STRING", + "description": [], + "constraints": { + "enum": [ + "ALWAYS", + "RESPAWN", + "DEATH_MESSAGE", + "CHECKPOINTS", + "CHECKPOINT_SOUND", + "CHECKPOINT_MESSAGE", + "PVP", + "NO_FALL", + "SHOW_TIMER", + "RESTRICT_BUILDING", + "GAMEMODE_ADVENTURE", + "HORIZONTAL_BORDERS", + "NO_TILE_DROPS", + "ITEM_FIREBALL", + "ITEM_GRAPPLING_HOOK" + ] + } + } + }, + "borders": { + "type": "OBJECT", + "description": [ + "The different borders used by the arena. These are defined using border script. Below a short explanation of the different keyword:", + "CENTER - Set the center of the border to x,z. (ONLY AVAILABLE FOR VERTICAL BORDERS)", + "SET - On vertical borders set the with to i. On horizontal borders set the height to i.", + "TRANSITION - Same as SET , but over t seconds.", + "WAIT - Wait for t seconds." + ], + "children": { + "vertical": { + "type": "LIST", + "description": [ + "The vertical border of the world. This is the normal minecraft border." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "top": { + "type": "LIST", + "description": [ + "A horizontal border that kills everyone that is above it. This border is indicated using particle effects." + ], + "items": { + "type": "STRING", + "description": [] + } + }, + "bottom": { + "type": "LIST", + "description": [ + "A horizontal border that kills everyone that is below it. This border is indicated using particle effects." + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "end-conditions": { + "type": "OBJECT", + "description": [ + "The end conditions of the arena." + ], + "children": { + "players-left": { + "type": "INTEGER", + "description": [ + "End the game when there are this many players left alive. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + }, + "time": { + "type": "INTEGER", + "description": [ + "End the game after this amount of seconds. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + }, + "players-finished": { + "type": "INTEGER", + "description": [ + "End the game after this amount of players reach a finish checkpoint. Set to -1 to disable." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -1 + } + } + } + }, + "spawn-pools": { + "type": "MAP", + "description": [ + "The spawn pools that can be used by the arena. These are used to define groups of spawn rules that can be chosen at random by checkpoints." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "label": { + "type": "STRING", + "description": [ + "The name of the spawn pool." + ] + }, + "times": { + "type": "INTEGER", + "description": [ + "The amount of spawn rules that will be chosen before a player is considered finished." + ], + "default": -1, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 1 + } + }, + "rules": { + "type": "LIST", + "description": [ + "The list of spawn rules that the pool can choose from.", + "", + "Valid values: any spawn rule defined in the spawn-rules section." + ], + "items": { + "type": "STRING", + "description": [] + } + } + } + }, + "constraints": { + "allowedKeys": [] + } + }, + "break-allowed": { + "type": "OBJECT", + "description": [ + "The blocks that players are allowed to break in the arena. Unless specified otherwise all blocks can be broken." + ], + "children": { + "ruleList": { + "type": "LIST", + "description": [ + "The list of rules. These rules support full regular expression. For example .*_wool will match all colors of wool." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "rule": { + "type": "STRING", + "description": [] + }, + "type": { + "type": "STRING", + "description": [], + "default": "BLOCK", + "constraints": { + "enum": [ + "ALLOW", + "BLOCK" + ] + } + } + } + } + } + } + }, + "place-allowed": { + "type": "OBJECT", + "description": [ + "The blocks that players are allowed to place in the arena. Unless specified otherwise all blocks can be broken." + ], + "children": { + "ruleList": { + "type": "LIST", + "description": [ + "The list of rules. These rules support full regular expression. For example .*_wool will match all colors of wool." + ], + "items": { + "type": "OBJECT", + "description": [], + "children": { + "rule": { + "type": "STRING", + "description": [] + }, + "type": { + "type": "STRING", + "description": [], + "default": "BLOCK", + "constraints": { + "enum": [ + "ALLOW", + "BLOCK" + ] + } + } + } + } + } + } + }, + "countdown": { + "type": "OBJECT", + "description": [ + "The different countdowns used by the arena." + ], + "children": { + "loading": { + "type": "INTEGER", + "description": [ + "The time to count down before teleport players into the map for spectating." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "spectator": { + "type": "INTEGER", + "description": [ + "The time players have in spectator mode before being moved to the staging area." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + }, + "before-start": { + "type": "INTEGER", + "description": [ + "The time to count down in the staging area before removing the area defined in the block-remove-zone section." + ], + "default": 10, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": 0 + } + } + } + }, + "block-remove-zone": { + "type": "OBJECT", + "description": [ + "A area of blocks to remove at the start of the game." + ], + "children": { + "lower": { + "type": "OBJECT", + "description": [ + "The lower corner of the area to remove." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + }, + "upper": { + "type": "OBJECT", + "description": [ + "The upper corner of the area to remove." + ], + "children": { + "x": { + "type": "INTEGER", + "description": [ + "The x coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "y": { + "type": "INTEGER", + "description": [ + "The y coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + }, + "z": { + "type": "INTEGER", + "description": [ + "The z coordinate." + ], + "default": 0, + "constraints": { + "maxValueInt": 2147483647, + "minValueInt": -2147483648 + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/index.html b/src/main/resources/index.html new file mode 100644 index 0000000..b5fc37b --- /dev/null +++ b/src/main/resources/index.html @@ -0,0 +1,12 @@ + + + + + JS Client + + + + +
+ +