chao 5 months ago
parent
commit
0164cae119
100 changed files with 370 additions and 245 deletions
  1. 353 244
      package-lock.json
  2. 3 1
      package.json
  3. BIN
      public/media/1x1.gif
  4. BIN
      public/media/KUJU.png
  5. BIN
      public/media/ai_audio_spectrum.png
  6. BIN
      public/media/ai_vision_analyze_color.png
  7. BIN
      public/media/ai_vision_apriltag_.png
  8. BIN
      public/media/ai_vision_barcode_.png
  9. BIN
      public/media/ai_vision_datamatrix_.png
  10. BIN
      public/media/ai_vision_find_circle.png
  11. BIN
      public/media/ai_vision_find_color.png
  12. BIN
      public/media/ai_vision_find_line.png
  13. BIN
      public/media/ai_vision_find_rect.png
  14. BIN
      public/media/ai_vision_qrcode_.png
  15. BIN
      public/media/arduino.png
  16. BIN
      public/media/at_mode.png
  17. BIN
      public/media/basic.png
  18. BIN
      public/media/blockly-easymode_cococloud.png
  19. BIN
      public/media/blockly-easymode_ifttt.png
  20. BIN
      public/media/blockly-easymode_thingspeak.png
  21. BIN
      public/media/bluetooth.png
  22. BIN
      public/media/blynk.png
  23. BIN
      public/media/blynk_header.png
  24. BIN
      public/media/blynk_header_down.png
  25. BIN
      public/media/blynk_header_up.png
  26. BIN
      public/media/blynk_time.png
  27. BIN
      public/media/body_temp_mlx.png
  28. BIN
      public/media/button_header-image.png
  29. BIN
      public/media/button_pressed.png
  30. BIN
      public/media/button_released.png
  31. BIN
      public/media/buttoncontroller_header-image.png
  32. BIN
      public/media/buzzer.png
  33. BIN
      public/media/camera_init_header.png
  34. BIN
      public/media/circle.png
  35. BIN
      public/media/click.ogg
  36. BIN
      public/media/click.wav
  37. BIN
      public/media/cloud-rx.png
  38. BIN
      public/media/cloud-tx.png
  39. BIN
      public/media/cocoblockly_http_block.png
  40. BIN
      public/media/cococloud_get.png
  41. BIN
      public/media/cococloud_send.png
  42. BIN
      public/media/cocomod_blockly_RTC.png
  43. BIN
      public/media/cocomod_blockly_bipedalRobot.png
  44. BIN
      public/media/cocomod_blockly_bluetooth.png
  45. BIN
      public/media/cocomod_blockly_colorAnalyzer.png
  46. BIN
      public/media/cocomod_blockly_encoder.png
  47. BIN
      public/media/cocomod_blockly_envSensor.png
  48. BIN
      public/media/cocomod_blockly_infraredRay.png
  49. BIN
      public/media/cocomod_blockly_ledLight.png
  50. BIN
      public/media/cocomod_blockly_motion.png
  51. BIN
      public/media/cocomod_blockly_motorDriver.png
  52. BIN
      public/media/cocomod_blockly_musicMod.png
  53. BIN
      public/media/cocomod_blockly_oledScreen.png
  54. BIN
      public/media/cocomod_blockly_pulseSensor.png
  55. BIN
      public/media/cocomod_blockly_sensor101.png
  56. BIN
      public/media/cocomod_blockly_servoHub.png
  57. BIN
      public/media/cocomod_blockly_touchSensor.png
  58. BIN
      public/media/cocomod_blockly_ultrasonicSensor.png
  59. BIN
      public/media/cocomod_blockly_wifi.png
  60. BIN
      public/media/cocorobo.png
  61. BIN
      public/media/colorpicker_header-image.png
  62. BIN
      public/media/colour.png
  63. BIN
      public/media/computer-toolbox.png
  64. BIN
      public/media/computer.png
  65. BIN
      public/media/control.png
  66. BIN
      public/media/delete.ogg
  67. BIN
      public/media/delete.wav
  68. BIN
      public/media/dht_header.png
  69. BIN
      public/media/digit_recognition_header.png
  70. BIN
      public/media/disconnect.mp3
  71. BIN
      public/media/disconnect.ogg
  72. BIN
      public/media/emotion.png
  73. BIN
      public/media/env.png
  74. BIN
      public/media/env_get.png
  75. BIN
      public/media/esp32_servo_setup.png
  76. BIN
      public/media/example.png
  77. 14 0
      public/media/examples_icon.svg
  78. BIN
      public/media/expand_closed.png
  79. BIN
      public/media/expand_open.png
  80. BIN
      public/media/face_recognition_header.png
  81. BIN
      public/media/fileManage/create.png
  82. BIN
      public/media/fileManage/delete.png
  83. BIN
      public/media/fileManage/file.png
  84. BIN
      public/media/fileManage/package.png
  85. BIN
      public/media/fileManage/upload.png
  86. BIN
      public/media/google_aiy_vision_joy_demo.png
  87. BIN
      public/media/google_aiy_vision_kit_setup.png
  88. BIN
      public/media/google_aiy_voice_kit_demo.png
  89. BIN
      public/media/google_aiy_voice_kit_setup_header.png
  90. BIN
      public/media/gps_header.png
  91. BIN
      public/media/handclosed.cur
  92. BIN
      public/media/handdelete.cur
  93. BIN
      public/media/handopen.cur
  94. BIN
      public/media/header_ble_setup copy.png
  95. BIN
      public/media/header_ble_setup.png
  96. BIN
      public/media/header_customized_model.png
  97. BIN
      public/media/hotspot_setup.png
  98. BIN
      public/media/http_header.png
  99. BIN
      public/media/http_header_get.png
  100. BIN
      public/media/http_header_post.png

+ 353 - 244
package-lock.json

@@ -8,6 +8,7 @@
       "name": "ya-webadb-starter",
       "name": "ya-webadb-starter",
       "version": "0.1.0",
       "version": "0.1.0",
       "dependencies": {
       "dependencies": {
+        "@ant-design/icons": "^6.0.0",
         "@blockly/field-date": "^9.0.7",
         "@blockly/field-date": "^9.0.7",
         "@codemirror/lang-python": "^6.1.7",
         "@codemirror/lang-python": "^6.1.7",
         "@reduxjs/toolkit": "^1.9.5",
         "@reduxjs/toolkit": "^1.9.5",
@@ -43,7 +44,7 @@
         "@yume-chan/tabby-tango": "file:../ya-webadb/libraries/tabby-tango",
         "@yume-chan/tabby-tango": "file:../ya-webadb/libraries/tabby-tango",
         "antd": "^5.6.4",
         "antd": "^5.6.4",
         "axios": "^1.8.4",
         "axios": "^1.8.4",
-        "blockly": "^11.1.1",
+        "blockly": "^10.3.0",
         "comlink": "^4.4.1",
         "comlink": "^4.4.1",
         "i18next": "^25.0.1",
         "i18next": "^25.0.1",
         "immer": "^10.0.2",
         "immer": "^10.0.2",
@@ -54,6 +55,7 @@
         "react-dom": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-helmet": "^6.1.0",
         "react-helmet": "^6.1.0",
         "react-i18next": "^15.4.1",
         "react-i18next": "^15.4.1",
+        "react-qr-code": "^2.0.15",
         "react-redux": "^8.1.1",
         "react-redux": "^8.1.1",
         "react-router-dom": "^6.14.1",
         "react-router-dom": "^6.14.1",
         "react-scripts": "5.0.1",
         "react-scripts": "5.0.1",
@@ -1096,16 +1098,23 @@
         "react-dom": ">=16.0.0"
         "react-dom": ">=16.0.0"
       }
       }
     },
     },
+    "node_modules/@ant-design/fast-color": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz",
+      "integrity": "sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA==",
+      "engines": {
+        "node": ">=8.x"
+      }
+    },
     "node_modules/@ant-design/icons": {
     "node_modules/@ant-design/icons": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.1.4.tgz",
-      "integrity": "sha512-YHKL7Jx3bM12OxvtiYDon04BsBT/6LGitYEqar3GljzWaAyMOAD8i/uF1Rsi5Us/YNdWWXBGSvZV2OZWMpJlcA==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.0.0.tgz",
+      "integrity": "sha512-o0aCCAlHc1o4CQcapAwWzHeaW2x9F49g7P3IDtvtNXgHowtRWYb7kiubt8sQPFvfVIVU/jLw2hzeSlNt0FU+Uw==",
       "dependencies": {
       "dependencies": {
-        "@ant-design/colors": "^7.0.0",
-        "@ant-design/icons-svg": "^4.2.1",
-        "@babel/runtime": "^7.11.2",
-        "classnames": "^2.2.6",
-        "rc-util": "^5.31.1"
+        "@ant-design/colors": "^8.0.0",
+        "@ant-design/icons-svg": "^4.4.0",
+        "@rc-component/util": "^1.2.1",
+        "classnames": "^2.2.6"
       },
       },
       "engines": {
       "engines": {
         "node": ">=8"
         "node": ">=8"
@@ -1116,9 +1125,17 @@
       }
       }
     },
     },
     "node_modules/@ant-design/icons-svg": {
     "node_modules/@ant-design/icons-svg": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
-      "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
+      "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
+    },
+    "node_modules/@ant-design/icons/node_modules/@ant-design/colors": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz",
+      "integrity": "sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==",
+      "dependencies": {
+        "@ant-design/fast-color": "^3.0.0"
+      }
     },
     },
     "node_modules/@ant-design/react-slick": {
     "node_modules/@ant-design/react-slick": {
       "version": "1.0.1",
       "version": "1.0.1",
@@ -4604,6 +4621,23 @@
         "react-dom": ">=16.9.0"
         "react-dom": ">=16.9.0"
       }
       }
     },
     },
+    "node_modules/@rc-component/util": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.2.1.tgz",
+      "integrity": "sha512-AUVu6jO+lWjQnUOOECwu8iR0EdElQgWW5NBv5vP/Uf9dWbAX3udhMutRlkVXjuac2E40ghkFy+ve00mc/3Fymg==",
+      "dependencies": {
+        "react-is": "^18.2.0"
+      },
+      "peerDependencies": {
+        "react": ">=18.0.0",
+        "react-dom": ">=18.0.0"
+      }
+    },
+    "node_modules/@rc-component/util/node_modules/react-is": {
+      "version": "18.3.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+    },
     "node_modules/@reduxjs/toolkit": {
     "node_modules/@reduxjs/toolkit": {
       "version": "1.9.5",
       "version": "1.9.5",
       "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
       "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
@@ -4963,22 +4997,22 @@
       }
       }
     },
     },
     "node_modules/@testing-library/dom": {
     "node_modules/@testing-library/dom": {
-      "version": "9.3.1",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz",
-      "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+      "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
       "peer": true,
       "peer": true,
       "dependencies": {
       "dependencies": {
         "@babel/code-frame": "^7.10.4",
         "@babel/code-frame": "^7.10.4",
         "@babel/runtime": "^7.12.5",
         "@babel/runtime": "^7.12.5",
         "@types/aria-query": "^5.0.1",
         "@types/aria-query": "^5.0.1",
-        "aria-query": "5.1.3",
+        "aria-query": "5.3.0",
         "chalk": "^4.1.0",
         "chalk": "^4.1.0",
         "dom-accessibility-api": "^0.5.9",
         "dom-accessibility-api": "^0.5.9",
         "lz-string": "^1.5.0",
         "lz-string": "^1.5.0",
         "pretty-format": "^27.0.2"
         "pretty-format": "^27.0.2"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=14"
+        "node": ">=18"
       }
       }
     },
     },
     "node_modules/@testing-library/dom/node_modules/ansi-styles": {
     "node_modules/@testing-library/dom/node_modules/ansi-styles": {
@@ -4996,15 +5030,6 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
       }
     },
     },
-    "node_modules/@testing-library/dom/node_modules/aria-query": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-      "peer": true,
-      "dependencies": {
-        "deep-equal": "^2.0.5"
-      }
-    },
     "node_modules/@testing-library/dom/node_modules/chalk": {
     "node_modules/@testing-library/dom/node_modules/chalk": {
       "version": "4.1.2",
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -6405,6 +6430,33 @@
         "react-dom": ">=16.9.0"
         "react-dom": ">=16.9.0"
       }
       }
     },
     },
+    "node_modules/antd/node_modules/@ant-design/icons": {
+      "version": "5.6.1",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz",
+      "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==",
+      "dependencies": {
+        "@ant-design/colors": "^7.0.0",
+        "@ant-design/icons-svg": "^4.4.0",
+        "@babel/runtime": "^7.24.8",
+        "classnames": "^2.2.6",
+        "rc-util": "^5.31.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "peerDependencies": {
+        "react": ">=16.0.0",
+        "react-dom": ">=16.0.0"
+      }
+    },
+    "node_modules/antd/node_modules/qrcode.react": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.2.0.tgz",
+      "integrity": "sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g==",
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      }
+    },
     "node_modules/any-promise": {
     "node_modules/any-promise": {
       "version": "1.3.0",
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
       "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -6984,25 +7036,19 @@
       }
       }
     },
     },
     "node_modules/blockly": {
     "node_modules/blockly": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/blockly/-/blockly-11.1.1.tgz",
-      "integrity": "sha512-PmInYM9zH1HcYMffqnfmeu2O3g0intsowy08S0KDu3q8/95TfGo1tcDYpeWNQDkPOEzN1yy3oocsRO4NPDHtKA==",
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/blockly/-/blockly-10.3.0.tgz",
+      "integrity": "sha512-+95241EVK5o80F3b/iDP61+LfwKwueqscRyh/JfGKPRA4Tlcg8nngu1DdMhOyVCy8Z58AyXuFJ+96+QlCFx5MQ==",
       "dependencies": {
       "dependencies": {
-        "jsdom": "23.0.0"
-      },
-      "engines": {
-        "node": ">=18"
+        "jsdom": "22.1.0"
       }
       }
     },
     },
-    "node_modules/blockly/node_modules/agent-base": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
-      "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
-      "dependencies": {
-        "debug": "^4.3.4"
-      },
+    "node_modules/blockly/node_modules/@tootallnate/once": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
       "engines": {
       "engines": {
-        "node": ">= 14"
+        "node": ">= 10"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/cssstyle": {
     "node_modules/blockly/node_modules/cssstyle": {
@@ -7017,21 +7063,34 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/data-urls": {
     "node_modules/blockly/node_modules/data-urls": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
-      "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz",
+      "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
       "dependencies": {
       "dependencies": {
-        "whatwg-mimetype": "^4.0.0",
-        "whatwg-url": "^14.0.0"
+        "abab": "^2.0.6",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^12.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=14"
+      }
+    },
+    "node_modules/blockly/node_modules/domexception": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+      "deprecated": "Use your platform's native DOMException instead",
+      "dependencies": {
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/entities": {
     "node_modules/blockly/node_modules/entities": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
-      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
+      "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
       "engines": {
       "engines": {
         "node": ">=0.12"
         "node": ">=0.12"
       },
       },
@@ -7040,12 +7099,13 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/form-data": {
     "node_modules/blockly/node_modules/form-data": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+      "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
       "dependencies": {
       "dependencies": {
         "asynckit": "^0.4.0",
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
         "combined-stream": "^1.0.8",
+        "es-set-tostringtag": "^2.1.0",
         "mime-types": "^2.1.12"
         "mime-types": "^2.1.12"
       },
       },
       "engines": {
       "engines": {
@@ -7053,72 +7113,63 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/html-encoding-sniffer": {
     "node_modules/blockly/node_modules/html-encoding-sniffer": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
-      "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
       "dependencies": {
       "dependencies": {
-        "whatwg-encoding": "^3.1.1"
+        "whatwg-encoding": "^2.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=12"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/http-proxy-agent": {
     "node_modules/blockly/node_modules/http-proxy-agent": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
-      "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
-      "dependencies": {
-        "agent-base": "^7.1.0",
-        "debug": "^4.3.4"
-      },
-      "engines": {
-        "node": ">= 14"
-      }
-    },
-    "node_modules/blockly/node_modules/https-proxy-agent": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
-      "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
       "dependencies": {
       "dependencies": {
-        "agent-base": "^7.0.2",
+        "@tootallnate/once": "2",
+        "agent-base": "6",
         "debug": "4"
         "debug": "4"
       },
       },
       "engines": {
       "engines": {
-        "node": ">= 14"
+        "node": ">= 6"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/jsdom": {
     "node_modules/blockly/node_modules/jsdom": {
-      "version": "23.0.0",
-      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.0.tgz",
-      "integrity": "sha512-cbL/UCtohJguhFC7c2/hgW6BeZCNvP7URQGnx9tSJRYKCdnfbfWOrtuLTMfiB2VxKsx5wPHVsh/J0aBy9lIIhQ==",
+      "version": "22.1.0",
+      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz",
+      "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==",
       "dependencies": {
       "dependencies": {
+        "abab": "^2.0.6",
         "cssstyle": "^3.0.0",
         "cssstyle": "^3.0.0",
-        "data-urls": "^5.0.0",
+        "data-urls": "^4.0.0",
         "decimal.js": "^10.4.3",
         "decimal.js": "^10.4.3",
+        "domexception": "^4.0.0",
         "form-data": "^4.0.0",
         "form-data": "^4.0.0",
-        "html-encoding-sniffer": "^4.0.0",
-        "http-proxy-agent": "^7.0.0",
-        "https-proxy-agent": "^7.0.2",
+        "html-encoding-sniffer": "^3.0.0",
+        "http-proxy-agent": "^5.0.0",
+        "https-proxy-agent": "^5.0.1",
         "is-potential-custom-element-name": "^1.0.1",
         "is-potential-custom-element-name": "^1.0.1",
-        "nwsapi": "^2.2.7",
+        "nwsapi": "^2.2.4",
         "parse5": "^7.1.2",
         "parse5": "^7.1.2",
         "rrweb-cssom": "^0.6.0",
         "rrweb-cssom": "^0.6.0",
         "saxes": "^6.0.0",
         "saxes": "^6.0.0",
         "symbol-tree": "^3.2.4",
         "symbol-tree": "^3.2.4",
-        "tough-cookie": "^4.1.3",
-        "w3c-xmlserializer": "^5.0.0",
+        "tough-cookie": "^4.1.2",
+        "w3c-xmlserializer": "^4.0.0",
         "webidl-conversions": "^7.0.0",
         "webidl-conversions": "^7.0.0",
-        "whatwg-encoding": "^3.1.1",
-        "whatwg-mimetype": "^4.0.0",
-        "whatwg-url": "^14.0.0",
-        "ws": "^8.14.2",
-        "xml-name-validator": "^5.0.0"
+        "whatwg-encoding": "^2.0.0",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^12.0.1",
+        "ws": "^8.13.0",
+        "xml-name-validator": "^4.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=16"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "canvas": "^3.0.0"
+        "canvas": "^2.5.0"
       },
       },
       "peerDependenciesMeta": {
       "peerDependenciesMeta": {
         "canvas": {
         "canvas": {
@@ -7127,11 +7178,11 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/parse5": {
     "node_modules/blockly/node_modules/parse5": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
-      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+      "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
       "dependencies": {
       "dependencies": {
-        "entities": "^4.4.0"
+        "entities": "^6.0.0"
       },
       },
       "funding": {
       "funding": {
         "url": "https://github.com/inikulin/parse5?sponsor=1"
         "url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -7149,25 +7200,25 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/tr46": {
     "node_modules/blockly/node_modules/tr46": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
-      "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+      "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
       "dependencies": {
       "dependencies": {
-        "punycode": "^2.3.1"
+        "punycode": "^2.3.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=14"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/w3c-xmlserializer": {
     "node_modules/blockly/node_modules/w3c-xmlserializer": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
-      "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
       "dependencies": {
       "dependencies": {
-        "xml-name-validator": "^5.0.0"
+        "xml-name-validator": "^4.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=14"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/webidl-conversions": {
     "node_modules/blockly/node_modules/webidl-conversions": {
@@ -7179,40 +7230,40 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/whatwg-encoding": {
     "node_modules/blockly/node_modules/whatwg-encoding": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
-      "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
       "dependencies": {
       "dependencies": {
         "iconv-lite": "0.6.3"
         "iconv-lite": "0.6.3"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=12"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/whatwg-mimetype": {
     "node_modules/blockly/node_modules/whatwg-mimetype": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
-      "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=12"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/whatwg-url": {
     "node_modules/blockly/node_modules/whatwg-url": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
-      "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
+      "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
       "dependencies": {
       "dependencies": {
-        "tr46": "^5.0.0",
+        "tr46": "^4.1.1",
         "webidl-conversions": "^7.0.0"
         "webidl-conversions": "^7.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=14"
       }
       }
     },
     },
     "node_modules/blockly/node_modules/ws": {
     "node_modules/blockly/node_modules/ws": {
-      "version": "8.18.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "version": "8.18.2",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
+      "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
       "engines": {
       "engines": {
         "node": ">=10.0.0"
         "node": ">=10.0.0"
       },
       },
@@ -7230,11 +7281,11 @@
       }
       }
     },
     },
     "node_modules/blockly/node_modules/xml-name-validator": {
     "node_modules/blockly/node_modules/xml-name-validator": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
-      "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
       "engines": {
       "engines": {
-        "node": ">=18"
+        "node": ">=12"
       }
       }
     },
     },
     "node_modules/bluebird": {
     "node_modules/bluebird": {
@@ -18985,13 +19036,10 @@
         "teleport": ">=0.2.0"
         "teleport": ">=0.2.0"
       }
       }
     },
     },
-    "node_modules/qrcode.react": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz",
-      "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==",
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-      }
+    "node_modules/qr.js": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
+      "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ=="
     },
     },
     "node_modules/qs": {
     "node_modules/qs": {
       "version": "6.11.0",
       "version": "6.11.0",
@@ -19921,6 +19969,18 @@
         "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x"
         "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x"
       }
       }
     },
     },
+    "node_modules/react-qr-code": {
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.0.15.tgz",
+      "integrity": "sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw==",
+      "dependencies": {
+        "prop-types": "^15.8.1",
+        "qr.js": "0.0.0"
+      },
+      "peerDependencies": {
+        "react": "*"
+      }
+    },
     "node_modules/react-redux": {
     "node_modules/react-redux": {
       "version": "8.1.1",
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",
@@ -23120,22 +23180,36 @@
         "stylis": "^4.0.13"
         "stylis": "^4.0.13"
       }
       }
     },
     },
+    "@ant-design/fast-color": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz",
+      "integrity": "sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA=="
+    },
     "@ant-design/icons": {
     "@ant-design/icons": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.1.4.tgz",
-      "integrity": "sha512-YHKL7Jx3bM12OxvtiYDon04BsBT/6LGitYEqar3GljzWaAyMOAD8i/uF1Rsi5Us/YNdWWXBGSvZV2OZWMpJlcA==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.0.0.tgz",
+      "integrity": "sha512-o0aCCAlHc1o4CQcapAwWzHeaW2x9F49g7P3IDtvtNXgHowtRWYb7kiubt8sQPFvfVIVU/jLw2hzeSlNt0FU+Uw==",
       "requires": {
       "requires": {
-        "@ant-design/colors": "^7.0.0",
-        "@ant-design/icons-svg": "^4.2.1",
-        "@babel/runtime": "^7.11.2",
-        "classnames": "^2.2.6",
-        "rc-util": "^5.31.1"
+        "@ant-design/colors": "^8.0.0",
+        "@ant-design/icons-svg": "^4.4.0",
+        "@rc-component/util": "^1.2.1",
+        "classnames": "^2.2.6"
+      },
+      "dependencies": {
+        "@ant-design/colors": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz",
+          "integrity": "sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==",
+          "requires": {
+            "@ant-design/fast-color": "^3.0.0"
+          }
+        }
       }
       }
     },
     },
     "@ant-design/icons-svg": {
     "@ant-design/icons-svg": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
-      "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
+      "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
     },
     },
     "@ant-design/react-slick": {
     "@ant-design/react-slick": {
       "version": "1.0.1",
       "version": "1.0.1",
@@ -25504,6 +25578,21 @@
         "rc-util": "^5.33.0"
         "rc-util": "^5.33.0"
       }
       }
     },
     },
+    "@rc-component/util": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.2.1.tgz",
+      "integrity": "sha512-AUVu6jO+lWjQnUOOECwu8iR0EdElQgWW5NBv5vP/Uf9dWbAX3udhMutRlkVXjuac2E40ghkFy+ve00mc/3Fymg==",
+      "requires": {
+        "react-is": "^18.2.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "18.3.1",
+          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+          "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+        }
+      }
+    },
     "@reduxjs/toolkit": {
     "@reduxjs/toolkit": {
       "version": "1.9.5",
       "version": "1.9.5",
       "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
       "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz",
@@ -25722,15 +25811,15 @@
       }
       }
     },
     },
     "@testing-library/dom": {
     "@testing-library/dom": {
-      "version": "9.3.1",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz",
-      "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+      "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
       "peer": true,
       "peer": true,
       "requires": {
       "requires": {
         "@babel/code-frame": "^7.10.4",
         "@babel/code-frame": "^7.10.4",
         "@babel/runtime": "^7.12.5",
         "@babel/runtime": "^7.12.5",
         "@types/aria-query": "^5.0.1",
         "@types/aria-query": "^5.0.1",
-        "aria-query": "5.1.3",
+        "aria-query": "5.3.0",
         "chalk": "^4.1.0",
         "chalk": "^4.1.0",
         "dom-accessibility-api": "^0.5.9",
         "dom-accessibility-api": "^0.5.9",
         "lz-string": "^1.5.0",
         "lz-string": "^1.5.0",
@@ -25746,15 +25835,6 @@
             "color-convert": "^2.0.1"
             "color-convert": "^2.0.1"
           }
           }
         },
         },
-        "aria-query": {
-          "version": "5.1.3",
-          "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
-          "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
-          "peer": true,
-          "requires": {
-            "deep-equal": "^2.0.5"
-          }
-        },
         "chalk": {
         "chalk": {
           "version": "4.1.2",
           "version": "4.1.2",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -27179,6 +27259,26 @@
         "rc-util": "^5.32.0",
         "rc-util": "^5.32.0",
         "scroll-into-view-if-needed": "^3.0.3",
         "scroll-into-view-if-needed": "^3.0.3",
         "throttle-debounce": "^5.0.0"
         "throttle-debounce": "^5.0.0"
+      },
+      "dependencies": {
+        "@ant-design/icons": {
+          "version": "5.6.1",
+          "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz",
+          "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==",
+          "requires": {
+            "@ant-design/colors": "^7.0.0",
+            "@ant-design/icons-svg": "^4.4.0",
+            "@babel/runtime": "^7.24.8",
+            "classnames": "^2.2.6",
+            "rc-util": "^5.31.1"
+          }
+        },
+        "qrcode.react": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.2.0.tgz",
+          "integrity": "sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g==",
+          "requires": {}
+        }
       }
       }
     },
     },
     "any-promise": {
     "any-promise": {
@@ -27619,20 +27719,17 @@
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
     },
     },
     "blockly": {
     "blockly": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/blockly/-/blockly-11.1.1.tgz",
-      "integrity": "sha512-PmInYM9zH1HcYMffqnfmeu2O3g0intsowy08S0KDu3q8/95TfGo1tcDYpeWNQDkPOEzN1yy3oocsRO4NPDHtKA==",
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/blockly/-/blockly-10.3.0.tgz",
+      "integrity": "sha512-+95241EVK5o80F3b/iDP61+LfwKwueqscRyh/JfGKPRA4Tlcg8nngu1DdMhOyVCy8Z58AyXuFJ+96+QlCFx5MQ==",
       "requires": {
       "requires": {
-        "jsdom": "23.0.0"
+        "jsdom": "22.1.0"
       },
       },
       "dependencies": {
       "dependencies": {
-        "agent-base": {
-          "version": "7.1.1",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
-          "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
-          "requires": {
-            "debug": "^4.3.4"
-          }
+        "@tootallnate/once": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+          "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
         },
         },
         "cssstyle": {
         "cssstyle": {
           "version": "3.0.0",
           "version": "3.0.0",
@@ -27643,89 +27740,93 @@
           }
           }
         },
         },
         "data-urls": {
         "data-urls": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
-          "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz",
+          "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
+          "requires": {
+            "abab": "^2.0.6",
+            "whatwg-mimetype": "^3.0.0",
+            "whatwg-url": "^12.0.0"
+          }
+        },
+        "domexception": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+          "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
           "requires": {
           "requires": {
-            "whatwg-mimetype": "^4.0.0",
-            "whatwg-url": "^14.0.0"
+            "webidl-conversions": "^7.0.0"
           }
           }
         },
         },
         "entities": {
         "entities": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
-          "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
+          "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw=="
         },
         },
         "form-data": {
         "form-data": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+          "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
           "requires": {
           "requires": {
             "asynckit": "^0.4.0",
             "asynckit": "^0.4.0",
             "combined-stream": "^1.0.8",
             "combined-stream": "^1.0.8",
+            "es-set-tostringtag": "^2.1.0",
             "mime-types": "^2.1.12"
             "mime-types": "^2.1.12"
           }
           }
         },
         },
         "html-encoding-sniffer": {
         "html-encoding-sniffer": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
-          "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+          "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
           "requires": {
           "requires": {
-            "whatwg-encoding": "^3.1.1"
+            "whatwg-encoding": "^2.0.0"
           }
           }
         },
         },
         "http-proxy-agent": {
         "http-proxy-agent": {
-          "version": "7.0.2",
-          "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
-          "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
-          "requires": {
-            "agent-base": "^7.1.0",
-            "debug": "^4.3.4"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "7.0.5",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
-          "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+          "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
           "requires": {
           "requires": {
-            "agent-base": "^7.0.2",
+            "@tootallnate/once": "2",
+            "agent-base": "6",
             "debug": "4"
             "debug": "4"
           }
           }
         },
         },
         "jsdom": {
         "jsdom": {
-          "version": "23.0.0",
-          "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.0.tgz",
-          "integrity": "sha512-cbL/UCtohJguhFC7c2/hgW6BeZCNvP7URQGnx9tSJRYKCdnfbfWOrtuLTMfiB2VxKsx5wPHVsh/J0aBy9lIIhQ==",
+          "version": "22.1.0",
+          "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz",
+          "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==",
           "requires": {
           "requires": {
+            "abab": "^2.0.6",
             "cssstyle": "^3.0.0",
             "cssstyle": "^3.0.0",
-            "data-urls": "^5.0.0",
+            "data-urls": "^4.0.0",
             "decimal.js": "^10.4.3",
             "decimal.js": "^10.4.3",
+            "domexception": "^4.0.0",
             "form-data": "^4.0.0",
             "form-data": "^4.0.0",
-            "html-encoding-sniffer": "^4.0.0",
-            "http-proxy-agent": "^7.0.0",
-            "https-proxy-agent": "^7.0.2",
+            "html-encoding-sniffer": "^3.0.0",
+            "http-proxy-agent": "^5.0.0",
+            "https-proxy-agent": "^5.0.1",
             "is-potential-custom-element-name": "^1.0.1",
             "is-potential-custom-element-name": "^1.0.1",
-            "nwsapi": "^2.2.7",
+            "nwsapi": "^2.2.4",
             "parse5": "^7.1.2",
             "parse5": "^7.1.2",
             "rrweb-cssom": "^0.6.0",
             "rrweb-cssom": "^0.6.0",
             "saxes": "^6.0.0",
             "saxes": "^6.0.0",
             "symbol-tree": "^3.2.4",
             "symbol-tree": "^3.2.4",
-            "tough-cookie": "^4.1.3",
-            "w3c-xmlserializer": "^5.0.0",
+            "tough-cookie": "^4.1.2",
+            "w3c-xmlserializer": "^4.0.0",
             "webidl-conversions": "^7.0.0",
             "webidl-conversions": "^7.0.0",
-            "whatwg-encoding": "^3.1.1",
-            "whatwg-mimetype": "^4.0.0",
-            "whatwg-url": "^14.0.0",
-            "ws": "^8.14.2",
-            "xml-name-validator": "^5.0.0"
+            "whatwg-encoding": "^2.0.0",
+            "whatwg-mimetype": "^3.0.0",
+            "whatwg-url": "^12.0.1",
+            "ws": "^8.13.0",
+            "xml-name-validator": "^4.0.0"
           }
           }
         },
         },
         "parse5": {
         "parse5": {
-          "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
-          "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+          "version": "7.3.0",
+          "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+          "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
           "requires": {
           "requires": {
-            "entities": "^4.4.0"
+            "entities": "^6.0.0"
           }
           }
         },
         },
         "saxes": {
         "saxes": {
@@ -27737,19 +27838,19 @@
           }
           }
         },
         },
         "tr46": {
         "tr46": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
-          "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+          "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
           "requires": {
           "requires": {
-            "punycode": "^2.3.1"
+            "punycode": "^2.3.0"
           }
           }
         },
         },
         "w3c-xmlserializer": {
         "w3c-xmlserializer": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
-          "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+          "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
           "requires": {
           "requires": {
-            "xml-name-validator": "^5.0.0"
+            "xml-name-validator": "^4.0.0"
           }
           }
         },
         },
         "webidl-conversions": {
         "webidl-conversions": {
@@ -27758,37 +27859,37 @@
           "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
           "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
         },
         },
         "whatwg-encoding": {
         "whatwg-encoding": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
-          "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+          "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
           "requires": {
           "requires": {
             "iconv-lite": "0.6.3"
             "iconv-lite": "0.6.3"
           }
           }
         },
         },
         "whatwg-mimetype": {
         "whatwg-mimetype": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
-          "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+          "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="
         },
         },
         "whatwg-url": {
         "whatwg-url": {
-          "version": "14.0.0",
-          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
-          "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
+          "version": "12.0.1",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
+          "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
           "requires": {
           "requires": {
-            "tr46": "^5.0.0",
+            "tr46": "^4.1.1",
             "webidl-conversions": "^7.0.0"
             "webidl-conversions": "^7.0.0"
           }
           }
         },
         },
         "ws": {
         "ws": {
-          "version": "8.18.0",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-          "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+          "version": "8.18.2",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
+          "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
           "requires": {}
           "requires": {}
         },
         },
         "xml-name-validator": {
         "xml-name-validator": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
-          "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+          "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
         }
         }
       }
       }
     },
     },
@@ -35846,11 +35947,10 @@
       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
       "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
       "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
     },
     },
-    "qrcode.react": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz",
-      "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==",
-      "requires": {}
+    "qr.js": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
+      "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ=="
     },
     },
     "qs": {
     "qs": {
       "version": "6.11.0",
       "version": "6.11.0",
@@ -36491,6 +36591,15 @@
       "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==",
       "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==",
       "requires": {}
       "requires": {}
     },
     },
+    "react-qr-code": {
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.0.15.tgz",
+      "integrity": "sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw==",
+      "requires": {
+        "prop-types": "^15.8.1",
+        "qr.js": "0.0.0"
+      }
+    },
     "react-redux": {
     "react-redux": {
       "version": "8.1.1",
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",
       "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz",

+ 3 - 1
package.json

@@ -7,6 +7,7 @@
   "version": "0.1.0",
   "version": "0.1.0",
   "private": true,
   "private": true,
   "dependencies": {
   "dependencies": {
+    "@ant-design/icons": "^6.0.0",
     "@blockly/field-date": "^9.0.7",
     "@blockly/field-date": "^9.0.7",
     "@codemirror/lang-python": "^6.1.7",
     "@codemirror/lang-python": "^6.1.7",
     "@reduxjs/toolkit": "^1.9.5",
     "@reduxjs/toolkit": "^1.9.5",
@@ -42,7 +43,7 @@
     "@yume-chan/tabby-tango": "file:../ya-webadb/libraries/tabby-tango",
     "@yume-chan/tabby-tango": "file:../ya-webadb/libraries/tabby-tango",
     "antd": "^5.6.4",
     "antd": "^5.6.4",
     "axios": "^1.8.4",
     "axios": "^1.8.4",
-    "blockly": "^11.1.1",
+    "blockly": "^10.3.0",
     "comlink": "^4.4.1",
     "comlink": "^4.4.1",
     "i18next": "^25.0.1",
     "i18next": "^25.0.1",
     "immer": "^10.0.2",
     "immer": "^10.0.2",
@@ -53,6 +54,7 @@
     "react-dom": "^18.2.0",
     "react-dom": "^18.2.0",
     "react-helmet": "^6.1.0",
     "react-helmet": "^6.1.0",
     "react-i18next": "^15.4.1",
     "react-i18next": "^15.4.1",
+    "react-qr-code": "^2.0.15",
     "react-redux": "^8.1.1",
     "react-redux": "^8.1.1",
     "react-router-dom": "^6.14.1",
     "react-router-dom": "^6.14.1",
     "react-scripts": "5.0.1",
     "react-scripts": "5.0.1",

BIN
public/media/1x1.gif


BIN
public/media/KUJU.png


BIN
public/media/ai_audio_spectrum.png


BIN
public/media/ai_vision_analyze_color.png


BIN
public/media/ai_vision_apriltag_.png


BIN
public/media/ai_vision_barcode_.png


BIN
public/media/ai_vision_datamatrix_.png


BIN
public/media/ai_vision_find_circle.png


BIN
public/media/ai_vision_find_color.png


BIN
public/media/ai_vision_find_line.png


BIN
public/media/ai_vision_find_rect.png


BIN
public/media/ai_vision_qrcode_.png


BIN
public/media/arduino.png


BIN
public/media/at_mode.png


BIN
public/media/basic.png


BIN
public/media/blockly-easymode_cococloud.png


BIN
public/media/blockly-easymode_ifttt.png


BIN
public/media/blockly-easymode_thingspeak.png


BIN
public/media/bluetooth.png


BIN
public/media/blynk.png


BIN
public/media/blynk_header.png


BIN
public/media/blynk_header_down.png


BIN
public/media/blynk_header_up.png


BIN
public/media/blynk_time.png


BIN
public/media/body_temp_mlx.png


BIN
public/media/button_header-image.png


BIN
public/media/button_pressed.png


BIN
public/media/button_released.png


BIN
public/media/buttoncontroller_header-image.png


BIN
public/media/buzzer.png


BIN
public/media/camera_init_header.png


BIN
public/media/circle.png


BIN
public/media/click.ogg


BIN
public/media/click.wav


BIN
public/media/cloud-rx.png


BIN
public/media/cloud-tx.png


BIN
public/media/cocoblockly_http_block.png


BIN
public/media/cococloud_get.png


BIN
public/media/cococloud_send.png


BIN
public/media/cocomod_blockly_RTC.png


BIN
public/media/cocomod_blockly_bipedalRobot.png


BIN
public/media/cocomod_blockly_bluetooth.png


BIN
public/media/cocomod_blockly_colorAnalyzer.png


BIN
public/media/cocomod_blockly_encoder.png


BIN
public/media/cocomod_blockly_envSensor.png


BIN
public/media/cocomod_blockly_infraredRay.png


BIN
public/media/cocomod_blockly_ledLight.png


BIN
public/media/cocomod_blockly_motion.png


BIN
public/media/cocomod_blockly_motorDriver.png


BIN
public/media/cocomod_blockly_musicMod.png


BIN
public/media/cocomod_blockly_oledScreen.png


BIN
public/media/cocomod_blockly_pulseSensor.png


BIN
public/media/cocomod_blockly_sensor101.png


BIN
public/media/cocomod_blockly_servoHub.png


BIN
public/media/cocomod_blockly_touchSensor.png


BIN
public/media/cocomod_blockly_ultrasonicSensor.png


BIN
public/media/cocomod_blockly_wifi.png


BIN
public/media/cocorobo.png


BIN
public/media/colorpicker_header-image.png


BIN
public/media/colour.png


BIN
public/media/computer-toolbox.png


BIN
public/media/computer.png


BIN
public/media/control.png


BIN
public/media/delete.ogg


BIN
public/media/delete.wav


BIN
public/media/dht_header.png


BIN
public/media/digit_recognition_header.png


BIN
public/media/disconnect.mp3


BIN
public/media/disconnect.ogg


BIN
public/media/emotion.png


BIN
public/media/env.png


BIN
public/media/env_get.png


BIN
public/media/esp32_servo_setup.png


BIN
public/media/example.png


+ 14 - 0
public/media/examples_icon.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1"
+	 id="Layer_1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 94.3"
+	 style="enable-background:new 0 0 100 94.3;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#5586ED;}
+</style>
+<g transform="translate(0,-952.36218)">
+	<path class="st0" d="M50,960.4c-23.2,0-42,18.8-42,42c0,23.2,18.8,42,42,42s42-18.8,42-42C92,979.2,73.2,960.4,50,960.4z M50,980.4
+		l7,13l15,3l-11,9l3,15l-14-7l-14,7l3-15l-11-9l15-3L50,980.4z"/>
+</g>
+</svg>

BIN
public/media/expand_closed.png


BIN
public/media/expand_open.png


BIN
public/media/face_recognition_header.png


BIN
public/media/fileManage/create.png


BIN
public/media/fileManage/delete.png


BIN
public/media/fileManage/file.png


BIN
public/media/fileManage/package.png


BIN
public/media/fileManage/upload.png


BIN
public/media/google_aiy_vision_joy_demo.png


BIN
public/media/google_aiy_vision_kit_setup.png


BIN
public/media/google_aiy_voice_kit_demo.png


BIN
public/media/google_aiy_voice_kit_setup_header.png


BIN
public/media/gps_header.png


BIN
public/media/handclosed.cur


BIN
public/media/handdelete.cur


BIN
public/media/handopen.cur


BIN
public/media/header_ble_setup copy.png


BIN
public/media/header_ble_setup.png


BIN
public/media/header_customized_model.png


BIN
public/media/hotspot_setup.png


BIN
public/media/http_header.png


BIN
public/media/http_header_get.png


BIN
public/media/http_header_post.png


Some files were not shown because too many files changed in this diff