diff --git a/package-lock.json b/package-lock.json
index b958b1b96..7cf36f760 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,9 +23,12 @@
"@types/w3c-web-usb": "^1.0.6",
"bowser": "^2.11.0",
"chart.js": "^4.2.1",
+ "fake-indexeddb": "^6.2.5",
"framer-motion": "^10.2.4",
+ "idb": "^8.0.3",
"lodash.camelcase": "^4.3.0",
"lodash.debounce": "^4.0.8",
+ "lodash.orderby": "^4.6.0",
"lodash.upperfirst": "^4.3.1",
"ml4f": "git://github.com/microsoft/ml4f#v1.10.1",
"react": "^18.3.1",
@@ -35,6 +38,7 @@
"react-intl": "^6.6.8",
"react-router": "^6.24.0",
"react-router-dom": "^6.24.0",
+ "uuid": "^13.0.0",
"zustand": "^4.5.5"
},
"devDependencies": {
@@ -48,6 +52,7 @@
"@types/ejs": "^3.1.5",
"@types/lodash.camelcase": "^4.3.9",
"@types/lodash.debounce": "^4.0.9",
+ "@types/lodash.orderby": "^4.6.9",
"@types/lodash.upperfirst": "^4.3.9",
"@types/node": "^18.16.0",
"@types/react": "^18.3.3",
@@ -4703,6 +4708,16 @@
"@types/lodash": "*"
}
},
+ "node_modules/@types/lodash.orderby": {
+ "version": "4.6.9",
+ "resolved": "https://registry.npmjs.org/@types/lodash.orderby/-/lodash.orderby-4.6.9.tgz",
+ "integrity": "sha512-T9o2wkIJOmxXwVTPTmwJ59W6eTi2FseiLR369fxszG649Po/xe9vqFNhf/MtnvT5jrbDiyWKxPFPZbpSVK0SVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
"node_modules/@types/lodash.upperfirst": {
"version": "4.3.9",
"resolved": "https://registry.npmjs.org/@types/lodash.upperfirst/-/lodash.upperfirst-4.3.9.tgz",
@@ -7312,6 +7327,15 @@
"node": ">=12.0.0"
}
},
+ "node_modules/fake-indexeddb": {
+ "version": "6.2.5",
+ "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-6.2.5.tgz",
+ "integrity": "sha512-CGnyrvbhPlWYMngksqrSSUT1BAVP49dZocrHuK0SvtR0D5TMs5wP0o3j7jexDJW01KSadjBp1M/71o/KR3nD1w==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -7941,6 +7965,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/idb": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.3.tgz",
+ "integrity": "sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg==",
+ "license": "ISC"
+ },
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
@@ -9276,6 +9306,12 @@
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
},
+ "node_modules/lodash.orderby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
+ "integrity": "sha512-T0rZxKmghOOf5YPnn8EY5iLYeWCpZq8G41FfqoVHH5QDTAFaghJRmAdLiadEDq+ztgM2q5PjA+Z1fOwGrLgmtg==",
+ "license": "MIT"
+ },
"node_modules/lodash.upperfirst": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
@@ -11429,6 +11465,19 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/uuid": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
+ "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist-node/bin/uuid"
+ }
+ },
"node_modules/vega": {
"version": "5.20.0",
"resolved": "https://registry.npmjs.org/vega/-/vega-5.20.0.tgz",
diff --git a/package.json b/package.json
index acfc2076d..191d6ca13 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"@types/ejs": "^3.1.5",
"@types/lodash.camelcase": "^4.3.9",
"@types/lodash.debounce": "^4.0.9",
+ "@types/lodash.orderby": "^4.6.9",
"@types/lodash.upperfirst": "^4.3.9",
"@types/node": "^18.16.0",
"@types/react": "^18.3.3",
@@ -69,9 +70,12 @@
"@types/w3c-web-usb": "^1.0.6",
"bowser": "^2.11.0",
"chart.js": "^4.2.1",
+ "fake-indexeddb": "^6.2.5",
"framer-motion": "^10.2.4",
+ "idb": "^8.0.3",
"lodash.camelcase": "^4.3.0",
"lodash.debounce": "^4.0.8",
+ "lodash.orderby": "^4.6.0",
"lodash.upperfirst": "^4.3.1",
"ml4f": "git://github.com/microsoft/ml4f#v1.10.1",
"react": "^18.3.1",
@@ -81,6 +85,7 @@
"react-intl": "^6.6.8",
"react-router": "^6.24.0",
"react-router-dom": "^6.24.0",
+ "uuid": "^13.0.0",
"zustand": "^4.5.5"
}
}
diff --git a/src/App.tsx b/src/App.tsx
index 28b46d453..a2569fbbf 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -12,13 +12,16 @@ import {
createWebBluetoothConnection,
createWebUSBConnection,
} from "@microbit/microbit-connection";
-import React, { ReactNode, useEffect, useMemo, useRef } from "react";
+import React, { ReactNode, Suspense, useEffect, useMemo, useRef } from "react";
import { useIntl } from "react-intl";
import {
+ Await,
createBrowserRouter,
+ defer,
Outlet,
RouterProvider,
ScrollRestoration,
+ useLoaderData,
useNavigate,
} from "react-router-dom";
import "theme-package/fonts/fonts.css";
@@ -47,7 +50,7 @@ import ImportPage from "./pages/ImportPage";
import NewPage from "./pages/NewPage";
import TestingModelPage from "./pages/TestingModelPage";
import OpenSharedProjectPage from "./pages/OpenSharedProjectPage";
-import { useStore } from "./store";
+import { loadProjectFromStorage, useStore } from "./store";
import {
createCodePageUrl,
createDataSamplesPageUrl,
@@ -57,6 +60,7 @@ import {
createNewPageUrl,
createTestingModelPageUrl,
} from "./urls";
+import LoadingPage from "./components/LoadingPage";
export interface ProviderLayoutProps {
children: ReactNode;
@@ -112,6 +116,7 @@ const Layout = () => {
const navigate = useNavigate();
const toast = useToast();
const intl = useIntl();
+ const { projectLoaded } = useLoaderData() as { projectLoaded: boolean };
useEffect(() => {
return useStore.subscribe(
@@ -138,23 +143,36 @@ const Layout = () => {
}, [intl, navigate, setPostImportDialogState, toast]);
return (
- // We use this even though we have errorElement as this does logging.
-
-
-
-
-
-
-
+ }>
+
+ {/* We use this even though we have errorElement as this does logging. */}
+
+
+
+
+
+
+
+
+
);
};
const createRouter = () => {
+ let loaderFuncCalled = false;
return createBrowserRouter([
{
id: "root",
path: "",
element: ,
+ loader: () => {
+ if (!loaderFuncCalled) {
+ loaderFuncCalled = true;
+ const projectLoaded = loadProjectFromStorage();
+ return defer({ projectLoaded });
+ }
+ return { projectLoaded: true };
+ },
// This one gets used for loader errors (typically offline)
// We set an error boundary inside the routes too that logs render-time errors.
// ErrorBoundary doesn't work properly in the loader case at least.
diff --git a/src/components/ActionCertaintyCard.tsx b/src/components/ActionCertaintyCard.tsx
index 0ecb11376..510bc047e 100644
--- a/src/components/ActionCertaintyCard.tsx
+++ b/src/components/ActionCertaintyCard.tsx
@@ -28,7 +28,7 @@ interface ActionCertaintyCardProps {
requiredConfidence?: number;
onThresholdChange: (val: number) => void;
actionName: string;
- actionId: number;
+ actionId: string;
disabled?: boolean;
}
@@ -42,7 +42,7 @@ const ActionCertaintyCard = ({
const intl = useIntl();
const barWidth = 240;
const predictionResult = useStore((s) => s.predictionResult);
- const isTriggered = predictionResult?.detected?.ID === actionId;
+ const isTriggered = predictionResult?.detected?.id === actionId;
const colorScheme = useMemo(
() => (isTriggered ? "brand2.500" : undefined),
[isTriggered]
diff --git a/src/components/ActionDataSamplesCard.tsx b/src/components/ActionDataSamplesCard.tsx
index b578c1194..789d2db74 100644
--- a/src/components/ActionDataSamplesCard.tsx
+++ b/src/components/ActionDataSamplesCard.tsx
@@ -46,7 +46,7 @@ interface ActionDataSamplesCardProps {
selected: boolean;
onSelectRow?: () => void;
onRecord?: (recordingOptions: RecordingOptions) => void;
- newRecordingId?: number;
+ newRecordingId?: string;
clearNewRecordingId?: () => void;
}
@@ -84,7 +84,7 @@ const ActionDataSamplesCard = ({
deleteActionRecording(value.ID, idx)}
+ onClick={() => deleteActionRecording(value.id, recording.id)}
/>
(
- `record-button-${action.ID}`;
+ `record-button-${action.id}`;
const RecordingArea = ({
action,
@@ -319,12 +319,12 @@ const DataSample = ({
}: {
recording: RecordingData;
numRecordings: number;
- actionId: number;
+ actionId: string;
actionName: string;
recordingIndex: number;
isNew: boolean;
onNewAnimationEnd?: () => void;
- onDelete: (actionId: ActionData["ID"], recordingIdx: number) => void;
+ onDelete: (actionId: string, recordingId: string) => void;
view: DataSamplesView;
hasClose?: boolean;
}) => {
@@ -336,10 +336,10 @@ const DataSample = ({
view === DataSamplesView.GraphAndDataFeatures;
const intl = useIntl();
const handleDelete = useCallback(() => {
- onDelete(actionId, recordingIndex);
- }, [actionId, onDelete, recordingIndex]);
+ onDelete(actionId, recording.id);
+ }, [actionId, onDelete, recording.id]);
return (
-
+
{hasClose && (
- `action-name-input-${action.ID}`;
+ `action-name-input-${action.id}`;
const ActionNameCard = ({
value,
@@ -55,19 +55,23 @@ const ActionNameCard = ({
const toastId = "name-too-long-toast";
const setActionName = useStore((s) => s.setActionName);
const setActionIcon = useStore((s) => s.setActionIcon);
- const { icon, ID: id } = value;
+ const { icon, id } = value;
const [localName, setLocalName] = useState(value.name);
+ useEffect(() => {
+ // Occurs when the name is updated in another tab.
+ setLocalName(value.name);
+ }, [value.name]);
const predictionResult = useStore((s) => s.predictionResult);
const isTriggered =
viewMode === ActionCardNameViewMode.ReadOnly
- ? predictionResult?.detected?.ID === value.ID
+ ? predictionResult?.detected?.id === value.id
: undefined;
const debouncedSetActionName = useMemo(
() =>
debounce(
- (id: ActionData["ID"], name: string) => {
- setActionName(id, name);
+ async (id: string, name: string) => {
+ await setActionName(id, name);
},
400,
{ leading: true }
@@ -76,7 +80,7 @@ const ActionNameCard = ({
);
const onChange: React.ChangeEventHandler = useCallback(
- (e) => {
+ async (e) => {
const name = e.target.value;
// Validate action name length
if (name.length >= actionNameMaxLength && !toast.isActive(toastId)) {
@@ -94,14 +98,14 @@ const ActionNameCard = ({
return;
}
setLocalName(name);
- debouncedSetActionName(id, name);
+ await debouncedSetActionName(id, name);
},
[debouncedSetActionName, id, intl, toast]
);
const handleIconSelected = useCallback(
- (icon: MakeCodeIcon) => {
- setActionIcon(id, icon);
+ async (icon: MakeCodeIcon) => {
+ await setActionIcon(id, icon);
},
[id, setActionIcon]
);
diff --git a/src/components/DataSamplesMenu.tsx b/src/components/DataSamplesMenu.tsx
index 92a1a5d74..8081b72d9 100644
--- a/src/components/DataSamplesMenu.tsx
+++ b/src/components/DataSamplesMenu.tsx
@@ -59,18 +59,18 @@ const DataSamplesMenu = () => {
downloadDataset();
}, [downloadDataset, actions, logging]);
const deleteAllActions = useStore((s) => s.deleteAllActions);
- const handleDeleteAllActions = useCallback(() => {
+ const handleDeleteAllActions = useCallback(async () => {
logging.event({
type: "dataset-delete",
});
- deleteAllActions();
+ await deleteAllActions();
closeDialog();
}, [closeDialog, deleteAllActions, logging]);
const handleSave = useCallback(
- (newName?: string) => {
+ async (newName?: string) => {
if (newName) {
- setProjectName(newName);
+ await setProjectName(newName);
}
download();
closeDialog();
diff --git a/src/components/DataSamplesTable.tsx b/src/components/DataSamplesTable.tsx
index 1f6d7ffcf..e2bc25510 100644
--- a/src/components/DataSamplesTable.tsx
+++ b/src/components/DataSamplesTable.tsx
@@ -104,7 +104,7 @@ const DataSamplesTable = ({
const loadProjectInputRef = useRef(null);
// For adding flashing animation for new recording.
- const [newRecordingId, setNewRecordingId] = useState(
+ const [newRecordingId, setNewRecordingId] = useState(
undefined
);
@@ -138,13 +138,21 @@ const DataSamplesTable = ({
const tourStart = useStore((s) => s.tourStart);
const handleRecordingComplete = useCallback(
- ({ mostRecentRecordingId, recordingCount }: RecordingCompleteDetail) => {
+ async ({
+ mostRecentRecordingId,
+ recordingCount,
+ }: RecordingCompleteDetail) => {
setNewRecordingId(mostRecentRecordingId);
- tourStart({ name: "DataSamplesRecorded", recordingCount });
+ await tourStart({ name: "DataSamplesRecorded", recordingCount });
},
[tourStart]
);
+ const handleConfirm = useCallback(async () => {
+ await deleteAction(selectedAction);
+ closeDialog();
+ }, [closeDialog, deleteAction, selectedAction]);
+
const actionNameInputEl = useCallback(
(idx: number) => document.getElementById(actionNameInputId(actions[idx])),
[actions]
@@ -205,14 +213,11 @@ const DataSamplesTable = ({
/>
}
- onConfirm={() => {
- deleteAction(selectedAction.ID);
- closeDialog();
- }}
+ onConfirm={handleConfirm}
onCancel={closeDialog}
/>
{actions.map((action, idx) => (
setNewRecordingId(undefined)}
- selected={selectedAction.ID === action.ID}
+ selected={selectedAction.id === action.id}
onSelectRow={() => setSelectedActionIdx(idx)}
onRecord={handleRecord}
showHints={showHints}
diff --git a/src/components/DataSamplesTableRow.tsx b/src/components/DataSamplesTableRow.tsx
index dee9446a5..398287014 100644
--- a/src/components/DataSamplesTableRow.tsx
+++ b/src/components/DataSamplesTableRow.tsx
@@ -20,7 +20,7 @@ interface DataSamplesTableRowProps {
onSelectRow?: () => void;
onRecord?: (recordingOptions: RecordingOptions) => void;
showHints: boolean;
- newRecordingId?: number;
+ newRecordingId?: string;
clearNewRecordingId?: () => void;
onDeleteAction?: () => void;
renameShortcutScopeRef?: (instance: RefType) => void;
@@ -41,51 +41,49 @@ const DataSamplesTableRow = ({
const intl = useIntl();
return (
- <>
-
+
+
+
+
+ {showHints ? (
+
+ ) : (
-
+ {(action.name.length > 0 || action.recordings.length > 0) && (
+
+ )}
- {showHints ? (
-
- ) : (
-
- {(action.name.length > 0 || action.recordings.length > 0) && (
-
- )}
-
- )}
-
- >
+ )}
+
);
};
diff --git a/src/components/EditCodeDialog.tsx b/src/components/EditCodeDialog.tsx
index 8b501e9ed..79bbf1393 100644
--- a/src/components/EditCodeDialog.tsx
+++ b/src/components/EditCodeDialog.tsx
@@ -17,7 +17,7 @@ const EditCodeDialog = forwardRef(
const tourStart = useStore((s) => s.tourStart);
useEffect(() => {
if (isOpen) {
- tourStart({ name: "MakeCode" });
+ void tourStart({ name: "MakeCode" });
}
}, [isOpen, tourStart]);
return (
diff --git a/src/components/HelpMenuItems.tsx b/src/components/HelpMenuItems.tsx
index 6ebbb60a4..eb3c96708 100644
--- a/src/components/HelpMenuItems.tsx
+++ b/src/components/HelpMenuItems.tsx
@@ -19,6 +19,7 @@ import { TourTrigger } from "../model";
import { useStore } from "../store";
import { userGuideUrl } from "../utils/external-links";
import { createDataSamplesPageUrl, createTestingModelPageUrl } from "../urls";
+import { useCallback } from "react";
interface HelpMenuItemsProps {
onAboutDialogOpen: () => void;
@@ -130,18 +131,16 @@ const TourMenuItem = ({
}: TourMenuItemProps) => {
const tourStart = useStore((s) => s.tourStart);
const { isConnected } = useConnectionStage();
+ const handleClick = useCallback(async () => {
+ if (!isConnected) {
+ onConnectFirstDialogOpen();
+ } else {
+ await tourStart(tourTrigger!, true);
+ }
+ }, [isConnected, onConnectFirstDialogOpen, tourStart, tourTrigger]);
if (tourTrigger) {
return (
-
);
diff --git a/src/components/LanguageDialog.tsx b/src/components/LanguageDialog.tsx
index 68a207eef..efe171f56 100644
--- a/src/components/LanguageDialog.tsx
+++ b/src/components/LanguageDialog.tsx
@@ -55,8 +55,8 @@ export const LanguageDialog = ({
}: LanguageDialogProps) => {
const setLanguage = useStore((s) => s.setLanguage);
const handleChooseLanguage = useCallback(
- (languageId: string) => {
- setLanguage(languageId);
+ async (languageId: string) => {
+ await setLanguage(languageId);
onClose();
},
[onClose, setLanguage]
diff --git a/src/components/LiveGraphLabels.tsx b/src/components/LiveGraphLabels.tsx
index d5678e8e3..1761076de 100644
--- a/src/components/LiveGraphLabels.tsx
+++ b/src/components/LiveGraphLabels.tsx
@@ -84,8 +84,8 @@ const LiveGraphLabels = () => {
return (
- {labelConfig.map((config, idx) => (
-
+ {labelConfig.map((config) => (
+
{
+ return (
+
+
+
+ }
+ itemsLeftProps={{ width: 0 }}
+ />
+
+
+
+
+
+ );
+};
+
+export default LoadingPage;
diff --git a/src/components/NameProjectDialog.tsx b/src/components/NameProjectDialog.tsx
index b5e14640e..4bebb953d 100644
--- a/src/components/NameProjectDialog.tsx
+++ b/src/components/NameProjectDialog.tsx
@@ -24,7 +24,7 @@ import {
import { useCallback, useState } from "react";
import { FormattedMessage } from "react-intl";
import { useProjectName } from "../hooks/project-hooks";
-import { validateProjectName } from "../project-name";
+import { validateProjectName } from "../project-utils";
interface NameProjectDialogProps {
onClose: () => void;
diff --git a/src/components/RecordingDialog.tsx b/src/components/RecordingDialog.tsx
index 42b6db7c3..c2009e338 100644
--- a/src/components/RecordingDialog.tsx
+++ b/src/components/RecordingDialog.tsx
@@ -20,9 +20,10 @@ import {
} from "@chakra-ui/react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { FormattedMessage, useIntl } from "react-intl";
+import { v4 as uuid } from "uuid";
import { TimedXYZ } from "../buffered-data";
import { useBufferedData } from "../buffered-data-hooks";
-import { ActionData, XYZData } from "../model";
+import { XYZData } from "../model";
import { useStore } from "../store";
interface CountdownStage {
@@ -37,7 +38,7 @@ export interface RecordingOptions {
}
export interface RecordingCompleteDetail {
- mostRecentRecordingId: number;
+ mostRecentRecordingId: string | undefined;
recordingCount: number;
}
@@ -45,7 +46,7 @@ export interface RecordingDialogProps {
isOpen: boolean;
onClose: () => void;
actionName: string;
- actionId: ActionData["ID"];
+ actionId: string;
onRecordingComplete: (detail: RecordingCompleteDetail) => void;
recordingOptions: RecordingOptions;
}
@@ -68,10 +69,10 @@ const RecordingDialog = ({
const intl = useIntl();
const toast = useToast();
const recordingCountRef = useRef(0);
- const mostRecentRecordingIdRef = useRef(-1);
+ const mostRecentRecordingIdRef = useRef();
const recordingStarted = useStore((s) => s.recordingStarted);
const recordingStopped = useStore((s) => s.recordingStopped);
- const addActionRecordings = useStore((s) => s.addActionRecordings);
+ const addActionRecording = useStore((s) => s.addActionRecording);
const recordingDataSource = useRecordingDataSource();
const [recordingStatus, setRecordingStatus] = useState(
RecordingStatus.None
@@ -103,7 +104,7 @@ const RecordingDialog = ({
const mostRecentRecordingId = mostRecentRecordingIdRef.current;
recordingCountRef.current = 0;
- mostRecentRecordingIdRef.current = -1;
+ mostRecentRecordingIdRef.current = undefined;
recordingStopped();
setRecordingStatus(RecordingStatus.None);
setCountdownStageIndex(0);
@@ -156,11 +157,15 @@ const RecordingDialog = ({
const startRecordingInternal = useCallback(() => {
recordingDataSource.startRecording({
- onDone(data) {
- const recordingId = Date.now();
+ async onDone(data) {
+ const recordingId = uuid();
mostRecentRecordingIdRef.current = recordingId;
recordingCountRef.current++;
- addActionRecordings(actionId, [{ ID: recordingId, data }]);
+ await addActionRecording(actionId, {
+ id: recordingId,
+ data,
+ createdAt: Date.now(),
+ });
if (continuousRecording && recordingsRemaining) {
continueRecording();
} else if (!continuousRecording && recordingsRemaining) {
@@ -193,7 +198,7 @@ const RecordingDialog = ({
onProgress: setProgress,
});
}, [
- addActionRecordings,
+ addActionRecording,
continueRecording,
continuousRecording,
decrementRecordingsRemaining,
diff --git a/src/components/RecordingFingerprint.tsx b/src/components/RecordingFingerprint.tsx
index f15cfc2b4..9f54be3fe 100644
--- a/src/components/RecordingFingerprint.tsx
+++ b/src/components/RecordingFingerprint.tsx
@@ -37,10 +37,10 @@ const RecordingFingerprint = ({
templateColumns={`repeat(${Object.keys(dataFeatures).length}, 1fr)`}
{...rest}
>
- {Object.keys(dataFeatures).map((k, idx) => (
+ {Object.keys(dataFeatures).map((k) => (
diff --git a/src/components/SaveDialogs.tsx b/src/components/SaveDialogs.tsx
index 5d764705f..0734c3301 100644
--- a/src/components/SaveDialogs.tsx
+++ b/src/components/SaveDialogs.tsx
@@ -29,7 +29,7 @@ const SaveDialogs = () => {
const handleSave = useCallback(
async (newName?: string) => {
if (newName) {
- setProjectName(newName);
+ await setProjectName(newName);
}
await saveHex(hex);
},
diff --git a/src/components/ShowGraphsCheckbox.tsx b/src/components/ShowGraphsCheckbox.tsx
index 7d2d5aa92..8daaf1e3b 100644
--- a/src/components/ShowGraphsCheckbox.tsx
+++ b/src/components/ShowGraphsCheckbox.tsx
@@ -15,10 +15,10 @@ const ShowGraphsCheckbox = () => {
const setShowGraphs = useStore((s) => s.setShowGraphs);
const handleShowGraphOnChange = useCallback(
- (e: React.ChangeEvent) => {
+ async (e: React.ChangeEvent) => {
const isChecked = e.target.checked;
- setShowGraphs(isChecked);
- setDataSamplesView(
+ await setShowGraphs(isChecked);
+ await setDataSamplesView(
isChecked
? DataSamplesView.GraphAndDataFeatures
: DataSamplesView.DataFeatures
diff --git a/src/components/TestingModelTable.tsx b/src/components/TestingModelTable.tsx
index a6c77a459..ae8c15c21 100644
--- a/src/components/TestingModelTable.tsx
+++ b/src/components/TestingModelTable.tsx
@@ -83,11 +83,11 @@ const TestingModelTable = () => {
h="fit-content"
alignSelf="start"
>
- {actions.map((action, idx) => {
+ {actions.map((action) => {
const { requiredConfidence: threshold } = action;
return (
{
- setRequiredConfidence(action.ID, val)
+ setRequiredConfidence(action.id, val)
}
requiredConfidence={
threshold ?? mlSettings.defaultRequiredConfidence
diff --git a/src/components/ViewDataFeaturesMenuItem.tsx b/src/components/ViewDataFeaturesMenuItem.tsx
index e85924847..8003e4b99 100644
--- a/src/components/ViewDataFeaturesMenuItem.tsx
+++ b/src/components/ViewDataFeaturesMenuItem.tsx
@@ -15,16 +15,16 @@ const ViewDataFeaturesMenuItem = () => {
const showGraphs = useStore((s) => s.settings.showGraphs);
const setDataSamplesView = useStore((s) => s.setDataSamplesView);
- const handleShowDataFeatures = useCallback(() => {
- setDataSamplesView(
+ const handleShowDataFeatures = useCallback(async () => {
+ await setDataSamplesView(
showGraphs
? DataSamplesView.GraphAndDataFeatures
: DataSamplesView.DataFeatures
);
}, [setDataSamplesView, showGraphs]);
- const handleHideDataFeatures = useCallback(() => {
- setDataSamplesView(DataSamplesView.Graph);
+ const handleHideDataFeatures = useCallback(async () => {
+ await setDataSamplesView(DataSamplesView.Graph);
}, [setDataSamplesView]);
return (
diff --git a/src/e2e/app/data-samples.ts b/src/e2e/app/data-samples.ts
index 0ac48c3db..fcc3a775f 100644
--- a/src/e2e/app/data-samples.ts
+++ b/src/e2e/app/data-samples.ts
@@ -32,8 +32,8 @@ export class DataSamplesPage {
return response;
}
- expectUrl() {
- expect(this.page.url()).toEqual(this.url);
+ async expectUrl() {
+ return this.page.waitForURL(this.url, { timeout: 3_000 });
}
async closeDialog() {
@@ -55,11 +55,11 @@ export class DataSamplesPage {
async expectOnPage() {
await expect(this.heading).toBeVisible();
- this.expectUrl();
+ await this.expectUrl();
}
async expectCorrectInitialState() {
- this.expectUrl();
+ await this.expectUrl();
await expect(this.heading).toBeVisible({ timeout: 10000 });
}
diff --git a/src/e2e/open-shared-project-page.spec.ts b/src/e2e/open-shared-project-page.spec.ts
index 62440f81d..3c2b7e30c 100644
--- a/src/e2e/open-shared-project-page.spec.ts
+++ b/src/e2e/open-shared-project-page.spec.ts
@@ -35,7 +35,7 @@ test.describe("import shared page", () => {
// try import
await openSharedProjectPage.clickOpenProjectBtn();
// importing the loaded project
- dataSamplesPage.expectUrl();
+ await dataSamplesPage.expectUrl();
});
test("error", async ({ openSharedProjectPage }) => {
diff --git a/src/hooks/project-hooks.tsx b/src/hooks/project-hooks.tsx
index 1108951d8..5b0dc6e46 100644
--- a/src/hooks/project-hooks.tsx
+++ b/src/hooks/project-hooks.tsx
@@ -28,7 +28,7 @@ import {
PostImportDialogState,
SaveStep,
} from "../model";
-import { untitledProjectName as untitled } from "../project-name";
+import { untitledProjectName as untitled } from "../project-utils";
import { useStore } from "../store";
import {
createCodePageUrl,
@@ -315,7 +315,7 @@ export const ProjectProvider = ({
const actionsString = await readFileAsText(file);
const actions = JSON.parse(actionsString) as unknown;
if (isDatasetUserFileFormat(actions)) {
- loadDataset(actions);
+ await loadDataset(actions);
navigate(createDataSamplesPageUrl());
} else {
setPostImportDialogState(PostImportDialogState.Error);
@@ -428,12 +428,12 @@ export const ProjectProvider = ({
const editorChange = useStore((s) => s.editorChange);
const onWorkspaceSave = useCallback(
- (event: EditorWorkspaceSaveRequest) => {
+ async (event: EditorWorkspaceSaveRequest) => {
if (!checkIfLangChanged()) {
// We don't want to handle these events until MakeCode has been
// reinitialised after a language change.
// We should reinitialise with the latest project.
- editorChange(event.project);
+ await editorChange(event.project);
}
},
[checkIfLangChanged, editorChange]
diff --git a/src/makecode/__snapshots__/utils.test.ts.snap b/src/makecode/__snapshots__/utils.test.ts.snap
index 431acf673..bd1dc82bf 100644
--- a/src/makecode/__snapshots__/utils.test.ts.snap
+++ b/src/makecode/__snapshots__/utils.test.ts.snap
@@ -7,16 +7,20 @@ exports[`test project generation > generates a project 1`] = `
"autogenerated.ts": "// Auto-generated. Do not edit.
namespace ml {
export namespace event {
- //% fixedInstance block="still"
- export const Still = new MlEvent(2, "still");
- //% fixedInstance block="wave"
- export const Wave = new MlEvent(3, "wave");
- //% fixedInstance block="clap"
- export const Clap = new MlEvent(4, "clap");
+ //% fixedInstance block="Not a spell"
+ export const NotASpell = new MlEvent(2, "Not a spell");
+ //% fixedInstance block="poke"
+ export const Poke = new MlEvent(3, "poke");
+ //% fixedInstance block="waggle"
+ export const Waggle = new MlEvent(4, "waggle");
+ //% fixedInstance block="flick"
+ export const Flick = new MlEvent(5, "flick");
+ //% fixedInstance block="circle"
+ export const Circle = new MlEvent(6, "circle");
}
- events = [event.Unknown,event.Still,event.Wave,event.Clap];
+ events = [event.Unknown,event.NotASpell,event.Poke,event.Waggle,event.Flick,event.Circle];
control.onEvent(MlRunnerIds.MlRunnerInference, 1, () => {
if (!event.Unknown.onStartHandler) {
@@ -24,23 +28,33 @@ namespace ml {
}
});
control.onEvent(MlRunnerIds.MlRunnerInference, 2, () => {
- if (!event.Still.onStartHandler) {
- maybeUpdateEventStats(event.Still);
+ if (!event.NotASpell.onStartHandler) {
+ maybeUpdateEventStats(event.NotASpell);
}
});
control.onEvent(MlRunnerIds.MlRunnerInference, 3, () => {
- if (!event.Wave.onStartHandler) {
- maybeUpdateEventStats(event.Wave);
+ if (!event.Poke.onStartHandler) {
+ maybeUpdateEventStats(event.Poke);
}
});
control.onEvent(MlRunnerIds.MlRunnerInference, 4, () => {
- if (!event.Clap.onStartHandler) {
- maybeUpdateEventStats(event.Clap);
+ if (!event.Waggle.onStartHandler) {
+ maybeUpdateEventStats(event.Waggle);
+ }
+ });
+ control.onEvent(MlRunnerIds.MlRunnerInference, 5, () => {
+ if (!event.Flick.onStartHandler) {
+ maybeUpdateEventStats(event.Flick);
+ }
+ });
+ control.onEvent(MlRunnerIds.MlRunnerInference, 6, () => {
+ if (!event.Circle.onStartHandler) {
+ maybeUpdateEventStats(event.Circle);
}
});
getModelBlob = (): Buffer => {
- const result = hex\`4C444F4D38001400320003000000000000000003CDCC4C3F067374696C6C0000CDCC4C3F0577617665000000CDCC4C3F05636C6170000000620F47304D4C344650000000700D0000A40500000000000000000000A80000000800000001000000080000000100000000000000000000000000000000000000180000000000000003000000000000002DE9F05F0F460169091839600021796038680346B3EC1E1A07F2080292EC010A20EE010A30EE210AA2EC010A92EC010A20EE020A30EE220AA2EC010A92EC010A20EE030A30EE230AA2EC010A92EC010A20EE040A30EE240AA2EC010A92EC010A20EE050A30EE250AA2EC010A92EC010A20EE060A30EE260AA2EC010A92EC010A20EE070A30EE270AA2EC010A92EC010A20EE080A30EE280AA2EC010A92EC010A20EE090A30EE290AA2EC010A92EC010A20EE0A0A30EE2A0AA2EC010A92EC010A20EE0B0A30EE2B0AA2EC010A92EC010A20EE0C0A30EE2C0AA2EC010A92EC010A20EE0D0A30EE2D0AA2EC010A92EC010A20EE0E0A30EE2E0AA2EC010A92EC010A20EE0F0A30EE2F0AA2EC010A02F22402B3EC121A07F2440292EC010A20EE010A30EE210AA2EC010A92EC010A20EE020A30EE220AA2EC010A92EC010A20EE030A30EE230AA2EC010A92EC010A20EE040A30EE240AA2EC010A92EC010A20EE050A30EE250AA2EC010A92EC010A20EE060A30EE260AA2EC010A92EC010A20EE070A30EE270AA2EC010A92EC010A20EE080A30EE280AA2EC010A92EC010A20EE090A30EE290AA2EC010A02F23C02386800F2C00307F268021024B3EC010A07F20801F1EC0E0AF3EC0E7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A65EEAC5A30EE050A26EE0D6A30EE250A66EEAD6A30EE060A27EE0E7A30EE260A30EE070AF1EC0A0AF3EC0A7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A30EE050AA2EC010A013C8FD107F2680210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C2386800F2007307F208020324B3EC010A07F26801F1EC0E0AF3EC0E7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A65EEAC5A30EE050A26EE0D6A30EE250A66EEAD6A30EE060A27EE0E7A30EE260A30EE070AF1EC020AF3EC027A60EEA70A21EE081A30EE200A30EE010AA2EC010A013CAFD107F208021046032100F002F8BDE8F09F012938B5D0ED002A29D9031D00EB8102F3EC017AF4EE627AF1EE10FAC8BFF0EE672A9A42F4D1002402EE104A054695ED000A30EE620A00F015F80134A14232EE002AA5EC010AF2D8002390ED007AC7EE027A01339942E0EC017AF6D838BD0029E1D138BDDFED297AB4EEE70AF1EE10FA48D4DFED277AB4EEE70AF1EE10FA3ADCDFED247ADFED244A9FED243ADFED243A9FED245A9FED244ADFED245A9FED246ADFED246A60EE277AB7EE007A77EEA47A77EEE47AA7EE830AFDEEE74AA7EEA30AF0EE457AE4EE007A14EE903AE7EE805AA5EE806AE6EE006AF0EE667AF0EE476AE7EE806AA6EE807A17EE102A02EBC35300EE103A7047DFED107AB7EE007A87EE270A70479FED0C0A704700000000AAC20000AE423BAAB83F0000404B007231BF8EBEBFB56E2F093C00A0B43AADAD2A3D28AA2A3EFBFFFF3E00000000DB2F3040CC83473E7918C73F9929C0BFD5D4943FA2BF6BBF76642F4024A45D3FD679634058370E3D232CF43FC629CDBDA4DAE03F45CFC73F6B82F63FF62E04408B6ED73FAFB6D53F17AB8A408DC75ABF8F3643409379BFBFDBC52840FB4F93BF73B80A3F0042C8BFB7D1E93E4AF4A8BF6B97F23E8039A7BF2390C03D68C612C006C4BD3D77910EC06B978E3DC81105C0489F9940212B0DBD3E0DB340C4538FBE2150BE40258886BE8CB767405710F1BFB5CE3C408672E0BF81F045402A780AC0C05A11BD441C45BD76938BBE7168D03EF11E1B3E84C5A03CD831ADBE2EBAA33D5A31F63D8C8E11BD09914ABD6DE2273CDB2A293D39918ABE31D96B3E760E74BD650DDB3C4EDA6F3D71C208BE01B3A63E3C42673E9659E5BDADE0683E5A85C0BE0D0189BD48D45DBC52D349BC26158B3E4F86573D81D6FD3DD6B396BE6B99ECBD60A162BD4DE8FD3DCED8BD3EC279C2BE048A823D181734BE2A7F16BDF32050BE3503463E4B11E23EAB5A6DBD26DEF83EE8792A3E068FA23C00BF143EBE6F6E3EB2DCDCBCE6065C3D6D71083EC3371EBE4A819B3EACF053BE42F9D6BC4A8D953DBDEE14BE0554AF3E8CF14ABF4D3F953EA6D645BEFD98163F502D1F3CD134773E87357B3E3134143E57116FBEEE640F3F2D78823D350FEE3BF67DDCBEAA1E19BD461E1FBEE425963E38C703BF246FCEBCA4C03C3D4F7581BD4B7ADC3DBBE3C13C7291F43D3F8AE6BD3283AE3D39336FBEA89739BE8DE6B43E0FE83BBEA0CB963D3796EE3D9703DF3EF3CB7B3E6BA3B7BE82DE053ED860DF3C40B4B3BE96376C3E24DAEDBE074C8BBC8713B43DBF2799BE2E1DFFBC6630E63D7EA182BE0AE6DBBEBF75EA3E401D96BBC6F8B73ED2DB2CBE1167AA3ED81019BE47BF7E3D46CA9EBE26D9293EA7CE83BEDCD661BDDEEDDC3D9C76E1BDC5A2623E4C6B933E253695BE48459D3E779B4D3EF053E03D5413B43C86D03B3ECB7AB6BC01FF5A3D16E39DBE76B107BEC54E943E59177A3EBBC05C3E106ACF3EC2AFC7BD6F31363E16E09C3E97AD38BE7DF0393EC9318C3DD8C790BEB8A2F0BD1A0CAC3E6AAC19BF279FBABB0927FABA207CBFBEBCA0233D95A190BDA2B9073EC3B02CBACFEC623C8FEB1CBE06D779BE8A5EB5BCF93158BE8B90B83E24601BBEF8C07E3E4BD9AF3E2AF0D9BE18B4E53E3A91013D92D2023DEB698CBB7707FE3D2914B0BE0C5451BDAD7E7FBEEA2D05BEB1A19DBE6DD648BEAB781CBE9F22313E651AC63ED9121FBDF0DCDB3C26EE89BC5BDBE7BD6604B6BE4D8921BE291B52BD09FC16BEFDE191BE583A653E0DE13C3BCC762FBD0F5F253EA4FB34BE33539CBE017830BED3429C3DAC7F64BDE3F4293DE95048BCA26CBE3E9F45A3BD88D59ABECB82363DCEDF813E8F23D23EA6F346BC8569A63E322B2D3D1BF7F13DC44BAD3E0DBC7E3E2C66773EF28215BEB376F73DE79A75BC8A4764BE210F52BEE482123EBAE925BD3F38B53D40AE6E3C2E28BBBC9AA9ADBE3A60DEBE63F94EBD33199F3E7240FCBE518E843EC12877BD0956733E0CE295BCDC81D6BDE1753DBD30F8943E7A3A123D74DBAD3D6BDEC1BDB8EAE0BBA0825DBCA0CF6A3ECD02C23E0484013EFB5DB43ED6289C3E383931BECA429DBEE2CFC63E785D57BD202BCC3AAE7921BE1919A13CC1C5433ED21EF83EF4EA3ABE0C4DC53E27A4873DDD0FE6BDE0BBB5BE653E923EB0DA5E3E09B931BFB8F10E3DD0E1AA3DAFB3403FA3CA58BEF7052FBE981CE7BD680DBA3DDE1D703E59FD19BECAC7403EAC8A7EBEA413553CF489C5BDF7BC15BEC284BE3E96D6043F603ECCBD943691BE1ED1F1BDE69B2ABDD82FBF3D5ECB71BECC36213E055AA63E0E5D00BC3C9351BBCC0A0F3E1FD3E8BC0131CEBE4CACB33D42654EBE9782A53C17EB9F3C558772BD5906DEBD32A93C3D7F52BD3DB8F2D33EA05E1BBE0DF67CBE48FF303D60309D3D4E73BDBE88FEB63DF622CA3BFCAB443DDAB5AD3B79CA3DBD0DCDF3BD23271FBEF4C1EA3C8725113ECCC27EBE7850B83E2BC850BE96CA0A3F1988053E7D45B5BDAEEA9E3CD281DDBDC1A583BE8DAA373EC07D213EC2DCE83DF75FA7BE764FB73E020907BDFA0D673E490B253D38FD8A3D0FBDBDBEC3DCAE3E5082F33E994CA93DA303563D77FC4DBC38EA82BEBBE24EBDDC78EBBD584C5B3B20098EBE54D1243EBDDE4A3E8CE0EF3C752CE33D94F2253EDB27CEBE4FE0133E309A1BBC1E9EC9BD6E9FE33DE7D0193F3A6DBDBDBA5DF03EAFD034BDB5D7793DF99D8DBE5D3597BE527D50BC218DBB3EB59C0DBE64C9093F50FD9F3DEEE7953E247509BF5CE09DBDAD1B8DBE54E4603D3654D9BEC1D262BDF8717D3E216302BFB6E6A73E930365BD1092853E231E72BEFADB453DB9493CBE04BDD03DFC2CBFBD155BBA3E40E29CBEC3F850BB9E16F43E435F07BEC210C93DFBBDD73E2F71613B9F45B33EF1FFB23BD2850FBFD369A9BE56CB73BED885963C40A96BBE86FE633E2A31BFBD305B45BD75A6C7BCEABD773D406DA0BD161EFF3DE91235BEFF1F27BDE22B1BBE060103BDFB14103D202214BF3B4388BE3EB72F3EB8A02C3F0F117C3E6A1D5E3EAD933ABDEA9299BE1B09BEBE2527B73DA2F81DBF7BF828BF99D50D3FB80D603F3224CF3ED515743DB713A13E41F86B3FEA854C3E7857E4BE39D914BFAF328EBEA14C11BFD0E2903E2013B63C1AF106BE068673BE7AFD4F3E1A98CD3EEC9DB73EE70F1BBF408E81BE6836B5BED0C760BEC3D81BBEFC2155BE7194FB3D66BDA03E0E6F38BDF2416FBE11D6CBBED3521D3F34624E3FC5BC8F3EF54744BE3970103F8D3E19BF65AE083D\`;
+ const result = hex\`4C444F4D58001400320003000000000000000005CDCC4C3F0C4E6F742061207370656C6C00000000CDCC4C3F05706F6B65000000CDCC4C3F07776167676C6500CDCC4C3F06666C69636B0000CDCC4C3F07636972636C6500620F47304D4C344650000000F80D0000A40500000000000000000000A80000000800000001000000080000000100000000000000000000000000000000000000180000000000000005000000000000002DE9F05F0F460169091839600021796038680346B3EC1E1A07F2080292EC010A20EE010A30EE210AA2EC010A92EC010A20EE020A30EE220AA2EC010A92EC010A20EE030A30EE230AA2EC010A92EC010A20EE040A30EE240AA2EC010A92EC010A20EE050A30EE250AA2EC010A92EC010A20EE060A30EE260AA2EC010A92EC010A20EE070A30EE270AA2EC010A92EC010A20EE080A30EE280AA2EC010A92EC010A20EE090A30EE290AA2EC010A92EC010A20EE0A0A30EE2A0AA2EC010A92EC010A20EE0B0A30EE2B0AA2EC010A92EC010A20EE0C0A30EE2C0AA2EC010A92EC010A20EE0D0A30EE2D0AA2EC010A92EC010A20EE0E0A30EE2E0AA2EC010A92EC010A20EE0F0A30EE2F0AA2EC010A02F22402B3EC121A07F2440292EC010A20EE010A30EE210AA2EC010A92EC010A20EE020A30EE220AA2EC010A92EC010A20EE030A30EE230AA2EC010A92EC010A20EE040A30EE240AA2EC010A92EC010A20EE050A30EE250AA2EC010A92EC010A20EE060A30EE260AA2EC010A92EC010A20EE070A30EE270AA2EC010A92EC010A20EE080A30EE280AA2EC010A92EC010A20EE090A30EE290AA2EC010A02F23C02386800F2C00307F268021024B3EC010A07F20801F1EC0E0AF3EC0E7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A65EEAC5A30EE050A26EE0D6A30EE250A66EEAD6A30EE060A27EE0E7A30EE260A30EE070AF1EC0A0AF3EC0A7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A30EE050AA2EC010A013C8FD107F2680210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C210680028B8BF40F2000001C2386800F2007307F208020524B3EC010A07F26801F1EC0E0AF3EC0E7A60EEA70A21EE081A30EE200A61EEA81A30EE010A22EE092A30EE210A62EEA92A30EE020A23EE0A3A30EE220A63EEAA3A30EE030A24EE0B4A30EE230A64EEAB4A30EE040A25EE0C5A30EE240A65EEAC5A30EE050A26EE0D6A30EE250A66EEAD6A30EE060A27EE0E7A30EE260A30EE070AF1EC020AF3EC027A60EEA70A21EE081A30EE200A30EE010AA2EC010A013CAFD107F208021046052100F002F8BDE8F09F012938B5D0ED002A29D9031D00EB8102F3EC017AF4EE627AF1EE10FAC8BFF0EE672A9A42F4D1002402EE104A054695ED000A30EE620A00F015F80134A14232EE002AA5EC010AF2D8002390ED007AC7EE027A01339942E0EC017AF6D838BD0029E1D138BDDFED297AB4EEE70AF1EE10FA48D4DFED277AB4EEE70AF1EE10FA3ADCDFED247ADFED244A9FED243ADFED243A9FED245A9FED244ADFED245A9FED246ADFED246A60EE277AB7EE007A77EEA47A77EEE47AA7EE830AFDEEE74AA7EEA30AF0EE457AE4EE007A14EE903AE7EE805AA5EE806AE6EE006AF0EE667AF0EE476AE7EE806AA6EE807A17EE102A02EBC35300EE103A7047DFED107AB7EE007A87EE270A70479FED0C0A704700000000AAC20000AE423BAAB83F0000404B007231BF8EBEBFB56E2F093C00A0B43AADAD2A3D28AA2A3EFBFFFF3E00000000B3340140407DE7BF7B34E63FB7A606C0408CA83F933404BF8A39AE40693553BE91C59B40013F913EF68AEF40620FC5407D7FC53F8C23E13FFD650140A6BB2A40E8FA0E40A85E6D40055D39401C5194BF699F8C4076C333C089482E40B2B99CBF94069B3FD0FDC2BF0F7C323F6E08B3BF3B10683FBCC5E5BFE07DD13D403BF7BF6721053E5A2B69C09FF0DF3DAD13A1C07BA228417C76C6BFD1523F411693C4BF6A8C5841539D45BF96A17140B66AFEBFD1768240EB2733C0460C9240122A91C037638E3CFC1659BEAF64CBBE3BF0C43E08E9F63DE0C086BD4EF2A6BEC1D7CA3DB4B8713E043D8FBDA4EB4FBCC5CEE23C7918913D4412AEBE7881323E5F9448BEAA746D3DA77A493E4874EBBD0880DB3E360DAA3E44A2F83D5F80393E0EFA9EBE3A7A7C3DFE2CD33C005400BD9432693E46CB0E3E44ECB33D1E3FC0BE8C402B3E8869013DA5403C3E4A29673E9C7BAEBE20DB373E622E07BD5BE131BEF38B4CBEEF34F73DF7BDF83ED45E823E5192023F5860963E9ECF8D3E18D3F63E1A7DF73DF221DA3D9264863EB079223ED83881BA6C59443EFFB83BBE68AC973E5D0CA5BEE7C50EBD365BBA3E7720BDBEAE81963EB2F89EBEEB50D13E43BE50BD2B76D63E80DDA53E18702E3E7359413DEDDB8A3EA8B57C3C7A3287BBE9D6A7BE55EBCDBDCAB1EA3C668294BDA5B617BE163BCE3AC039503DCCD26EBE21D78A3B802CAD3D84A3D63E79C31CBEEF1C163E1F99803E024EA5BE8618D53E6E39AFBE622A643EB2723C3E0603E73E4A79B03EDB6AAEBE34E7EB3D1A74A83E6D5ECEBE24D16F3EAC6573BEA07688BD08A1B2BD8F98783B7A3446BD1D87D8BDF1F82EBD651DE2BE65A3973EB49B383E6F29EC3E445605BEF28AFBBBDC145CBE34AED13DC230D13D20D3853E894208BE5C08D23D7743963E12781D3DE515103F51A7323E3ACA50BE3919FA3E227CFC3E3A248DBC9FC8893E3308923D17DAF23E4248083E9F6F3DBE9300B8BEC7AC563F5E44F7BD1606D03DC7E52D3F6C12C23CE271723E6E497D3EB43871BDC0EF333DC270053F839730BDE2EC843E93ECC43E64BB06BF3A3487BD003FCEBC8EE5CBBE6852C6BD418427BEC74CBA3D6298DBBD64FAA03C5FAAFFBDE6C883BEB02CFA3D3F8E1FBE9DCD8E3E63D8C43DCDBEB53EA7A4933E437DEABE2856EE3EC1FF663E13398A3E76D3D4BCBCEA533EAA0DA1BE2C392A3EA84FCEBA52A557BDA1C823BEEF37263E0489A53E65CC6C3EA0A2EC3EB270963D7E21B3BD07D7743E9CB134BE80B25EBD349E583BCCE3B0BDD78FBD3D05B053BE279ED83D18F6603E059DCCBC81940F3E128D55BDB47E6DBE07973FBD51E7173E51E5A03DD09B89BD1143E9BDEE1F633E67B31BBE190393BE7E95673EC442A43D1F75A13EEF15903D3E8B983EC6E9A13DBFC5903E261BAB3E4D488E3E51DE213EB942B3BEFE77B6BD99F4B9BC7E4ED4BDC676B4BDFED7813ED978433EBB16DE3D9AE3A7BC5A4799BE4952F2BEB0055DBE2C3638BE9FFD8F3DEE790DBF9BCA893EB6B731BD6E0D003F0DA5AEBBEA7BEABD9B2470BE093F4C3EAAD722BEF39EA63EE04E8E3DEE2BA73E678EDB3E181CB73E1DE1C43DC675B3BE9056023E20BEE8BE1D6D4EBE024DA4BEAEA4CC3CCB17983ECAC51DBE8BE0B2BE949457BEA718C6BDA847023DC493A0BD75BE8EBD45B84E3D822C123CD1C937BE53928E3E2855CA3D76428C3CA32A0B3E5C9ADA3D867FBB3EF7B6B6BEE14DBCBDE219193E3E748C3E0F7EC6BD331784BDA90FB03E5FBE57BEC02A633E258C273E0FE63C3E9544C33E2743403FD7B2AFBECF5118BEDE27DABDD032623D11FF0CBFFD07B33E5E8AA0BD07AF22BE4725343EC7D79ABEDB55493C28580DBF7636F6BE061805BEF100543E179E94BE3C73263C7481233E593C563E401CC3BD6D77D13C980D163E70FE0ABEB1EA52BD859F38BE63902DBEAC5694BC95679CBD100E583EBBE71C3E67F6EB3EA39FC0BC68E289BEC6B8883D5F6113BFA3B968BE988218BF2125813DB1D241BE0C7F013FF94C04BD197099BDFB36F33C057F29BE3DA3E6BE75A4F4BE6A43943E745D6B3D2B37DCBE2DCD31BE5E19843D79750F3EA90ADC3DFFFAEE3D4E80923D3A4B8D3E978A473FF64A953EBC42F13DE74E373E19133FBD62D79DBD279C8CBDBC818BBCDFA5C3BE86148D3E6B89DDBC7547E0BD90E3043D1C7185BEE5CB2EBE6265BA3EE2AAEEBDC203D9BDCF492C3E1319B83EFF12B9BD1EEF143F4B62BFBD72ECC43E65654ABEB7C083BE295B38BDC1792E3F877697BE656FC03EC910AB3EC27413BDCD824FBEA0C2983C1BBD10BD6B689FBC001BAFBDDED32A3EFF1CDD3E93AF1BBF9200E73E8F4F84BDC7DF833DEE5427BEFFA4543E142293BEE2A6B53EA62A413EE20B2C3F8B637B3D9951A43EC681CA3E8B29D53C382F1E3E3628F2BCC8BDA9BEEACE0C3EE1C0593EDCCFE7BEBFEB3C3DFB099FBDE425803E84A80CBE14B194BCDA199EBD056D8C3E17688CBEBA92C3BD36721FBD9CA1103ECD07C3BD00FEA63E01E0DEBDF6969BBE03E435BE062D6BBE92A62D3F4C2D60BE1448903E15C082BE51951A3E38988D3E4AAC8C3FFA42953D4F55D7BDEB7489BEC63C45BFE9B2873FF03A0F3EB905C73EEDD8E5BCE6B98ABEAACB0EBEF995E0BE371A2BBE430FFCBE7AC404BE42CCE3BE4C202B3EDCE7F2BE1FB9ADBD39C3813F04D97A3F206ECFBE76A61EBEAF860FBF968D49BE1BBEB53E858C3F3F2697553D806E8A3E8CFB0A3F239DFABE16F23B3FEBF700BEA62E8FBEBCAF223E1453803F80C4BA3CDC6D0CBF0002503E93886E3EE598EA3D82A473BEF4E2DCBEEEE513BEFAB332BF6A9DBE3D66A118BF2DE2C2BE81A5B0BCD83D573C7FBF3B3F52D9493D2BEA44BCE5E153BE667C033FE745403FB1CF84BDCE094E3FB6961E3E1D0C553EFC1A29BD9FF5303F896281BEB5391ABE7F7C9F3F8BD5FCBDCBD349BEFA1C8FBDC38BAFBD62459BBEC0739A3C164B57BE70715B3ECEB3B3BED2A676BE0000000000000000\`;
return result;
};
@@ -53,5230 +67,8588 @@ namespace ml {
"dataset.json": "{
"data": [
{
- "ID": 1717765478850,
- "name": "still",
- "matrix": [
- false,
- false,
- false,
- false,
- false,
- true,
- true,
- false,
- true,
- true,
- false,
- false,
- false,
- false,
- false,
- false,
- true,
- true,
- true,
- false,
- false,
- false,
- false,
- false,
- false
- ],
+ "id": "a847ac69-2c80-49cd-bee2-f7fe430b7c4c",
+ "name": "Not a spell",
+ "icon": "No",
+ "createdAt": 1730110768152,
"recordings": [
{
- "ID": 1727951926382,
+ "id": "a7045ed7-4629-4d46-9e34-843919413bd9",
"data": {
"x": [
- -0.016,
- -0.02,
- -0.012,
- -0.02,
- -0.016,
- -0.02,
- -0.024,
- -0.02,
- -0.016,
- -0.02,
- -0.02,
- -0.024,
- -0.016,
- -0.024,
- -0.024,
- -0.028,
- -0.024,
- -0.016,
- -0.02,
- -0.024,
- -0.016,
- -0.02,
- -0.024,
- -0.008,
- -0.016,
- -0.016,
- -0.02,
- -0.016,
- -0.02,
- -0.02,
- -0.028,
- -0.016,
- -0.024,
- -0.02,
- -0.016,
- -0.016,
- -0.024,
- -0.016,
- -0.016,
- -0.02,
- -0.024,
- -0.02,
- -0.024,
- -0.016,
- -0.016,
- -0.016,
- -0.016,
- -0.02,
- -0.012,
- -0.024,
- -0.024,
- -0.012,
- -0.02,
- -0.016,
- -0.012,
- -0.02,
- -0.016,
- -0.024,
- -0.02,
- -0.02,
- -0.012,
- -0.02,
- -0.02,
- -0.02,
- -0.024,
- -0.02,
- -0.016,
- -0.012,
- -0.016,
- -0.02,
- -0.02,
- -0.012,
- -0.012,
- -0.024,
- -0.024,
- -0.016,
- -0.016,
- -0.016,
- -0.016,
- -0.024,
- -0.02,
- -0.02,
- -0.02,
- -0.016,
- -0.016,
- -0.016,
- -0.028,
- -0.016,
- -0.02,
- -0.016
- ],
- "y": [
- 0.112,
- 0.112,
- 0.112,
- 0.108,
- 0.108,
- 0.112,
- 0.116,
- 0.108,
- 0.116,
- 0.116,
- 0.112,
- 0.112,
- 0.112,
- 0.116,
- 0.112,
- 0.116,
- 0.112,
- 0.108,
- 0.112,
- 0.112,
- 0.116,
- 0.108,
- 0.108,
- 0.112,
- 0.104,
- 0.12,
- 0.108,
- 0.112,
- 0.116,
- 0.108,
- 0.112,
- 0.108,
- 0.112,
- 0.112,
- 0.12,
- 0.12,
- 0.112,
- 0.112,
- 0.116,
- 0.112,
- 0.104,
- 0.104,
- 0.112,
- 0.108,
- 0.108,
- 0.108,
- 0.116,
- 0.108,
- 0.112,
- 0.116,
- 0.108,
- 0.116,
- 0.112,
- 0.112,
- 0.112,
- 0.112,
- 0.108,
- 0.108,
- 0.108,
- 0.112,
- 0.112,
- 0.108,
- 0.116,
- 0.112,
- 0.12,
- 0.116,
- 0.116,
- 0.112,
- 0.116,
- 0.112,
- 0.112,
- 0.116,
- 0.12,
- 0.108,
- 0.116,
- 0.116,
- 0.116,
- 0.112,
- 0.112,
- 0.112,
- 0.112,
- 0.116,
- 0.108,
- 0.116,
- 0.112,
- 0.108,
- 0.112,
+ 0.788,
+ 0.76,
+ 0.828,
+ 0.928,
+ 0.948,
+ 0.932,
+ 0.956,
+ 1.012,
+ 0.968,
+ 1.032,
+ 1.208,
+ 1.1,
+ 1.016,
+ 0.968,
+ 0.884,
+ 0.748,
+ 0.596,
+ 0.48,
+ 0.248,
+ 0.204,
0.108,
- 0.112,
- 0.112
+ -0.176,
+ -0.132,
+ -0.08,
+ -0.148,
+ -0.1,
+ -0.096,
+ -0.304,
+ -0.332,
+ -0.24,
+ -0.248,
+ -0.268,
+ -0.332,
+ -0.344,
+ -0.424,
+ -0.544,
+ -0.572,
+ -0.54,
+ -0.568,
+ -0.668,
+ -0.748,
+ -0.672,
+ -0.616,
+ -0.768,
+ -0.892,
+ -0.824,
+ -0.74,
+ -0.896
],
- "z": [
- -1.06,
- -1.052,
- -1.056,
- -1.052,
- -1.052,
- -1.056,
- -1.056,
- -1.048,
- -1.048,
- -1.052,
- -1.052,
- -1.048,
- -1.052,
- -1.052,
- -1.052,
- -1.048,
- -1.052,
- -1.048,
- -1.052,
- -1.044,
- -1.056,
- -1.052,
- -1.052,
- -1.048,
- -1.052,
- -1.052,
- -1.048,
- -1.052,
- -1.048,
- -1.052,
- -1.052,
- -1.052,
- -1.052,
- -1.06,
- -1.056,
- -1.048,
- -1.044,
- -1.052,
- -1.048,
- -1.048,
- -1.048,
- -1.052,
- -1.048,
- -1.044,
- -1.052,
- -1.056,
- -1.048,
- -1.048,
- -1.048,
- -1.052,
- -1.052,
- -1.052,
- -1.052,
- -1.056,
- -1.052,
- -1.052,
- -1.044,
- -1.056,
- -1.052,
- -1.056,
- -1.056,
- -1.052,
- -1.048,
- -1.048,
- -1.056,
- -1.056,
- -1.052,
- -1.052,
- -1.056,
- -1.052,
- -1.056,
- -1.044,
- -1.044,
- -1.048,
- -1.048,
- -1.06,
- -1.052,
- -1.048,
- -1.056,
- -1.048,
- -1.048,
- -1.048,
- -1.052,
- -1.048,
- -1.052,
- -1.052,
- -1.052,
- -1.048,
- -1.044,
- -1.048
+ "y": [
+ 0.152,
+ 0.084,
+ 0.068,
+ 0.06,
+ 0.012,
+ -0.064,
+ -0.076,
+ -0.044,
+ -0.04,
+ -0.036,
+ 0.024,
+ 0.096,
+ 0.044,
+ -0.032,
+ 0.008,
+ 0.076,
+ 0.268,
+ 0.312,
+ 0.356,
+ 0.4,
+ 0.42,
+ 0.484,
+ 0.488,
+ 0.532,
+ 0.544,
+ 0.592,
+ 0.584,
+ 0.588,
+ 0.648,
+ 0.66,
+ 0.66,
+ 0.652,
+ 0.64,
+ 0.612,
+ 0.56,
+ 0.54,
+ 0.52,
+ 0.496,
+ 0.46,
+ 0.424,
+ 0.444,
+ 0.404,
+ 0.36,
+ 0.328,
+ 0.316,
+ 0.268,
+ 0.248,
+ 0.204
+ ],
+ "z": [
+ -0.52,
+ -0.548,
+ -0.656,
+ -0.748,
+ -0.752,
+ -0.744,
+ -0.752,
+ -0.796,
+ -0.684,
+ -0.656,
+ -0.804,
+ -0.896,
+ -0.976,
+ -0.972,
+ -0.908,
+ -0.88,
+ -0.744,
+ -0.656,
+ -0.816,
+ -0.956,
+ -0.576,
+ -0.692,
+ -0.788,
+ -0.828,
+ -0.78,
+ -0.804,
+ -0.8,
+ -0.548,
+ -0.536,
+ -0.68,
+ -0.672,
+ -0.652,
+ -0.572,
+ -0.608,
+ -0.628,
+ -0.604,
+ -0.616,
+ -0.656,
+ -0.644,
+ -0.568,
+ -0.516,
+ -0.652,
+ -0.816,
+ -0.648,
+ -0.452,
+ -0.48,
+ -0.624,
+ -0.488
]
- }
+ },
+ "createdAt": 1730110843600
},
{
- "ID": 1717765566215,
+ "id": "08ca8fa0-86f2-4980-916f-6a3c80373828",
"data": {
"x": [
- 0.02,
- 0,
- 0.004,
- 0,
- 0,
- 0,
- 0.008,
- 0.012,
- 0.004,
- 0.008,
- 0.004,
- 0,
- 0.004,
- 0.008,
- 0,
- -0.004,
- 0.008,
- 0.02,
- 0.004,
- -0.004,
- 0.004,
- 0.008,
- 0.02,
- 0.008,
- 0.008,
- 0.008,
- 0.012,
- 0.016,
- 0.012,
- 0.012,
- 0.008,
- 0.012,
- -0.004,
- 0,
- 0.016,
- 0.02,
- 0.02,
- 0.004,
- -0.012,
- 0,
- 0.024,
- 0.016,
- 0.012,
- 0.004,
- 0,
- 0.004,
- 0.012,
- 0.012,
- 0.008,
- 0.024,
- 0.02,
- 0.012,
- 0.004,
- 0.004,
- 0,
- 0.016,
- 0.016,
- 0.012,
- 0.008,
- 0.012,
- 0.004,
- -0.004,
- 0.008,
- 0.012,
- 0.004,
- 0.004,
- -0.004,
- 0.012,
- 0.016,
- 0.004,
- 0.008,
- 0.016,
- 0.032,
- 0.012,
- -0.012,
- -0.008,
- 0.004,
- 0.028,
- 0.02,
- 0.008,
- -0.004,
- 0,
- 0.024,
- 0.024,
- 0.008,
- 0.008,
- -0.004,
- 0.004,
- 0.016,
- 0.02
- ],
- "y": [
- -0.168,
- -0.16,
- -0.144,
- -0.116,
+ -0.104,
+ -0.124,
-0.128,
- -0.136,
- -0.148,
- -0.176,
- -0.184,
- -0.18,
- -0.152,
- -0.136,
+ -0.112,
+ -0.096,
+ -0.108,
+ -0.104,
+ -0.108,
+ -0.084,
+ -0.108,
+ -0.128,
+ -0.116,
+ -0.108,
+ -0.096,
+ -0.096,
+ -0.104,
+ -0.084,
+ -0.092,
+ -0.108,
+ -0.104,
+ -0.088,
+ -0.108,
+ -0.116,
+ -0.14,
-0.156,
- -0.168,
- -0.168,
- -0.16,
- -0.148,
- -0.144,
- -0.12,
+ -0.132,
+ -0.132,
-0.14,
- -0.172,
- -0.172,
- -0.168,
-0.132,
- -0.124,
- -0.152,
- -0.16,
-0.136,
- -0.124,
+ -0.12,
+ -0.068,
+ -0.052,
+ -0.052,
+ -0.08,
-0.132,
+ -0.192,
+ -0.204,
-0.176,
- -0.172,
- -0.14,
- -0.124,
- -0.136,
- -0.172,
- -0.172,
- -0.14,
- -0.104,
- -0.136,
- -0.168,
- -0.164,
- -0.152,
- -0.144,
- -0.136,
- -0.14,
- -0.116,
- -0.128,
- -0.16,
-0.164,
-0.164,
- -0.128,
- -0.124,
- -0.14,
- -0.16,
- -0.156,
- -0.148,
- -0.152,
- -0.168,
- -0.156,
- -0.128,
- -0.136,
- -0.144,
-0.16,
- -0.148,
- -0.124,
- -0.128,
- -0.148,
- -0.136,
- -0.14,
-0.152,
- -0.16,
- -0.164,
- -0.136,
- -0.116,
- -0.132,
- -0.16,
- -0.156,
- -0.14,
- -0.112,
- -0.112,
- -0.136,
- -0.156,
- -0.16,
- -0.128,
- -0.116,
- -0.112,
-0.124,
- -0.14,
- -0.148
+ -0.088,
+ -0.076,
+ -0.1,
+ -0.104,
+ -0.128
],
- "z": [
- -1.048,
- -1.052,
- -1.036,
- -1.036,
- -1.056,
- -1.072,
- -1.056,
- -1.048,
- -1.06,
- -1.048,
- -1.048,
- -1.044,
- -1.04,
- -1.048,
- -1.056,
- -1.048,
- -1.028,
- -1.028,
- -1.052,
- -1.076,
- -1.068,
- -1.04,
- -1.052,
- -1.068,
- -1.048,
- -1.06,
- -1.056,
- -1.084,
- -1.088,
- -1.068,
- -1.04,
- -1.028,
- -1.048,
- -1.068,
- -1.044,
- -1.008,
- -1.016,
- -1.048,
- -1.072,
- -1.056,
- -1.044,
- -1.068,
- -1.064,
- -1.056,
- -1.044,
- -1.056,
- -1.068,
- -1.084,
- -1.092,
- -1.076,
- -1.064,
- -1.048,
- -1.044,
- -1.044,
- -1.056,
- -1.064,
- -1.056,
- -1.068,
- -1.028,
- -1.004,
- -1.032,
- -1.04,
- -1.048,
- -1.064,
- -1.06,
- -1.06,
- -1.064,
- -1.052,
- -1.06,
- -1.072,
- -1.072,
- -1.048,
- -1.028,
- -1.056,
- -1.084,
- -1.084,
- -1.06,
- -1.028,
- -1.028,
- -1.056,
- -1.08,
- -1.068,
- -1.044,
- -1.028,
- -1.04,
- -1.048,
- -1.056,
- -1.064,
- -1.044,
- -1.036
- ]
- }
- },
- {
- "ID": 1717765560761,
- "data": {
- "x": [
- 0.976,
- 0.968,
- 0.96,
- 0.968,
- 0.956,
- 0.96,
- 0.956,
- 0.968,
- 0.972,
+ "y": [
+ 0.936,
+ 0.936,
+ 0.932,
+ 0.936,
+ 0.924,
+ 0.932,
+ 0.928,
+ 0.928,
+ 0.936,
+ 0.932,
+ 0.932,
+ 0.924,
+ 0.932,
+ 0.936,
+ 0.932,
+ 0.94,
+ 0.94,
+ 0.932,
+ 0.936,
+ 0.948,
+ 0.948,
+ 0.932,
+ 0.932,
+ 0.92,
+ 0.916,
+ 0.908,
+ 0.916,
+ 0.884,
+ 0.892,
+ 0.88,
+ 0.896,
+ 0.924,
0.972,
+ 1,
+ 0.976,
+ 0.928,
+ 0.884,
+ 0.832,
+ 0.812,
+ 0.82,
+ 0.816,
+ 0.848,
+ 0.9,
+ 0.98,
+ 1.032,
+ 1.032,
+ 1.012,
0.964,
- 0.956,
- 0.96,
- 0.964,
- 0.964,
- 0.968,
- 0.988,
- 0.956,
- 0.952,
- 0.952,
- 0.964,
- 0.972,
+ 0.904
+ ],
+ "z": [
+ -0.5,
+ -0.488,
+ -0.484,
+ -0.496,
+ -0.5,
+ -0.508,
+ -0.504,
+ -0.492,
+ -0.504,
+ -0.504,
+ -0.492,
+ -0.488,
+ -0.488,
+ -0.492,
+ -0.492,
+ -0.48,
+ -0.5,
+ -0.5,
+ -0.484,
+ -0.48,
+ -0.48,
+ -0.496,
+ -0.504,
+ -0.512,
+ -0.528,
+ -0.54,
+ -0.544,
+ -0.504,
+ -0.544,
+ -0.532,
+ -0.504,
+ -0.504,
+ -0.496,
+ -0.504,
+ -0.532,
+ -0.532,
+ -0.536,
+ -0.56,
+ -0.6,
+ -0.612,
+ -0.616,
+ -0.628,
+ -0.568,
+ -0.488,
+ -0.416,
+ -0.396,
+ -0.412,
+ -0.456,
+ -0.464
+ ]
+ },
+ "createdAt": 1730110838090
+ },
+ {
+ "id": "62d25bc6-ffe7-4188-9488-0038f1fcfb4b",
+ "data": {
+ "x": [
+ -0.012,
+ -0.02,
+ -0.016,
+ -0.036,
+ -0.052,
+ -0.036,
+ -0.032,
+ -0.04,
+ -0.044,
+ -0.036,
+ -0.04,
+ -0.028,
+ -0.008,
+ -0.004,
+ -0.008,
+ -0.012,
+ -0.028,
+ -0.032,
+ -0.036,
+ -0.04,
+ -0.016,
+ -0.024,
+ -0.052,
+ -0.048,
+ -0.032,
+ -0.068,
+ -0.056,
+ -0.036,
+ -0.024,
+ -0.036,
+ -0.052,
+ -0.032,
+ -0.028,
+ -0.02,
+ -0.012,
+ -0.036,
+ -0.028,
+ -0.032,
+ -0.06,
+ -0.036,
+ -0.04,
+ -0.056,
+ -0.032,
+ -0.02,
+ -0.024,
+ -0.024,
+ -0.024,
+ -0.044,
+ -0.032
+ ],
+ "y": [
+ -0.952,
+ -0.952,
+ -0.948,
+ -0.976,
+ -0.972,
+ -0.98,
+ -0.992,
+ -0.992,
+ -0.976,
+ -0.968,
+ -0.968,
+ -0.964,
+ -0.96,
+ -0.968,
+ -0.968,
+ -0.964,
+ -0.976,
+ -0.968,
+ -0.988,
+ -0.992,
+ -0.976,
+ -0.976,
+ -0.992,
+ -0.976,
+ -0.964,
+ -0.98,
+ -0.992,
+ -0.98,
+ -0.972,
+ -0.98,
+ -0.984,
+ -0.98,
+ -0.98,
+ -0.98,
+ -0.984,
+ -0.988,
+ -0.98,
+ -0.98,
+ -0.984,
+ -0.98,
+ -0.972,
+ -0.972,
+ -0.968,
+ -0.968,
+ -0.968,
+ -0.964,
+ -0.984,
+ -0.976,
+ -0.98
+ ],
+ "z": [
+ -0.368,
+ -0.368,
+ -0.364,
+ -0.34,
+ -0.348,
+ -0.384,
+ -0.376,
+ -0.364,
+ -0.372,
+ -0.364,
+ -0.352,
+ -0.348,
+ -0.36,
+ -0.348,
+ -0.352,
+ -0.352,
+ -0.352,
+ -0.352,
+ -0.348,
+ -0.356,
+ -0.384,
+ -0.356,
+ -0.32,
+ -0.348,
+ -0.364,
+ -0.348,
+ -0.352,
+ -0.36,
+ -0.38,
+ -0.36,
+ -0.344,
+ -0.348,
+ -0.34,
+ -0.348,
+ -0.364,
+ -0.356,
+ -0.356,
+ -0.356,
+ -0.344,
+ -0.36,
+ -0.38,
+ -0.356,
+ -0.368,
+ -0.36,
+ -0.364,
+ -0.364,
+ -0.356,
+ -0.36,
+ -0.36
+ ]
+ },
+ "createdAt": 1730110833013
+ },
+ {
+ "id": "3db7f567-460a-478f-803d-b823bf6a4582",
+ "data": {
+ "x": [
+ 0.66,
+ 0.64,
+ 0.648,
+ 0.668,
+ 0.676,
+ 0.656,
+ 0.632,
+ 0.648,
+ 0.656,
+ 0.636,
+ 0.624,
+ 0.648,
+ 0.652,
+ 0.648,
+ 0.636,
+ 0.648,
+ 0.672,
+ 0.668,
+ 0.656,
+ 0.668,
+ 0.668,
+ 0.64,
+ 0.636,
+ 0.64,
+ 0.64,
+ 0.66,
+ 0.66,
+ 0.66,
+ 0.664,
+ 0.668,
+ 0.652,
+ 0.648,
+ 0.652,
+ 0.64,
+ 0.64,
+ 0.632,
+ 0.648,
+ 0.684,
+ 0.716,
+ 0.708,
+ 0.7,
+ 0.684,
+ 0.688,
+ 0.696,
+ 0.692,
+ 0.708,
+ 0.692
+ ],
+ "y": [
+ 0.18,
+ 0.164,
+ 0.156,
+ 0.164,
+ 0.16,
+ 0.156,
+ 0.16,
+ 0.156,
+ 0.176,
+ 0.176,
+ 0.18,
+ 0.184,
+ 0.192,
+ 0.18,
+ 0.168,
+ 0.168,
+ 0.172,
+ 0.172,
+ 0.172,
+ 0.168,
+ 0.172,
+ 0.176,
+ 0.184,
+ 0.176,
+ 0.172,
+ 0.168,
+ 0.16,
+ 0.16,
+ 0.152,
+ 0.152,
+ 0.144,
+ 0.16,
+ 0.176,
+ 0.168,
+ 0.176,
+ 0.18,
+ 0.16,
+ 0.16,
+ 0.172,
+ 0.168,
+ 0.144,
+ 0.164,
+ 0.172,
+ 0.164,
+ 0.168,
+ 0.164,
+ 0.176
+ ],
+ "z": [
+ -0.772,
+ -0.784,
+ -0.784,
+ -0.808,
+ -0.796,
+ -0.784,
+ -0.784,
+ -0.8,
+ -0.8,
+ -0.788,
+ -0.772,
+ -0.772,
+ -0.768,
+ -0.772,
+ -0.776,
+ -0.78,
+ -0.772,
+ -0.764,
+ -0.76,
+ -0.788,
+ -0.788,
+ -0.772,
+ -0.768,
+ -0.776,
+ -0.784,
+ -0.784,
+ -0.772,
+ -0.764,
+ -0.772,
+ -0.792,
+ -0.792,
+ -0.78,
+ -0.776,
+ -0.756,
+ -0.764,
+ -0.764,
+ -0.756,
+ -0.76,
+ -0.772,
+ -0.74,
+ -0.752,
+ -0.752,
+ -0.744,
+ -0.728,
+ -0.724,
+ -0.74,
+ -0.74
+ ]
+ },
+ "createdAt": 1730110828469
+ },
+ {
+ "id": "99ca2691-cd53-4eac-b32a-dcb291fcb74b",
+ "data": {
+ "x": [
0.972,
- 0.96,
- 0.968,
- 0.96,
0.964,
- 0.968,
- 0.968,
- 0.968,
+ 0.988,
+ 0.976,
+ 0.952,
+ 0.944,
0.964,
+ 0.976,
0.956,
- 0.956,
- 0.968,
- 0.968,
- 0.964,
- 0.964,
- 0.964,
+ 0.952,
+ 0.96,
+ 0.972,
+ 0.984,
+ 0.984,
+ 0.972,
0.968,
0.956,
0.964,
- 0.984,
+ 0.972,
0.976,
0.964,
+ 0.976,
+ 0.984,
0.968,
- 0.952,
- 0.956,
- 0.956,
- 0.972,
- 0.968,
- 0.964,
- 0.964,
- 0.96,
0.968,
- 0.964,
- 0.964,
+ 0.952,
0.96,
- 0.968,
- 0.968,
0.972,
- 0.968,
- 0.96,
- 0.968,
0.976,
0.956,
- 0.96,
0.964,
- 0.964,
- 0.968,
0.968,
- 0.968,
- 0.96,
0.96,
+ 0.98,
+ 0.984,
0.964,
+ 0.948,
+ 0.952,
+ 0.976,
+ 0.98,
0.972,
- 0.956,
- 0.96,
- 0.956,
- 0.96,
+ 0.98,
0.972,
0.968,
- 0.964,
- 0.96,
- 0.956,
- 0.964,
- 0.98,
- 0.98,
- 0.96,
- 0.964,
+ 0.968,
0.96,
- 0.956
+ 0.984,
+ 0.976
+ ],
+ "y": [
+ 0.112,
+ 0.112,
+ 0.116,
+ 0.116,
+ 0.12,
+ 0.112,
+ 0.128,
+ 0.124,
+ 0.12,
+ 0.124,
+ 0.12,
+ 0.124,
+ 0.124,
+ 0.128,
+ 0.124,
+ 0.12,
+ 0.12,
+ 0.12,
+ 0.112,
+ 0.1,
+ 0.104,
+ 0.108,
+ 0.116,
+ 0.124,
+ 0.128,
+ 0.132,
+ 0.136,
+ 0.136,
+ 0.136,
+ 0.128,
+ 0.124,
+ 0.116,
+ 0.108,
+ 0.108,
+ 0.12,
+ 0.116,
+ 0.112,
+ 0.108,
+ 0.112,
+ 0.112,
+ 0.116,
+ 0.116,
+ 0.116,
+ 0.116,
+ 0.116,
+ 0.116,
+ 0.124,
+ 0.108
+ ],
+ "z": [
+ -0.344,
+ -0.324,
+ -0.328,
+ -0.316,
+ -0.312,
+ -0.32,
+ -0.312,
+ -0.328,
+ -0.332,
+ -0.328,
+ -0.324,
+ -0.328,
+ -0.308,
+ -0.308,
+ -0.304,
+ -0.324,
+ -0.32,
+ -0.312,
+ -0.328,
+ -0.336,
+ -0.336,
+ -0.34,
+ -0.34,
+ -0.332,
+ -0.34,
+ -0.324,
+ -0.308,
+ -0.296,
+ -0.292,
+ -0.3,
+ -0.312,
+ -0.32,
+ -0.32,
+ -0.328,
+ -0.316,
+ -0.336,
+ -0.344,
+ -0.332,
+ -0.344,
+ -0.332,
+ -0.324,
+ -0.308,
+ -0.316,
+ -0.324,
+ -0.316,
+ -0.288,
+ -0.316,
+ -0.328
+ ]
+ },
+ "createdAt": 1730110823337
+ },
+ {
+ "id": "2ae996d3-b806-468b-b60a-529dadc24877",
+ "data": {
+ "x": [
+ -0.512,
+ -0.504,
+ -0.492,
+ -0.468,
+ -0.468,
+ -0.484,
+ -0.5,
+ -0.496,
+ -0.484,
+ -0.484,
+ -0.496,
+ -0.492,
+ -0.472,
+ -0.48,
+ -0.476,
+ -0.448,
+ -0.448,
+ -0.464,
+ -0.468,
+ -0.484,
+ -0.476,
+ -0.472,
+ -0.464,
+ -0.472,
+ -0.484,
+ -0.48,
+ -0.48,
+ -0.48,
+ -0.468,
+ -0.48,
+ -0.484,
+ -0.492,
+ -0.476,
+ -0.468,
+ -0.496,
+ -0.468,
+ -0.46,
+ -0.456,
+ -0.476,
+ -0.492,
+ -0.5,
+ -0.492,
+ -0.488,
+ -0.492,
+ -0.488,
+ -0.496,
+ -0.5,
+ -0.464
+ ],
+ "y": [
+ 0.116,
+ 0.12,
+ 0.128,
+ 0.128,
+ 0.128,
+ 0.116,
+ 0.132,
+ 0.144,
+ 0.136,
+ 0.14,
+ 0.136,
+ 0.16,
+ 0.14,
+ 0.144,
+ 0.14,
+ 0.136,
+ 0.128,
+ 0.132,
+ 0.132,
+ 0.132,
+ 0.136,
+ 0.136,
+ 0.132,
+ 0.128,
+ 0.14,
+ 0.152,
+ 0.14,
+ 0.124,
+ 0.112,
+ 0.104,
+ 0.136,
+ 0.144,
+ 0.14,
+ 0.128,
+ 0.128,
+ 0.144,
+ 0.136,
+ 0.128,
+ 0.116,
+ 0.108,
+ 0.108,
+ 0.124,
+ 0.128,
+ 0.128,
+ 0.124,
+ 0.136,
+ 0.132,
+ 0.128
],
- "y": [
- -0.224,
- -0.204,
- -0.2,
- -0.208,
- -0.212,
- -0.204,
- -0.184,
- -0.192,
- -0.22,
- -0.228,
- -0.2,
- -0.204,
- -0.216,
- -0.22,
- -0.192,
- -0.196,
- -0.208,
- -0.236,
+ "z": [
+ -0.936,
+ -0.932,
+ -0.928,
+ -0.936,
+ -0.928,
+ -0.92,
+ -0.92,
+ -0.92,
+ -0.916,
+ -0.916,
+ -0.912,
+ -0.912,
+ -0.92,
+ -0.908,
+ -0.932,
+ -0.936,
+ -0.924,
+ -0.932,
+ -0.948,
+ -0.928,
+ -0.928,
+ -0.912,
+ -0.936,
+ -0.924,
+ -0.92,
+ -0.924,
+ -0.916,
+ -0.904,
+ -0.94,
+ -0.936,
+ -0.916,
+ -0.896,
+ -0.936,
+ -0.936,
+ -0.928,
+ -0.932,
+ -0.9,
+ -0.916,
+ -0.936,
+ -0.94,
+ -0.928,
+ -0.924,
+ -0.94,
+ -0.924,
+ -0.92,
+ -0.916,
+ -0.9,
+ -0.908
+ ]
+ },
+ "createdAt": 1730110818555
+ },
+ {
+ "id": "a435a2c9-c26d-4436-b405-d0e659a7f677",
+ "data": {
+ "x": [
+ 0.292,
+ 0.228,
+ -0.012,
+ -0.12,
+ -0.172,
+ -0.252,
+ -0.356,
+ -0.404,
+ -0.384,
+ -0.352,
+ -0.308,
+ -0.332,
+ -0.364,
+ -0.38,
+ -0.42,
+ -0.388,
-0.244,
- -0.22,
- -0.208,
- -0.192,
- -0.224,
- -0.224,
- -0.22,
- -0.228,
- -0.22,
- -0.204,
- -0.216,
- -0.204,
- -0.2,
- -0.204,
- -0.224,
- -0.22,
- -0.224,
- -0.22,
- -0.2,
- -0.204,
- -0.228,
- -0.22,
- -0.212,
- -0.228,
- -0.192,
+ -0.172,
+ -0.176,
+ -0.176,
+ -0.172,
-0.196,
- -0.216,
- -0.212,
- -0.212,
- -0.22,
- -0.228,
- -0.22,
- -0.216,
- -0.22,
- -0.236,
- -0.236,
- -0.208,
- -0.216,
- -0.216,
- -0.216,
- -0.228,
- -0.228,
- -0.208,
-0.2,
+ -0.156,
+ -0.08,
+ -0.068,
+ -0.052,
+ -0.008,
+ 0,
+ 0.068,
+ -0.048,
+ -0.148,
+ -0.128,
+ -0.132,
+ -0.176,
-0.208,
- -0.212,
- -0.216,
- -0.22,
- -0.204,
- -0.216,
- -0.228,
- -0.212,
- -0.204,
- -0.2,
+ -0.244,
+ -0.224,
+ -0.136,
+ -0.128,
+ -0.152,
+ -0.132,
+ -0.132,
+ -0.176,
+ -0.188,
+ -0.176,
+ -0.152,
+ -0.108
+ ],
+ "y": [
+ 0.188,
+ 0.088,
+ 0.072,
+ 0.168,
+ 0.184,
+ 0.18,
+ 0.108,
+ 0.1,
+ 0.096,
+ 0.124,
+ 0.164,
+ 0.212,
+ 0.212,
+ 0.18,
+ 0.136,
+ 0.168,
+ 0.196,
+ 0.224,
+ 0.212,
+ 0.188,
+ 0.188,
+ 0.196,
+ 0.192,
+ 0.164,
+ 0.164,
+ 0.148,
+ 0.132,
+ 0.164,
+ 0.168,
+ 0.12,
+ 0.152,
+ 0.124,
+ 0.06,
+ 0.04,
+ 0.016,
+ 0,
+ 0.008,
+ 0.004,
+ 0.004,
+ -0.004,
+ -0.028,
+ -0.02,
+ -0.004,
+ 0.024,
+ 0.02,
+ 0.04,
+ 0.044,
+ 0.04
+ ],
+ "z": [
+ -0.944,
+ -1.032,
+ -1.056,
+ -1.024,
+ -1.1,
+ -1.088,
+ -1.036,
+ -1.012,
+ -0.976,
+ -0.94,
+ -0.96,
+ -0.984,
+ -1.012,
+ -1.028,
+ -0.988,
+ -0.952,
+ -0.988,
+ -0.98,
+ -1.016,
+ -1.032,
+ -1,
+ -0.988,
+ -1.024,
+ -1.084,
+ -1.088,
+ -1.008,
+ -0.948,
+ -0.964,
+ -0.996,
+ -0.944,
+ -0.924,
+ -0.94,
+ -1.032,
+ -1.088,
+ -1.064,
+ -1.056,
+ -1.028,
+ -1.032,
+ -1.068,
+ -1.044,
+ -1.052,
+ -1.084,
+ -1.096,
+ -1.024,
+ -1.024,
+ -1.032,
+ -1.024,
+ -1.076
+ ]
+ },
+ "createdAt": 1730110814258
+ },
+ {
+ "id": "146782de-b559-462a-b122-098afb637033",
+ "data": {
+ "x": [
+ -0.052,
+ 0.084,
+ 0.104,
+ 0.048,
+ 0.012,
+ -0.016,
+ -0.068,
+ -0.092,
+ -0.084,
+ 0,
+ 0.044,
-0.204,
- -0.196,
- -0.208,
- -0.236,
- -0.236,
- -0.216,
- -0.208,
- -0.208,
- -0.22,
- -0.24,
- -0.24,
- -0.216,
- -0.212,
+ -0.336,
+ -0.308,
+ -0.428,
+ -0.544,
+ -0.552,
+ -0.504,
+ -0.512,
+ -0.532,
+ -0.492,
+ -0.452,
+ -0.456,
+ -0.404,
+ -0.4,
+ -0.42,
+ -0.368,
+ -0.344,
+ -0.312,
-0.224,
- -0.22,
- -0.216,
- -0.212,
- -0.236,
- -0.216
+ -0.184,
+ -0.148,
+ -0.104,
+ -0.116,
+ -0.188,
+ -0.18,
+ -0.144,
+ -0.152,
+ 0.008,
+ 0.136,
+ 0.152,
+ 0.176,
+ 0.184,
+ 0.212,
+ 0.244,
+ 0.276,
+ 0.324,
+ 0.332,
+ 0.352
+ ],
+ "y": [
+ 0.336,
+ 0.316,
+ 0.24,
+ 0.132,
+ 0.028,
+ -0.016,
+ -0.064,
+ -0.14,
+ -0.144,
+ -0.132,
+ -0.156,
+ -0.164,
+ -0.172,
+ -0.168,
+ -0.124,
+ -0.072,
+ -0.032,
+ -0.008,
+ 0.064,
+ 0.116,
+ 0.172,
+ 0.232,
+ 0.268,
+ 0.356,
+ 0.412,
+ 0.428,
+ 0.492,
+ 0.556,
+ 0.56,
+ 0.552,
+ 0.524,
+ 0.524,
+ 0.508,
+ 0.48,
+ 0.456,
+ 0.444,
+ 0.46,
+ 0.46,
+ 0.464,
+ 0.492,
+ 0.484,
+ 0.46,
+ 0.44,
+ 0.4,
+ 0.368,
+ 0.372,
+ 0.38,
+ 0.332,
+ 0.256
+ ],
+ "z": [
+ -0.84,
+ -0.904,
+ -0.964,
+ -1.004,
+ -1.064,
+ -1.116,
+ -1.156,
+ -1.224,
+ -1.252,
+ -1.256,
+ -1.348,
+ -1.24,
+ -1.188,
+ -1.252,
+ -1.22,
+ -1.14,
+ -1.096,
+ -1.108,
+ -1.056,
+ -1.02,
+ -0.988,
+ -0.96,
+ -0.9,
+ -0.876,
+ -0.828,
+ -0.76,
+ -0.8,
+ -0.752,
+ -0.72,
+ -0.74,
+ -0.796,
+ -0.824,
+ -0.864,
+ -0.9,
+ -0.908,
+ -0.916,
+ -0.928,
+ -0.836,
+ -0.86,
+ -0.864,
+ -0.824,
+ -0.828,
+ -0.82,
+ -0.852,
+ -0.888,
+ -0.888,
+ -0.864,
+ -0.852,
+ -0.892
+ ]
+ },
+ "createdAt": 1730110809909
+ },
+ {
+ "id": "4fe7a9df-3232-4ac5-9a28-71dedbab518c",
+ "data": {
+ "x": [
+ 0.184,
+ 0.172,
+ 0.156,
+ 0.168,
+ 0.16,
+ 0.18,
+ 0.128,
+ 0.168,
+ 0.212,
+ 0.128,
+ 0.096,
+ 0.108,
+ 0.112,
+ 0.044,
+ 0.036,
+ 0.084,
+ 0.14,
+ 0.068,
+ 0.056,
+ 0.144,
+ 0.204,
+ 0.16,
+ 0.152,
+ 0.16,
+ 0.136,
+ 0.136,
+ 0.156,
+ 0.192,
+ 0.208,
+ 0.156,
+ 0.124,
+ 0.104,
+ 0.088,
+ 0.06,
+ 0.068,
+ 0.104,
+ 0.056,
+ 0.032,
+ 0.076,
+ 0.04,
+ 0.024,
+ 0.016,
+ -0.004,
+ -0.012,
+ -0.016,
+ 0.012,
+ 0.036,
+ 0.024,
+ 0.004
],
- "z": [
- -0.188,
- -0.184,
+ "y": [
+ 0.376,
+ 0.296,
+ 0.248,
+ 0.212,
+ 0.212,
+ 0.204,
+ 0.188,
+ 0.172,
+ 0.132,
+ 0.124,
+ 0.1,
+ 0.084,
+ -0.008,
+ -0.112,
-0.172,
- -0.176,
- -0.184,
- -0.188,
- -0.184,
- -0.18,
- -0.164,
- -0.156,
- -0.168,
- -0.176,
- -0.184,
- -0.164,
- -0.18,
- -0.176,
- -0.184,
- -0.176,
- -0.168,
- -0.176,
- -0.192,
- -0.156,
-0.16,
- -0.18,
- -0.168,
- -0.172,
- -0.176,
- -0.172,
- -0.172,
- -0.188,
- -0.188,
- -0.196,
- -0.184,
- -0.172,
- -0.172,
- -0.172,
- -0.172,
- -0.18,
- -0.172,
- -0.172,
- -0.176,
- -0.18,
- -0.156,
- -0.156,
- -0.18,
-0.184,
+ -0.292,
+ -0.392,
+ -0.42,
+ -0.424,
+ -0.424,
+ -0.408,
+ -0.412,
+ -0.46,
+ -0.472,
+ -0.448,
+ -0.42,
+ -0.416,
+ -0.408,
+ -0.384,
+ -0.36,
+ -0.324,
+ -0.296,
+ -0.256,
+ -0.2,
-0.196,
- -0.176,
- -0.18,
- -0.18,
- -0.188,
- -0.188,
- -0.172,
- -0.172,
- -0.188,
- -0.18,
- -0.176,
- -0.176,
- -0.164,
- -0.172,
- -0.164,
- -0.176,
- -0.18,
- -0.164,
- -0.164,
- -0.176,
- -0.188,
- -0.204,
- -0.192,
- -0.176,
- -0.188,
- -0.192,
+ -0.144,
+ -0.096,
+ -0.02,
+ 0.02,
+ 0.104,
+ 0.172,
+ 0.248,
+ 0.304,
+ 0.372,
+ 0.448,
+ 0.5,
+ 0.52
+ ],
+ "z": [
+ -0.912,
+ -0.948,
+ -0.956,
+ -0.976,
+ -0.92,
+ -0.984,
+ -0.936,
+ -0.896,
+ -0.94,
+ -0.924,
+ -0.888,
+ -0.864,
+ -0.92,
+ -0.996,
+ -1.064,
+ -1.072,
+ -1.08,
+ -1.06,
+ -1.068,
+ -1.112,
+ -1.12,
+ -1.124,
+ -1.124,
+ -1.196,
+ -1.196,
+ -1.168,
+ -1.132,
+ -1.116,
+ -1.12,
+ -1.092,
+ -1.092,
+ -1.096,
+ -1.108,
+ -1.116,
+ -1.1,
+ -1.104,
+ -1.08,
+ -1.048,
+ -1.068,
+ -1.024,
+ -1.016,
+ -0.984,
+ -0.956,
+ -0.948,
+ -0.924,
+ -0.876,
+ -0.832,
+ -0.796,
+ -0.756
+ ]
+ },
+ "createdAt": 1730110805536
+ },
+ {
+ "id": "140b3468-1bfa-4868-9ce8-e68bda104eab",
+ "data": {
+ "x": [
+ 0.016,
+ -0.06,
+ -0.096,
+ -0.096,
+ -0.052,
+ 0.052,
+ 0.148,
+ 0.256,
+ 0.38,
+ 0.452,
+ 0.524,
+ 0.476,
+ 0.44,
+ 0.412,
+ 0.356,
+ 0.34,
+ 0.332,
+ 0.256,
+ 0.256,
+ 0.28,
+ 0.244,
+ 0.204,
+ 0.196,
+ 0.196,
+ 0.156,
+ 0.136,
+ 0.164,
+ 0.188,
+ 0.244,
+ 0.176,
+ 0.072,
+ -0.024,
+ 0.012,
+ 0.1,
+ 0.168,
+ 0.104,
+ 0.076,
+ 0.108,
+ 0,
+ -0.112,
+ -0.092,
+ 0,
+ 0.004,
+ -0.096,
+ -0.06,
+ 0.008,
+ -0.052,
-0.196,
- -0.18,
- -0.172,
- -0.184,
- -0.172,
- -0.176,
- -0.176,
- -0.176,
- -0.156,
- -0.16,
- -0.168,
- -0.18,
- -0.164,
- -0.164,
- -0.152,
- -0.156,
- -0.168,
- -0.192,
- -0.208
+ -0.192
+ ],
+ "y": [
+ 0.18,
+ 0.092,
+ 0.028,
+ -0.076,
+ -0.212,
+ -0.264,
+ -0.32,
+ -0.376,
+ -0.444,
+ -0.48,
+ -0.436,
+ -0.4,
+ -0.372,
+ -0.308,
+ -0.212,
+ -0.088,
+ -0.032,
+ 0.064,
+ 0.18,
+ 0.212,
+ 0.264,
+ 0.356,
+ 0.42,
+ 0.464,
+ 0.516,
+ 0.572,
+ 0.584,
+ 0.656,
+ 0.668,
+ 0.712,
+ 0.708,
+ 0.708,
+ 0.74,
+ 0.792,
+ 0.812,
+ 0.844,
+ 0.9,
+ 0.852,
+ 0.756,
+ 0.692,
+ 0.648,
+ 0.636,
+ 0.604,
+ 0.588,
+ 0.496,
+ 0.504,
+ 0.476,
+ 0.404,
+ 0.36
+ ],
+ "z": [
+ -0.868,
+ -0.94,
+ -0.996,
+ -1.004,
+ -1.012,
+ -1.108,
+ -1.26,
+ -1.384,
+ -1.544,
+ -1.636,
+ -1.688,
+ -1.468,
+ -1.276,
+ -1.116,
+ -0.948,
+ -0.872,
+ -0.88,
+ -0.86,
+ -0.86,
+ -0.9,
+ -0.892,
+ -0.856,
+ -0.836,
+ -0.844,
+ -0.8,
+ -0.724,
+ -0.68,
+ -0.6,
+ -0.652,
+ -0.64,
+ -0.7,
+ -0.64,
+ -0.648,
+ -0.556,
+ -0.556,
+ -0.492,
+ -0.388,
+ -0.456,
+ -0.548,
+ -0.604,
+ -0.676,
+ -0.768,
+ -0.848,
+ -0.744,
+ -0.764,
+ -0.872,
+ -0.904,
+ -0.816,
+ -0.832
]
- }
+ },
+ "createdAt": 1730110801292
},
{
- "ID": 1717765554773,
+ "id": "deda7d69-97dc-43b4-84bd-55afb661c7db",
"data": {
"x": [
- -0.944,
- -0.96,
- -0.96,
- -0.972,
- -0.968,
- -0.976,
- -0.976,
- -0.968,
- -0.972,
- -0.968,
- -0.96,
- -0.948,
- -0.956,
- -0.956,
- -0.964,
- -0.96,
- -0.976,
- -0.964,
- -0.964,
- -0.964,
- -0.964,
- -0.972,
- -0.968,
- -0.96,
- -0.96,
- -0.976,
- -0.976,
- -0.976,
- -0.972,
+ -0.62,
+ -0.552,
+ -0.42,
+ -0.316,
+ -0.284,
+ -0.212,
+ -0.104,
+ 0,
+ 0.172,
+ 0.392,
+ 0.536,
+ 0.58,
+ 0.572,
+ 0.532,
+ 0.456,
+ 0.36,
+ 0.408,
+ 0.528,
+ 0.54,
+ 0.548,
+ 0.616,
+ 0.624,
+ 0.632,
+ 0.652,
+ 0.7,
+ 0.7,
+ 0.644,
+ 0.528,
+ 0.4,
+ 0.332,
+ 0.396,
+ 0.396,
+ 0.348,
+ 0.34,
+ 0.308,
+ 0.208,
+ 0.1,
+ 0.068,
+ 0.104,
+ 0.1,
+ 0.024,
+ -0.028,
+ -0.024,
+ -0.068,
+ -0.244,
+ -0.424,
+ -0.392
+ ],
+ "y": [
+ -0.268,
+ -0.144,
+ -0.12,
+ -0.048,
+ 0.044,
+ 0.124,
+ 0.192,
+ 0.236,
+ 0.272,
+ 0.28,
+ 0.3,
+ 0.312,
+ 0.304,
+ 0.264,
+ 0.168,
+ 0.092,
+ 0.052,
+ 0.004,
+ -0.052,
+ -0.084,
+ -0.116,
+ -0.188,
+ -0.264,
+ -0.384,
+ -0.436,
+ -0.408,
+ -0.408,
+ -0.408,
+ -0.416,
+ -0.356,
+ -0.296,
+ -0.236,
+ -0.16,
+ -0.076,
+ 0,
+ 0.064,
+ 0.136,
+ 0.228,
+ 0.324,
+ 0.388,
+ 0.4,
+ 0.396,
+ 0.388,
+ 0.38,
+ 0.3,
+ 0.236,
+ 0.188
+ ],
+ "z": [
-0.972,
- -0.968,
- -0.968,
- -0.964,
- -0.964,
- -0.968,
- -0.968,
- -0.964,
- -0.968,
- -0.964,
- -0.968,
- -0.96,
- -0.956,
- -0.952,
- -0.952,
-0.956,
- -0.96,
-0.964,
+ -0.94,
+ -0.856,
+ -0.752,
+ -0.704,
+ -0.668,
+ -0.664,
+ -0.76,
+ -0.784,
+ -0.756,
+ -0.712,
+ -0.724,
+ -0.756,
+ -0.772,
+ -0.812,
+ -0.896,
+ -0.908,
+ -0.896,
+ -0.932,
+ -0.94,
+ -0.996,
+ -1.064,
+ -1.148,
+ -1.24,
+ -1.276,
+ -1.248,
+ -1.168,
+ -1.088,
+ -1.072,
+ -1.044,
+ -1.008,
+ -1.024,
+ -1.052,
+ -0.996,
+ -0.9,
+ -0.8,
+ -0.704,
+ -0.672,
+ -0.664,
+ -0.66,
+ -0.72,
+ -0.76,
+ -0.78,
+ -0.672,
+ -0.716
+ ]
+ },
+ "createdAt": 1730110797072
+ },
+ {
+ "id": "a23ad509-a7af-4140-aa42-dba9a936bd0e",
+ "data": {
+ "x": [
+ -0.536,
+ -0.568,
+ -0.628,
+ -0.78,
+ -0.856,
+ -0.792,
+ -0.7,
+ -0.636,
+ -0.54,
+ -0.456,
+ -0.444,
+ -0.396,
+ -0.296,
+ -0.288,
+ -0.256,
+ -0.056,
+ -0.18,
+ -0.328,
+ -0.252,
+ -0.128,
+ -0.112,
+ -0.02,
+ 0.008,
+ -0.076,
+ -0.06,
+ -0.036,
+ 0.008,
+ 0.172,
+ 0.284,
+ 0.34,
+ 0.412,
+ 0.444,
+ 0.508,
+ 0.576,
+ 0.56,
+ 0.66,
+ 0.66,
+ 0.356,
+ 0.168,
+ 0.28,
+ 0.46,
+ 0.512,
+ 0.524,
+ 0.424,
+ 0.288,
+ 0.248,
+ 0.08,
+ -0.08,
+ -0.036
+ ],
+ "y": [
+ 0.028,
+ 0.06,
+ 0.036,
+ -0.02,
+ 0.044,
+ 0.148,
+ 0.18,
+ 0.236,
+ 0.26,
+ 0.292,
+ 0.268,
+ 0.26,
+ 0.244,
+ 0.244,
+ 0.264,
+ 0.18,
+ 0.244,
+ 0.252,
+ 0.252,
+ 0.228,
+ 0.168,
+ 0.196,
+ 0.264,
+ 0.264,
+ 0.26,
+ 0.288,
+ 0.256,
+ 0.184,
+ 0.184,
+ 0.236,
+ 0.144,
+ 0.04,
+ 0.092,
+ 0.136,
+ 0.124,
+ 0.056,
+ -0.012,
+ -0.084,
+ -0.088,
+ -0.112,
+ -0.216,
+ -0.316,
+ -0.424,
+ -0.52,
+ -0.54,
+ -0.528,
+ -0.492,
+ -0.384,
+ -0.284
+ ],
+ "z": [
-0.968,
+ -0.928,
-0.96,
+ -0.908,
+ -0.892,
+ -0.92,
+ -0.932,
+ -0.92,
+ -0.932,
+ -0.904,
+ -0.852,
+ -0.892,
-0.968,
- -0.968,
- -0.972,
- -0.968,
- -0.964,
- -0.964,
-0.96,
+ -0.94,
+ -1.096,
+ -1.088,
+ -0.988,
+ -1.032,
+ -1.044,
+ -1.012,
+ -1.016,
+ -1.012,
+ -0.9,
+ -0.844,
+ -0.86,
+ -0.884,
+ -0.996,
+ -0.988,
+ -0.908,
+ -0.904,
+ -0.884,
+ -0.896,
+ -0.924,
+ -0.844,
+ -0.884,
+ -1.052,
+ -0.908,
+ -0.848,
-0.96,
- -0.984,
- -0.964,
- -0.968,
- -0.952,
- -0.952,
- -0.964,
- -0.968,
- -0.968,
- -0.956,
+ -1.092,
+ -1.16,
+ -1.196,
+ -1.172,
+ -1.176,
+ -1.304,
+ -1.296,
+ -1.156,
+ -1.08
+ ]
+ },
+ "createdAt": 1730110792926
+ }
+ ]
+ },
+ {
+ "id": "931f1732-5bdc-4baf-b560-beecf1333439",
+ "name": "poke",
+ "icon": "Sword",
+ "createdAt": 1730110845881,
+ "recordings": [
+ {
+ "id": "adef518e-1296-4f10-a412-44e8c02b50a4",
+ "data": {
+ "x": [
+ -0.024,
+ -0.02,
+ -0.052,
+ -0.04,
+ -0.036,
+ -0.048,
+ -0.016,
+ -0.012,
+ -0.056,
+ -0.052,
+ -0.072,
+ -0.056,
+ -0.056,
+ -0.084,
+ -0.096,
+ -0.048,
+ -0.02,
+ -0.008,
+ -0.104,
+ -0.072,
+ 0.084,
+ 0.332,
+ 0.46,
+ -0.584,
+ -1.532,
-0.956,
+ -1.552,
+ -0.62,
+ 0.392,
+ -0.08,
+ -0.36,
+ -0.28,
+ -0.156,
+ 0.016,
+ -0.184,
+ -0.28,
+ -0.38,
+ -0.412,
+ -0.252,
+ -0.164,
+ -0.112,
+ -0.088,
+ -0.168,
+ -0.144,
+ -0.112,
+ -0.092,
+ -0.14,
+ -0.16
+ ],
+ "y": [
+ 0.1,
+ 0.1,
+ 0.108,
+ 0.088,
+ 0.1,
+ 0.112,
+ 0.128,
+ 0.112,
+ 0.088,
+ 0.072,
+ 0.056,
+ 0.08,
+ 0.128,
+ 0.2,
+ 0.288,
+ 0.412,
+ 0.672,
+ 1.068,
+ 1.572,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.356,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.544,
+ -1.164,
+ -0.436,
+ -0.104,
+ 0.18,
+ 0.3,
+ 0.3,
+ 0.212,
+ 0.092,
+ -0.028,
+ -0.076,
+ -0.04,
+ 0.04,
+ 0.128,
+ 0.196,
+ 0.212,
+ 0.204,
+ 0.156,
+ 0.168,
+ 0.156,
+ 0.092,
+ 0.052
+ ],
+ "z": [
+ -1.064,
+ -1.024,
+ -1.008,
+ -1.032,
+ -1.032,
+ -1.02,
+ -1.004,
+ -1.004,
+ -1.012,
+ -1.056,
+ -1.048,
+ -1.072,
+ -1.06,
+ -1.012,
-0.96,
-0.956,
- -0.948,
- -0.968,
- -0.968,
- -0.968,
- -0.968,
- -0.964,
- -0.972,
- -0.964,
- -0.964,
- -0.956,
- -0.964,
- -0.956,
- -0.96,
- -0.96,
- -0.972,
- -0.96,
- -0.96,
- -0.968,
- -0.972,
+ -0.888,
+ -0.832,
+ -0.72,
+ -0.816,
+ -0.72,
+ -0.352,
+ -0.624,
+ -0.152,
+ -1.94,
+ -1.412,
+ -1.24,
+ -1.896,
+ -2.04,
+ -1.38,
+ -0.78,
+ -0.544,
+ -0.544,
+ -0.928,
+ -0.98,
+ -1.108,
+ -1.188,
+ -1.188,
+ -1.212,
+ -1.1,
+ -0.996,
-0.964,
- -0.964
+ -0.94,
+ -0.98,
+ -1.012,
+ -1.052,
+ -1.036,
+ -1.04
+ ]
+ },
+ "createdAt": 1730110894817
+ },
+ {
+ "id": "fcfbd9e4-9f40-4a4a-9361-b7035d767446",
+ "data": {
+ "x": [
+ -0.068,
+ -0.056,
+ -0.032,
+ -0.036,
+ -0.068,
+ -0.048,
+ -0.028,
+ -0.032,
+ -0.028,
+ -0.056,
+ -0.108,
+ -0.096,
+ -0.084,
+ -0.1,
+ -0.056,
+ -0.032,
+ -0.02,
+ -0.02,
+ 0.004,
+ -0.004,
+ 0.2,
+ 0,
+ -0.328,
+ -0.068,
+ 0.276,
+ -0.52,
+ -0.812,
+ -1.22,
+ -1.088,
+ 0.184,
+ -0.032,
+ -0.34,
+ -0.34,
+ -0.3,
+ -0.044,
+ -0.108,
+ -0.256,
+ -0.3,
+ -0.316,
+ -0.252,
+ -0.164,
+ -0.12,
+ -0.116,
+ -0.116,
+ -0.076,
+ -0.028,
+ -0.048,
+ -0.036,
+ -0.004
],
"y": [
- 0.344,
- 0.336,
- 0.336,
- 0.336,
- 0.328,
- 0.328,
- 0.324,
- 0.336,
- 0.336,
- 0.336,
- 0.324,
- 0.332,
- 0.332,
- 0.34,
- 0.344,
- 0.324,
- 0.324,
- 0.328,
- 0.332,
- 0.336,
- 0.336,
- 0.336,
- 0.332,
- 0.34,
- 0.336,
- 0.336,
- 0.324,
- 0.32,
- 0.32,
- 0.324,
- 0.32,
- 0.324,
- 0.336,
- 0.324,
- 0.336,
- 0.336,
- 0.344,
- 0.328,
- 0.344,
- 0.336,
- 0.348,
- 0.332,
- 0.328,
- 0.332,
- 0.348,
- 0.344,
- 0.332,
- 0.332,
- 0.344,
- 0.336,
- 0.332,
- 0.324,
- 0.32,
- 0.328,
- 0.332,
- 0.348,
- 0.336,
- 0.328,
- 0.328,
- 0.336,
- 0.34,
- 0.344,
- 0.328,
- 0.332,
- 0.332,
- 0.34,
- 0.344,
- 0.344,
- 0.352,
- 0.34,
- 0.332,
- 0.324,
- 0.328,
- 0.324,
- 0.34,
- 0.34,
- 0.348,
- 0.356,
- 0.344,
- 0.344,
- 0.34,
- 0.336,
- 0.336,
- 0.336,
- 0.34,
- 0.336,
- 0.34,
- 0.34,
- 0.34,
- 0.34
- ],
- "z": [
- -0.052,
+ -0.012,
+ -0.04,
+ -0.024,
+ -0.02,
+ -0.02,
+ -0.012,
+ -0.004,
+ 0.04,
+ 0.096,
+ 0.116,
+ 0.108,
+ 0.1,
+ 0.048,
+ -0.012,
+ -0.008,
+ -0.004,
+ 0.068,
+ 0.196,
+ 0.472,
+ 0.98,
+ 1.824,
+ 2.04,
+ 2.04,
+ 2.04,
+ -0.368,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.196,
+ -0.504,
-0.056,
- -0.06,
- -0.06,
+ 0.168,
+ 0.22,
+ 0.14,
+ 0.064,
+ 0.036,
+ -0.028,
-0.064,
- -0.08,
-0.06,
- -0.052,
- -0.036,
- -0.044,
+ 0.024,
+ 0.044,
+ 0.068,
+ 0.088,
+ 0.08,
+ 0.076,
+ 0.092,
+ 0.096,
+ 0.08
+ ],
+ "z": [
+ -1.048,
+ -1.056,
+ -1.064,
+ -1.056,
+ -1.036,
+ -1.052,
+ -1.064,
+ -1.044,
+ -1.024,
+ -0.988,
+ -0.992,
+ -1.036,
+ -1.048,
+ -1.024,
+ -1.06,
+ -1.056,
+ -1.04,
+ -1.004,
+ -0.944,
+ -0.832,
+ -0.972,
+ -0.744,
+ -0.176,
+ -0.132,
+ -0.592,
+ -0.576,
+ -1.284,
+ -1.46,
+ -1.492,
+ -2.04,
+ -1.612,
+ -0.908,
+ -0.608,
+ -0.488,
+ -0.828,
+ -0.984,
+ -1.016,
+ -1.088,
+ -1.14,
+ -1.092,
+ -1.08,
+ -1.008,
+ -0.988,
+ -0.996,
+ -1.004,
+ -1.044,
+ -1.024,
+ -1.004,
+ -1.012
+ ]
+ },
+ "createdAt": 1730110890482
+ },
+ {
+ "id": "39081e43-edbe-4878-b92d-f9f10873eb60",
+ "data": {
+ "x": [
+ -0.068,
+ -0.072,
+ -0.072,
+ -0.084,
+ -0.06,
+ -0.084,
+ -0.068,
-0.048,
- -0.056,
- -0.056,
- -0.06,
- -0.052,
- -0.056,
- -0.064,
- -0.052,
-0.06,
+ -0.04,
+ -0.012,
+ -0.024,
-0.064,
+ -0.068,
+ -0.084,
+ -0.096,
+ -0.08,
-0.056,
- -0.056,
- -0.048,
- -0.048,
- -0.048,
- -0.052,
- -0.056,
- -0.064,
-0.048,
-0.056,
- -0.04,
- -0.056,
- -0.044,
-0.044,
-0.048,
- -0.052,
- -0.068,
- -0.068,
- -0.06,
- -0.06,
- -0.048,
- -0.052,
- -0.06,
-0.036,
- -0.052,
- -0.06,
- -0.068,
+ -0.084,
+ -0.212,
+ -0.152,
-0.064,
- -0.052,
- -0.048,
+ 0.152,
+ 0.16,
+ 0.328,
+ 0.652,
+ 0.56,
+ -0.504,
+ -1.552,
+ -1.284,
+ -1.016,
+ 0.228,
+ 0.132,
+ -0.528,
+ -0.364,
+ -0.124,
+ 0.128,
+ 0.132,
+ -0.14,
+ -0.244,
+ -0.252,
+ -0.196,
+ -0.116,
+ -0.076,
+ -0.092
+ ],
+ "y": [
+ 0.08,
+ 0.084,
+ 0.08,
+ 0.1,
+ 0.088,
+ 0.076,
+ 0.064,
+ 0.052,
+ 0.076,
+ 0.096,
+ 0.1,
+ 0.092,
+ 0.072,
+ 0.068,
+ 0.064,
+ 0.064,
+ 0.072,
+ 0.08,
+ 0.076,
+ 0.068,
+ 0.076,
+ 0.136,
+ 0.204,
+ 0.312,
+ 0.448,
+ 0.804,
+ 1.42,
+ 2.04,
+ 2.04,
+ 2.04,
+ 1.156,
+ -0.52,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.288,
+ -0.556,
+ -0.152,
+ 0.108,
+ 0.228,
+ 0.2,
+ 0.148,
+ 0.1,
+ 0.048,
+ 0,
+ 0.004,
+ -0.004,
+ 0.016,
+ 0.02
+ ],
+ "z": [
+ -1.056,
+ -1.032,
+ -1.04,
+ -1.02,
+ -1.032,
+ -1.016,
+ -1.028,
+ -1.052,
+ -1.032,
+ -1.016,
+ -1.016,
+ -1.024,
+ -1.032,
+ -1.068,
+ -1.06,
+ -1.06,
+ -1.044,
+ -1.036,
+ -1.032,
+ -1.032,
+ -1.036,
+ -1.036,
+ -1,
+ -0.944,
+ -0.796,
+ -0.812,
+ -0.856,
+ -0.92,
+ -0.504,
+ -0.316,
+ -0.68,
+ -1.008,
+ -0.52,
+ -0.176,
+ -1.304,
+ -1.704,
+ -2.04,
+ -1.968,
+ -0.92,
+ -0.632,
+ -0.556,
+ -0.792,
+ -0.98,
+ -0.912,
+ -0.972,
+ -1.024,
+ -1.072,
+ -1.132,
+ -1.1,
+ -1.06
+ ]
+ },
+ "createdAt": 1730110885869
+ },
+ {
+ "id": "098069b5-7da6-4008-8421-a63b5112a03a",
+ "data": {
+ "x": [
+ -0.14,
+ -0.12,
+ -0.116,
+ -0.16,
+ -0.132,
+ -0.092,
+ -0.088,
+ -0.08,
+ -0.092,
+ -0.08,
+ -0.08,
+ -0.08,
+ -0.032,
+ -0.02,
-0.052,
-0.064,
- -0.064,
- -0.048,
- -0.044,
- -0.036,
+ -0.092,
+ -0.072,
+ -0.08,
+ -0.04,
+ 0.02,
+ 0.052,
+ 0.136,
+ 0.096,
+ -0.08,
+ 0.148,
+ 0.352,
+ -1.196,
+ -0.96,
+ -1.156,
+ -0.864,
+ 0.556,
+ 0.052,
+ -0.284,
+ -0.38,
+ -0.216,
+ 0.184,
+ 0.136,
+ -0.204,
+ -0.268,
+ -0.28,
+ -0.216,
+ -0.06,
+ -0.004,
+ 0.044,
+ 0.068,
+ 0.024,
+ 0.02,
+ 0.02
+ ],
+ "y": [
+ 0.084,
+ 0.112,
+ 0.112,
+ 0.116,
+ 0.152,
+ 0.148,
+ 0.14,
+ 0.152,
+ 0.128,
+ 0.1,
+ 0.072,
+ 0.068,
+ 0.096,
+ 0.088,
+ 0.068,
+ 0.092,
+ 0.14,
+ 0.196,
+ 0.268,
+ 0.384,
+ 0.648,
+ 1.076,
+ 1.668,
+ 2.04,
+ 2.04,
+ 2.04,
+ -0.184,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.272,
+ -0.564,
-0.044,
- -0.072,
- -0.052,
- -0.052,
- -0.04,
- -0.052,
- -0.072,
+ 0.208,
+ 0.28,
+ 0.256,
+ 0.124,
-0.064,
- -0.076,
+ -0.192,
+ -0.164,
+ -0.108,
-0.048,
+ 0.028,
+ 0.1,
+ 0.148,
+ 0.136,
+ 0.136,
+ 0.124
+ ],
+ "z": [
+ -1.02,
+ -0.996,
+ -0.98,
+ -0.972,
+ -0.992,
+ -0.992,
+ -0.988,
+ -1,
+ -1.024,
+ -1.032,
+ -1.044,
+ -1.056,
+ -1.076,
+ -1.06,
+ -1.04,
+ -1.048,
+ -1.008,
+ -1.008,
+ -0.92,
+ -0.884,
+ -0.84,
+ -0.74,
+ -0.788,
+ -0.896,
+ -0.72,
+ -0.472,
+ -0.208,
+ 0.768,
+ -0.756,
+ -1.86,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.144,
+ -0.388,
+ -0.152,
+ -0.56,
+ -0.888,
+ -0.964,
+ -1.196,
+ -1.284,
+ -1.24,
+ -1.208,
+ -1.076,
+ -1.02,
+ -0.988,
+ -0.964,
+ -1.012,
+ -1.06
+ ]
+ },
+ "createdAt": 1730110881733
+ },
+ {
+ "id": "37992398-b615-466e-ac1c-be4d4a685d14",
+ "data": {
+ "x": [
+ 0.004,
+ -0.024,
+ -0.016,
+ 0,
+ 0.008,
+ 0.04,
+ 0.032,
+ 0.024,
+ 0.016,
+ -0.004,
+ -0.02,
+ 0.016,
+ 0.068,
+ 0.044,
+ -0.012,
+ -0.124,
-0.044,
- -0.044,
+ 0.02,
+ 0.124,
+ 0.268,
+ 0.324,
+ 0.568,
+ 0.26,
+ -1.384,
+ -1.488,
+ -1.232,
+ -0.288,
+ 0.484,
+ -0.392,
+ -0.516,
+ -0.344,
+ -0.132,
+ 0.224,
+ 0.06,
+ -0.136,
+ -0.084,
+ -0.1,
-0.056,
+ -0.008,
+ -0.072,
+ -0.012,
+ -0.02,
-0.052,
-0.064,
- -0.056,
- -0.052,
- -0.052,
- -0.048,
+ -0.072,
+ -0.116,
+ -0.164,
+ -0.212,
+ -0.148
+ ],
+ "y": [
+ -0.004,
+ -0.028,
+ -0.02,
+ -0.004,
+ 0.016,
+ 0.044,
+ 0.036,
+ 0.032,
+ 0.02,
+ 0.008,
+ 0.016,
+ 0.108,
+ 0.252,
+ 0.492,
+ 0.76,
+ 0.876,
+ 0.916,
+ 0.976,
+ 1.304,
+ 2.04,
+ 2.04,
+ 1.752,
+ -2.032,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.184,
+ -0.548,
+ -0.188,
+ 0.056,
+ 0.012,
+ -0.084,
+ -0.168,
+ -0.252,
+ -0.276,
+ -0.28,
+ -0.192,
+ -0.152,
+ -0.144,
+ -0.116,
+ -0.084,
+ -0.024,
+ -0.032,
-0.04,
- -0.052,
- -0.052,
- -0.056,
- -0.056,
- -0.056,
- -0.06,
- -0.064,
- -0.056,
- -0.044,
- -0.048,
- -0.056,
- -0.064,
- -0.06,
- -0.06
+ -0.096,
+ -0.02,
+ 0.056,
+ 0.164
+ ],
+ "z": [
+ -1.056,
+ -1.06,
+ -1.068,
+ -1.068,
+ -1.036,
+ -1.02,
+ -1.016,
+ -1.032,
+ -1.012,
+ -1.016,
+ -1,
+ -0.98,
+ -0.932,
+ -0.94,
+ -1,
+ -0.872,
+ -0.768,
+ -0.716,
+ -0.812,
+ -1.176,
+ -1.296,
+ -1.096,
+ -0.188,
+ 1.08,
+ -0.38,
+ -1.516,
+ -2.04,
+ -2.04,
+ -1.452,
+ -0.856,
+ -0.524,
+ -0.48,
+ -0.92,
+ -1.036,
+ -1.076,
+ -1.208,
+ -1.168,
+ -1.096,
+ -1,
+ -0.9,
+ -0.904,
+ -0.888,
+ -0.88,
+ -0.872,
+ -0.9,
+ -0.912,
+ -0.916,
+ -0.98,
+ -1.076
]
- }
+ },
+ "createdAt": 1730110877571
},
{
- "ID": 1717765549053,
+ "id": "e2b2d824-4b57-4f1a-9ddf-7c689f02d912",
"data": {
"x": [
- -0.276,
- -0.276,
- -0.264,
- -0.276,
- -0.276,
- -0.276,
- -0.276,
- -0.284,
- -0.276,
- -0.272,
- -0.272,
- -0.268,
- -0.284,
- -0.276,
- -0.28,
- -0.276,
- -0.272,
- -0.276,
- -0.28,
- -0.28,
- -0.272,
- -0.272,
- -0.268,
- -0.272,
- -0.288,
- -0.276,
- -0.284,
- -0.28,
- -0.276,
- -0.272,
- -0.272,
- -0.272,
- -0.272,
- -0.288,
- -0.292,
- -0.276,
- -0.268,
- -0.268,
- -0.276,
- -0.28,
- -0.272,
- -0.272,
- -0.276,
- -0.268,
- -0.268,
- -0.26,
- -0.26,
- -0.272,
- -0.276,
- -0.272,
- -0.284,
- -0.276,
- -0.272,
- -0.272,
- -0.276,
- -0.268,
- -0.268,
- -0.268,
- -0.26,
- -0.256,
- -0.26,
- -0.272,
- -0.276,
- -0.268,
- -0.268,
- -0.28,
- -0.292,
- -0.28,
- -0.268,
- -0.276,
- -0.268,
- -0.268,
- -0.256,
- -0.272,
- -0.272,
- -0.28,
- -0.276,
- -0.268,
- -0.268,
- -0.28,
- -0.28,
- -0.28,
- -0.272,
- -0.268,
- -0.272,
- -0.272,
- -0.272,
- -0.276,
- -0.272,
- -0.276,
- -0.276
- ],
- "y": [
- -0.052,
-0.056,
- -0.064,
- -0.076,
- -0.076,
- -0.068,
- -0.064,
- -0.06,
- -0.076,
- -0.076,
- -0.064,
- -0.06,
- -0.06,
- -0.064,
- -0.068,
- -0.068,
- -0.06,
- -0.068,
- -0.072,
- -0.06,
+ -0.036,
+ 0,
+ 0.008,
+ 0.016,
+ 0,
-0.06,
- -0.056,
- -0.068,
- -0.064,
-0.072,
- -0.068,
- -0.068,
- -0.072,
- -0.076,
+ 0.08,
+ 0.204,
+ 0.184,
+ 0.408,
+ 0.58,
+ 0.592,
+ 0.604,
+ 0.528,
+ 0.356,
+ 0.208,
+ -1.8,
+ -0.908,
+ -1.808,
+ -1.252,
+ 0.58,
+ -0.26,
+ -0.356,
+ -0.136,
-0.072,
- -0.068,
- -0.064,
- -0.076,
- -0.076,
+ 0.104,
+ -0.184,
+ -0.256,
+ -0.204,
+ -0.108,
+ 0.012,
+ 0.024,
+ -0.02,
-0.08,
- -0.092,
-0.068,
- -0.064,
+ -0.06,
-0.068,
- -0.064,
- -0.076,
- -0.072,
- -0.072,
- -0.072,
- -0.072,
- -0.064,
- -0.076,
- -0.076,
- -0.076,
- -0.088,
- -0.092,
- -0.092,
- -0.092,
+ 0.004,
+ 0.024,
+ 0.004,
+ 0.016,
+ 0.024,
+ 0.008,
+ -0.008,
+ -0.012,
+ -0.032,
+ 0
+ ],
+ "y": [
+ 0.2,
+ 0.24,
+ 0.192,
+ 0.104,
+ 0.144,
+ 0.232,
+ 0.22,
+ 0.228,
+ 0.448,
+ 0.424,
+ 0.324,
+ 0.264,
+ 0.544,
+ 1.344,
+ 2.04,
+ 2.04,
+ 2.04,
+ -1.78,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.92,
+ -0.796,
+ -0.172,
+ 0.172,
+ 0.276,
+ 0.252,
+ 0.148,
+ 0.032,
+ -0.148,
+ -0.2,
+ -0.132,
+ -0.052,
+ 0.008,
+ 0.092,
+ 0.148,
+ 0.164,
+ 0.108,
+ 0.076,
+ 0.06,
+ 0.048,
+ 0.02,
+ -0.02,
+ -0.06,
+ -0.1,
+ -0.1,
+ -0.096,
-0.092,
- -0.084,
+ -0.06
+ ],
+ "z": [
+ -0.988,
+ -0.952,
+ -0.908,
+ -0.888,
+ -0.904,
+ -0.964,
+ -1.004,
+ -1.036,
+ -1.136,
+ -1.068,
+ -0.912,
+ -1.06,
+ -1.148,
+ -1.22,
+ -1.168,
+ -0.476,
+ 0.676,
+ 0.304,
+ 0.672,
+ -1.616,
+ -1.608,
+ -1.98,
+ -2.04,
+ -1.304,
+ -0.728,
+ -0.504,
+ -0.548,
+ -1.036,
+ -1.064,
+ -1.188,
+ -1.256,
+ -1.252,
+ -1.176,
+ -1.04,
+ -0.96,
+ -0.928,
+ -0.932,
+ -0.968,
+ -0.992,
+ -1.072,
+ -1.1,
+ -1.068,
+ -1.068,
+ -1.072,
+ -1.088,
+ -1.108,
+ -1.128,
+ -1.104,
+ -1.088
+ ]
+ },
+ "createdAt": 1730110873321
+ },
+ {
+ "id": "c6754c6b-44a5-4b8e-ada4-c7f6c3b9cc62",
+ "data": {
+ "x": [
+ -0.128,
-0.072,
- -0.084,
-0.092,
- -0.072,
- -0.072,
- -0.064,
- -0.064,
- -0.08,
- -0.068,
- -0.084,
- -0.08,
- -0.088,
- -0.084,
+ -0.108,
+ -0.052,
-0.084,
- -0.076,
- -0.088,
- -0.08,
- -0.088,
- -0.092,
- -0.076,
- -0.076,
- -0.076,
- -0.072,
- -0.088,
+ -0.108,
+ -0.108,
-0.084,
+ -0.012,
+ -0.004,
+ -0.004,
+ -0.052,
+ -0.096,
+ -0.048,
+ -0.02,
+ -0.044,
+ -0.148,
+ -0.32,
+ -0.004,
+ 0.236,
+ 0.2,
+ -0.428,
+ -1.52,
+ -0.408,
+ 0.868,
+ -0.12,
+ -0.672,
+ -0.556,
+ -0.32,
-0.08,
- -0.076,
- -0.08,
- -0.072,
- -0.076,
- -0.076,
- -0.076,
- -0.072,
- -0.08,
+ -0.236,
+ -0.332,
+ -0.356,
+ -0.316,
+ -0.18,
+ -0.008,
+ 0.124,
+ 0.136,
+ 0.2,
+ 0.204,
+ 0.164,
+ 0.136,
+ 0.156,
+ 0.016,
+ -0.008,
+ 0,
+ 0
+ ],
+ "y": [
+ 0.004,
+ 0.012,
+ 0.04,
+ -0.008,
+ -0.012,
+ -0.004,
+ 0.064,
+ 0.064,
+ 0.04,
+ 0.028,
+ 0,
+ -0.02,
+ -0.036,
+ 0.064,
+ 0.404,
+ 1.116,
+ 1.98,
+ 2.04,
+ 2.04,
+ 2.04,
+ -1.044,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.584,
+ -0.932,
+ -0.492,
+ -0.252,
+ -0.236,
+ -0.268,
+ -0.26,
+ -0.292,
+ -0.272,
+ -0.168,
-0.08,
- -0.076
+ 0.048,
+ 0.22,
+ 0.44,
+ 0.48,
+ 0.432,
+ 0.132,
+ 0.012,
+ 0.076,
+ 0.128,
+ 0.04,
+ -0.068,
+ -0.06
],
"z": [
- 0.98,
- 0.992,
- 0.996,
- 0.992,
- 0.996,
- 0.988,
- 0.98,
- 0.98,
- 0.98,
- 0.984,
- 0.992,
- 0.98,
- 0.956,
- 0.976,
- 0.972,
- 0.968,
- 0.972,
- 0.976,
- 0.976,
- 0.968,
- 0.972,
- 0.972,
- 0.976,
- 0.98,
- 0.984,
- 0.968,
- 0.968,
- 0.984,
- 0.992,
- 0.992,
- 0.988,
- 0.984,
- 0.98,
- 0.96,
- 0.96,
- 0.976,
- 0.976,
- 0.98,
- 0.968,
- 0.968,
- 0.976,
- 0.976,
- 0.968,
- 0.984,
- 0.988,
- 0.988,
- 0.976,
- 0.964,
- 0.964,
- 0.964,
- 0.984,
- 0.98,
- 0.992,
- 1,
- 0.996,
- 1,
- 1.004,
- 0.992,
- 1.008,
- 1,
- 0.968,
- 0.948,
- 0.968,
- 0.98,
- 0.98,
- 0.948,
- 0.948,
- 0.968,
- 0.984,
- 0.988,
- 0.992,
- 1.012,
- 1,
- 0.996,
- 0.98,
- 0.98,
- 0.984,
- 0.988,
- 0.976,
- 0.972,
- 0.956,
- 0.964,
- 0.976,
- 0.968,
- 0.976,
- 0.984,
- 0.976,
- 0.976,
- 0.98,
- 0.988,
- 0.968
+ -1.08,
+ -1.056,
+ -0.976,
+ -0.96,
+ -1.06,
+ -1.06,
+ -1.064,
+ -1.044,
+ -1.04,
+ -1.064,
+ -1.068,
+ -1.084,
+ -1.048,
+ -1.056,
+ -1.08,
+ -1.04,
+ -0.832,
+ -0.632,
+ -0.588,
+ -0.76,
+ -1.02,
+ -0.044,
+ -0.224,
+ -0.136,
+ -1.712,
+ -2.04,
+ -1.712,
+ -0.92,
+ -0.72,
+ -0.656,
+ -0.86,
+ -0.864,
+ -0.892,
+ -0.976,
+ -1.116,
+ -1.196,
+ -1.164,
+ -1.056,
+ -0.852,
+ -0.924,
+ -0.928,
+ -0.916,
+ -0.952,
+ -1.14,
+ -1.112,
+ -1.044,
+ -1.02,
+ -1.016
]
- }
+ },
+ "createdAt": 1730110869055
},
{
- "ID": 1717765543427,
+ "id": "9ef250cc-b57c-4dbd-a4c3-06532c093dce",
"data": {
"x": [
- 0.212,
- 0.212,
- 0.208,
- 0.2,
- 0.204,
- 0.204,
- 0.216,
- 0.22,
- 0.208,
- 0.2,
- 0.208,
- 0.216,
- 0.212,
- 0.204,
- 0.2,
- 0.212,
- 0.212,
- 0.212,
- 0.204,
- 0.208,
- 0.216,
- 0.204,
- 0.204,
- 0.212,
- 0.208,
- 0.208,
- 0.2,
- 0.208,
- 0.2,
- 0.204,
- 0.22,
- 0.216,
- 0.208,
- 0.196,
- 0.196,
- 0.208,
- 0.216,
- 0.216,
- 0.204,
- 0.2,
- 0.2,
- 0.208,
- 0.216,
- 0.216,
- 0.216,
- 0.212,
- 0.208,
- 0.216,
- 0.224,
- 0.22,
- 0.22,
- 0.22,
- 0.228,
- 0.224,
- 0.224,
- 0.212,
- 0.224,
- 0.204,
- 0.212,
- 0.212,
- 0.224,
- 0.224,
- 0.212,
- 0.208,
- 0.224,
- 0.216,
- 0.212,
- 0.216,
- 0.216,
- 0.216,
- 0.216,
- 0.232,
- 0.232,
- 0.216,
- 0.22,
- 0.228,
- 0.228,
- 0.228,
- 0.224,
- 0.22,
- 0.212,
- 0.22,
- 0.22,
- 0.22,
- 0.22,
- 0.22,
- 0.22,
- 0.228,
+ -0.004,
+ 0,
+ 0,
+ -0.028,
+ -0.04,
+ -0.036,
+ -0.04,
+ -0.028,
+ -0.028,
+ -0.024,
+ -0.004,
+ 0.028,
+ 0.028,
+ 0.016,
+ 0.016,
+ 0.016,
+ 0.028,
+ 0.012,
+ 0.032,
+ 0.028,
+ 0,
+ -0.088,
+ -0.216,
+ -0.344,
+ -0.28,
+ 0.156,
+ 0.288,
+ 0.076,
+ -0.512,
+ -0.868,
+ -1.284,
+ 0.384,
+ 0.42,
+ -0.48,
+ -0.196,
+ 0.032,
0.22,
- 0.212,
- 0.216
- ],
- "y": [
- 0.508,
- 0.504,
- 0.516,
- 0.52,
- 0.512,
- 0.492,
- 0.512,
- 0.516,
- 0.512,
- 0.508,
- 0.492,
- 0.504,
- 0.516,
- 0.516,
- 0.512,
- 0.504,
- 0.508,
- 0.52,
- 0.508,
- 0.504,
- 0.504,
- 0.508,
- 0.508,
- 0.5,
- 0.504,
- 0.512,
- 0.52,
- 0.512,
- 0.508,
- 0.5,
- 0.512,
- 0.508,
- 0.512,
- 0.516,
- 0.512,
- 0.512,
- 0.508,
- 0.504,
- 0.508,
- 0.508,
- 0.516,
- 0.504,
- 0.512,
- 0.52,
- 0.52,
- 0.516,
- 0.508,
- 0.516,
- 0.512,
- 0.508,
- 0.508,
- 0.508,
- 0.512,
- 0.512,
- 0.508,
- 0.508,
- 0.516,
- 0.508,
- 0.504,
- 0.516,
- 0.516,
- 0.516,
- 0.516,
- 0.512,
- 0.504,
- 0.512,
- 0.516,
- 0.508,
- 0.508,
- 0.528,
- 0.524,
- 0.524,
- 0.508,
- 0.504,
- 0.516,
- 0.52,
- 0.516,
- 0.52,
- 0.516,
- 0.512,
- 0.504,
- 0.5,
- 0.516,
- 0.524,
- 0.524,
- 0.516,
- 0.508,
- 0.508,
- 0.512,
- 0.516,
- 0.504
+ 0.068,
+ -0.164,
+ -0.252,
+ -0.184,
+ -0.088,
+ -0.076,
+ -0.004,
+ 0.016,
+ 0.016,
+ 0.016,
+ 0.02,
+ 0.064
+ ],
+ "y": [
+ -0.004,
+ -0.004,
+ 0,
+ 0,
+ -0.008,
+ 0,
+ -0.008,
+ -0.012,
+ -0.004,
+ -0.028,
+ -0.064,
+ -0.06,
+ -0.064,
+ -0.056,
+ -0.028,
+ -0.028,
+ 0.008,
+ 0.064,
+ 0.164,
+ 0.268,
+ 0.544,
+ 0.972,
+ 1.52,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.704,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.552,
+ -0.672,
+ -0.2,
+ 0.048,
+ 0.168,
+ 0.084,
+ 0.016,
+ -0.076,
+ -0.196,
+ -0.168,
+ -0.108,
+ -0.056,
+ 0,
+ 0.06,
+ 0.108,
+ 0.124,
+ 0.112,
+ 0.08
],
"z": [
- -0.892,
- -0.884,
- -0.896,
- -0.908,
- -0.904,
- -0.908,
- -0.904,
- -0.9,
- -0.908,
- -0.924,
- -0.912,
- -0.908,
- -0.9,
- -0.904,
- -0.908,
- -0.9,
- -0.896,
- -0.908,
- -0.912,
- -0.9,
- -0.884,
- -0.888,
- -0.904,
- -0.892,
- -0.892,
- -0.908,
- -0.912,
- -0.892,
- -0.912,
- -0.924,
- -0.896,
- -0.888,
- -0.884,
- -0.904,
+ -1,
+ -1.032,
+ -1.06,
+ -1.036,
+ -1.012,
+ -0.988,
+ -1,
+ -1.016,
+ -1.036,
+ -1.048,
+ -1.072,
+ -1.088,
+ -1.096,
+ -1.056,
+ -1.068,
+ -1.052,
+ -1.06,
+ -1.032,
+ -0.992,
-0.92,
- -0.908,
- -0.896,
- -0.884,
- -0.88,
- -0.884,
- -0.912,
- -0.9,
- -0.9,
- -0.904,
- -0.908,
- -0.916,
- -0.908,
- -0.892,
- -0.884,
- -0.892,
-0.888,
- -0.904,
- -0.896,
- -0.892,
- -0.896,
+ -0.824,
+ -0.756,
+ -0.604,
+ -0.544,
+ -0.772,
+ -0.48,
+ -0.476,
+ -0.32,
+ -1.204,
+ -1.32,
+ -2.04,
+ -2.04,
+ -0.872,
+ -0.736,
+ -0.696,
+ -0.912,
+ -1.008,
+ -1.08,
+ -1.132,
+ -1.176,
+ -1.128,
+ -1.036,
+ -1.012,
+ -0.98,
+ -0.968,
+ -0.976,
+ -0.996,
+ -1.056
+ ]
+ },
+ "createdAt": 1730110864664
+ },
+ {
+ "id": "549aaca8-3e49-481d-bdad-d9a9025df75f",
+ "data": {
+ "x": [
+ -0.02,
+ -0.012,
+ 0.02,
+ 0,
+ 0,
+ -0.008,
+ -0.008,
+ -0.024,
+ -0.04,
+ -0.02,
+ 0,
+ 0,
+ -0.02,
+ -0.004,
+ 0.024,
+ 0.016,
+ 0.036,
+ 0.032,
+ 0.064,
+ 0.144,
+ 0.2,
+ 0.052,
+ -0.176,
+ -0.308,
+ -0.368,
+ -0.756,
+ -0.268,
+ -0.984,
+ -0.704,
+ 0.092,
+ -0.256,
+ -0.32,
+ -0.288,
+ -0.116,
+ -0.084,
+ -0.212,
+ -0.172,
+ -0.148,
+ -0.096,
+ -0.052,
+ -0.068,
+ -0.08,
+ -0.04,
+ 0,
+ 0.004,
+ -0.024,
+ -0.028,
+ -0.06
+ ],
+ "y": [
+ -0.044,
+ -0.052,
+ -0.032,
+ -0.02,
+ -0.028,
+ -0.028,
+ -0.012,
+ -0.008,
+ -0.016,
+ 0,
+ 0.008,
+ 0.012,
+ 0.004,
+ 0.012,
+ 0.032,
+ 0.06,
+ 0.104,
+ 0.172,
+ 0.308,
+ 0.624,
+ 1.24,
+ 2.04,
+ 2.04,
+ 2.04,
+ -1.032,
+ -2.04,
+ -2.04,
+ -1.472,
+ -1.312,
+ -0.552,
+ -0.032,
+ 0.208,
+ 0.372,
+ 0.36,
+ 0.248,
+ 0.092,
+ -0.036,
+ -0.044,
+ -0.02,
+ 0.04,
+ 0.076,
+ 0.104,
+ 0.14,
+ 0.164,
+ 0.172,
+ 0.14,
+ 0.124,
+ 0.112
+ ],
+ "z": [
+ -1.064,
+ -1.072,
+ -1.088,
+ -1.024,
+ -1.032,
+ -1.052,
+ -1.06,
+ -1.056,
+ -1.024,
+ -1.036,
+ -1.048,
+ -1.02,
+ -1.004,
+ -1.012,
+ -1.012,
+ -1.008,
+ -1.008,
+ -0.968,
-0.912,
- -0.908,
+ -0.804,
+ -0.712,
+ -0.688,
+ -0.7,
+ -0.444,
+ -0.328,
+ -0.18,
+ -1.696,
+ -2.004,
+ -2.04,
+ -2.04,
+ -1.1,
+ -0.688,
+ -0.468,
+ -0.612,
+ -0.828,
-0.924,
- -0.896,
- -0.884,
- -0.884,
- -0.876,
- -0.888,
- -0.904,
- -0.892,
- -0.9,
- -0.9,
- -0.892,
+ -1.092,
+ -1.176,
+ -1.144,
+ -1.076,
+ -0.988,
+ -0.944,
+ -1,
+ -1.016,
+ -1.024,
+ -1.016,
+ -1.04,
+ -1.032
+ ]
+ },
+ "createdAt": 1730110859709
+ },
+ {
+ "id": "b292c503-4942-4f2c-8b05-631eebc7ece7",
+ "data": {
+ "x": [
+ -0.168,
+ -0.164,
+ -0.148,
+ -0.14,
+ -0.136,
+ -0.152,
+ -0.128,
+ -0.112,
+ -0.108,
+ -0.128,
+ -0.132,
+ -0.132,
+ -0.12,
+ -0.116,
+ -0.108,
+ -0.124,
+ -0.132,
+ -0.108,
+ -0.088,
+ -0.028,
+ 0.052,
+ -0.088,
+ -0.196,
+ -0.088,
+ -0.092,
+ -0.372,
+ -0.772,
+ -0.452,
+ -0.448,
+ -0.428,
+ -0.356,
+ -0.12,
+ 0.04,
+ -0.052,
+ -0.28,
+ -0.228,
+ -0.104,
+ -0.092,
+ -0.112,
+ -0.148,
+ -0.208,
+ -0.196,
+ -0.144,
+ -0.152,
+ -0.128,
+ -0.132,
+ -0.152,
+ -0.124,
+ -0.136
+ ],
+ "y": [
+ 0.176,
+ 0.168,
+ 0.14,
+ 0.144,
+ 0.136,
+ 0.124,
+ 0.112,
+ 0.088,
+ 0.076,
+ 0.084,
+ 0.092,
+ 0.116,
+ 0.136,
+ 0.16,
+ 0.196,
+ 0.228,
+ 0.256,
+ 0.22,
+ 0.256,
+ 0.424,
+ 0.72,
+ 1.14,
+ 1.924,
+ 2.04,
+ 2.04,
+ 0.644,
+ -1.536,
+ -2.04,
+ -2.04,
+ -1.584,
+ -1.336,
+ -1,
+ -0.572,
+ -0.264,
+ -0.1,
+ 0.024,
+ 0.012,
+ -0.032,
+ -0.064,
+ -0.088,
+ -0.068,
+ -0.068,
+ -0.04,
+ 0,
+ 0.02,
+ 0.028,
+ 0.032,
+ 0.012,
+ -0.008
+ ],
+ "z": [
+ -0.992,
+ -0.956,
+ -0.964,
+ -1.016,
+ -1.024,
+ -1.02,
+ -1.008,
+ -1.016,
+ -1.036,
+ -1.04,
+ -1.032,
+ -1.024,
+ -1.044,
+ -1.048,
+ -1.032,
+ -1.032,
+ -0.992,
+ -0.976,
+ -1,
+ -1.024,
+ -1.024,
+ -0.792,
+ -0.716,
+ -0.78,
+ -0.696,
+ -0.196,
+ -0.04,
+ -0.856,
+ -0.816,
+ -1.136,
+ -1.508,
+ -1.764,
+ -1.744,
+ -1.392,
+ -0.976,
-0.9,
- -0.904,
- -0.904,
-0.888,
- -0.892,
- -0.9,
- -0.9,
- -0.892,
- -0.88,
- -0.872,
- -0.892,
- -0.904,
- -0.896,
+ -0.928,
+ -0.996,
+ -1.032,
+ -1.016,
+ -1.048,
+ -1.072,
+ -1.044,
+ -1.04,
+ -1.004,
+ -0.98,
+ -0.984,
+ -0.98
+ ]
+ },
+ "createdAt": 1730110855284
+ }
+ ]
+ },
+ {
+ "id": "24764089-67ac-4bfa-877d-f8ad35605b84",
+ "name": "waggle",
+ "icon": "Confused",
+ "createdAt": 1730110896681,
+ "recordings": [
+ {
+ "id": "111929b3-697d-4267-a310-fe637d3564fc",
+ "data": {
+ "x": [
+ 1.872,
+ 1.088,
+ 0.208,
+ -0.06,
+ -1.748,
+ -1.112,
+ 1.548,
+ 1.96,
+ 1.464,
+ 0.276,
+ -0.244,
+ -1.136,
+ -1.012,
+ 1.236,
+ 1.956,
+ 1.168,
+ -0.424,
+ -1.508,
+ -0.592,
+ 1.488,
+ 1.864,
+ 1.016,
+ -0.092,
+ -0.688,
+ -1.744,
+ 0.256,
+ 1.94,
+ 2.04,
+ 1.124,
+ -0.032,
+ -0.772,
+ -1.692,
+ 0.332,
+ 2.04,
+ 2.04,
+ 0.604,
+ -0.564,
+ -1.812,
+ -0.348,
+ 2.04,
+ 2.024,
+ 0.648,
+ -0.648,
+ -1.572,
+ -0.312,
+ 1.912,
+ 1.716,
+ -0.032,
+ -0.52
+ ],
+ "y": [
+ 1.008,
+ 0.784,
+ -0.216,
+ -1.064,
+ -1.356,
+ -0.988,
+ -0.4,
+ 0.66,
+ 0.932,
+ 0.14,
+ -0.736,
+ -1.16,
+ -0.804,
+ -0.176,
+ 0.86,
+ 0.632,
+ -0.448,
+ -1.076,
+ -0.808,
+ -0.196,
+ 0.864,
+ 0.816,
+ -0.172,
+ -1.316,
+ -1.272,
+ -0.82,
+ 0.112,
+ 1.096,
+ 0.52,
+ -0.572,
+ -1.488,
+ -1.276,
+ -0.808,
+ 0.324,
+ 1.104,
+ 0.348,
+ -1.124,
+ -1.368,
+ -0.976,
+ 0.016,
+ 1.196,
+ 0.42,
+ -1.116,
+ -1.16,
+ -0.62,
+ 0.732,
+ 1.344,
+ 0.096,
+ -1.572
+ ],
+ "z": [
+ 0.712,
+ 0.472,
+ -0.384,
+ -2.04,
+ -2.04,
+ -1.808,
+ -0.936,
+ 0.336,
+ 0.42,
+ -0.08,
+ -1.584,
+ -2.04,
+ -1.86,
-0.888,
- -0.88,
- -0.892,
- -0.892,
- -0.892,
- -0.892,
- -0.896,
- -0.892,
- -0.896,
- -0.904
+ 0.292,
+ 0.356,
+ -0.684,
+ -2.04,
+ -2.04,
+ -1.036,
+ 0.528,
+ 0.644,
+ -0.348,
+ -2.04,
+ -2.04,
+ -1.744,
+ 0.052,
+ 0.904,
+ 0.432,
+ -0.62,
+ -2.04,
+ -2.04,
+ -1.388,
+ 0.112,
+ 0.72,
+ 0.404,
+ -1.612,
+ -2.04,
+ -2.04,
+ -0.224,
+ 1.012,
+ 0.396,
+ -1.716,
+ -2.04,
+ -1.684,
+ 0.216,
+ 0.996,
+ 0.248,
+ -2.04
]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- },
- "icon": "Asleep"
- },
- {
- "ID": 1717765568963,
- "name": "wave",
- "matrix": [
- true,
- false,
- true,
- false,
- false,
- true,
- false,
- true,
- false,
- false,
- true,
- true,
- true,
- true,
- false,
- true,
- true,
- false,
- true,
- false,
- true,
- true,
- true,
- true,
- false
- ],
- "recordings": [
+ },
+ "createdAt": 1730110968106
+ },
{
- "ID": 1717765679450,
+ "id": "41eda2c4-605b-4347-8958-c67528560919",
"data": {
"x": [
- -0.512,
- -0.476,
- -0.412,
- -0.332,
- -0.248,
- -0.176,
- -0.132,
- -0.164,
+ 0.056,
+ 0.532,
+ 0.44,
+ 0,
+ 0.004,
+ 0.164,
-0.216,
- -0.248,
- -0.244,
- -0.276,
- -0.292,
- -0.292,
- -0.252,
- -0.22,
- -0.176,
- -0.068,
- 0.032,
- 0.012,
- -0.036,
- -0.1,
- -0.168,
+ -0.36,
+ -0.136,
+ 0.34,
+ 0.396,
+ 0.18,
+ -0.016,
+ 0.256,
+ 0.072,
+ -0.4,
+ -0.436,
+ -0.056,
+ 0.456,
+ 0.392,
+ 0.172,
+ 0.008,
+ 0.244,
+ 0.196,
-0.26,
- -0.44,
- -0.584,
- -0.62,
- -0.6,
- -0.608,
- -0.612,
- -0.604,
- -0.612,
- -0.584,
- -0.528,
- -0.448,
- -0.368,
- -0.272,
- -0.208,
- -0.18,
- -0.144,
- -0.156,
- -0.144,
- -0.156,
+ -0.46,
+ -0.052,
+ 0.444,
+ 0.204,
+ 0.08,
+ 0.244,
+ 0.288,
+ 0.192,
+ -0.24,
+ -0.516,
-0.2,
- -0.236,
- -0.288,
- -0.312,
- -0.304,
- -0.3,
- -0.312,
- -0.356,
- -0.364,
- -0.38,
- -0.444,
- -0.5,
- -0.612,
- -0.684,
- -0.756,
- -0.772,
- -0.72,
- -0.644,
- -0.536,
- -0.44,
- -0.376,
- -0.324,
- -0.308,
- -0.308,
+ 0.412,
+ 0.416,
+ 0.24,
+ 0.068,
+ 0.26,
+ 0.012,
+ -0.652,
+ -0.504,
+ 0.132,
+ 0.608,
+ 0.416,
+ 0.064,
+ 0.176
+ ],
+ "y": [
+ -0.164,
+ 0.624,
+ 1.168,
+ 1.144,
+ 0.172,
+ -0.82,
+ -0.868,
+ -0.608,
+ -0.164,
+ 0.26,
+ 0.864,
+ 1.184,
+ 0.764,
-0.28,
- -0.26,
- -0.292,
- -0.316,
- -0.344,
- -0.34,
- -0.344,
+ -1.048,
+ -1.136,
+ -0.812,
-0.316,
- -0.272,
- -0.244,
- -0.232,
- -0.268,
+ 0.248,
+ 0.904,
+ 1.332,
+ 0.904,
+ -0.188,
+ -1.068,
+ -1.268,
+ -0.888,
+ -0.352,
+ 0.2,
+ 0.784,
+ 1.312,
+ 1.216,
+ 0.136,
+ -1.012,
+ -1.2,
+ -0.872,
+ -0.264,
+ 0.256,
+ 1.016,
+ 1.484,
+ 1.028,
+ -0.148,
+ -1.204,
+ -1.196,
+ -0.692,
+ 0,
+ 0.724,
+ 1.372,
+ 1.468,
+ 0.156
+ ],
+ "z": [
+ -0.528,
-0.344,
- -0.436,
- -0.52,
- -0.576,
- -0.644,
- -0.716,
+ 0.128,
+ 0.464,
+ -0.324,
+ -2.028,
+ -2.04,
+ -1.804,
+ -0.692,
+ -0.648,
+ -0.304,
+ 0.272,
+ 0.38,
+ -0.88,
+ -2.04,
+ -2.04,
+ -1.68,
-0.78,
- -0.844,
- -0.784,
- -0.732,
- -0.712
+ -0.764,
+ -0.22,
+ 0.5,
+ 0.44,
+ -0.836,
+ -2.04,
+ -2.04,
+ -1.644,
+ -0.816,
+ -0.848,
+ -0.284,
+ 0.464,
+ 0.528,
+ -0.504,
+ -2.04,
+ -2.04,
+ -1.996,
+ -0.904,
+ -0.772,
+ -0.116,
+ 0.608,
+ 0.588,
+ -0.804,
+ -2.04,
+ -2.04,
+ -1.588,
+ -0.688,
+ -0.38,
+ 0.46,
+ 1.06,
+ 0.136
+ ]
+ },
+ "createdAt": 1730110963698
+ },
+ {
+ "id": "64f636c1-2a19-43f1-aad2-0585efabfdf1",
+ "data": {
+ "x": [
+ -0.872,
+ 1.228,
+ 1.48,
+ 1,
+ 0.128,
+ -0.92,
+ -1.44,
+ 0.276,
+ 1.4,
+ 1.124,
+ 0.552,
+ 0.244,
+ -0.504,
+ -1.516,
+ -0.508,
+ 1,
+ 1.372,
+ 1.188,
+ 0.356,
+ -0.424,
+ -1.62,
+ -0.46,
+ 1.112,
+ 1.28,
+ 1.084,
+ 0.336,
+ -0.008,
+ -1.296,
+ -1.304,
+ 0.608,
+ 1.336,
+ 1.34,
+ 0.632,
+ 0.16,
+ -0.824,
+ -1.48,
+ 0.3,
+ 1.368,
+ 1.316,
+ 0.344,
+ -0.184,
+ -1.028,
+ -0.764,
+ 0.784,
+ 1.288,
+ 0.96,
+ 0.032,
+ -1.124,
+ -1.128
],
"y": [
- 2.04,
- 2.04,
- 2.04,
- 1.784,
- 1.516,
- 1.224,
- 0.956,
- 0.768,
- 0.672,
+ -0.676,
+ 0.088,
+ 1.04,
+ 0.636,
+ -0.252,
+ -1.032,
+ -0.844,
+ -0.352,
0.54,
- 0.396,
- 0.3,
+ 1.072,
+ 0.44,
+ -0.372,
+ -1.008,
+ -0.928,
+ -0.492,
0.164,
- 0.068,
- -0.004,
- -0.04,
+ 0.94,
+ 0.74,
+ -0.204,
+ -1.084,
+ -1.104,
+ -0.7,
+ 0.016,
+ 1.036,
+ 1.036,
+ 0.056,
+ -0.932,
+ -1.2,
+ -0.908,
+ -0.352,
+ 0.584,
+ 1.024,
+ 0.288,
+ -0.608,
+ -1.164,
+ -0.856,
+ -0.4,
+ 0.364,
+ 0.792,
+ 0.312,
+ -0.516,
+ -0.776,
+ -0.512,
+ 0.044,
+ 0.724,
+ 0.496,
+ -0.224,
+ -0.868,
+ -0.712
+ ],
+ "z": [
+ -1.416,
+ -0.652,
+ 0.316,
+ 0.232,
+ -0.688,
+ -2.04,
+ -2.04,
+ -1.148,
-0.116,
- -0.384,
- -0.752,
- -0.976,
- -1.156,
- -1.18,
- -1.284,
- -1.432,
+ 0.348,
+ -0.028,
+ -1.044,
+ -2.04,
+ -2.04,
+ -1.36,
+ -0.544,
+ 0.24,
+ 0.136,
+ -0.392,
+ -2.04,
+ -2.04,
+ -1.592,
+ -0.564,
+ 0.432,
+ 0.42,
+ -0.052,
+ -1.82,
+ -2.04,
+ -1.972,
+ -1.008,
+ 0.084,
+ 0.388,
+ 0.028,
+ -1.26,
+ -2.04,
+ -2.04,
+ -1.24,
+ -0.208,
+ 0.068,
+ -0.072,
+ -1.332,
+ -2.04,
+ -1.82,
+ -0.912,
+ 0.108,
+ 0.06,
+ -0.748,
+ -1.976,
+ -2.04
+ ]
+ },
+ "createdAt": 1730110956731
+ },
+ {
+ "id": "eadbd428-b05d-4c3a-a938-f5e8f3e1b807",
+ "data": {
+ "x": [
+ 1.452,
+ 0.64,
+ 0.46,
+ -1.608,
+ -2.04,
+ 0.592,
+ 1.648,
+ 1.284,
+ 1.128,
+ 0.664,
+ 0.764,
+ -0.624,
+ -2.04,
+ -1.032,
+ 1.368,
+ 1.564,
+ 1.696,
+ 1.132,
+ 0.508,
+ -0.496,
+ -2.04,
+ -0.792,
+ 1.372,
+ 1.404,
+ 1.46,
+ 0.92,
+ 0.712,
+ -0.096,
+ -2.04,
+ -1.464,
+ 1.076,
+ 1.468,
+ 1.676,
+ 1.292,
+ 0.736,
+ 0.108,
+ -2.04,
+ -1.416,
+ 1.32,
+ 1.296,
+ 1.288,
+ 0.624,
+ 0.036,
+ -1.044,
+ -1.176,
+ 1.036,
+ 1.648,
+ 0.584,
+ -0.812
+ ],
+ "y": [
+ 0.928,
+ -0.176,
+ -1.368,
+ -1.968,
+ -1.772,
+ -1.404,
+ -0.352,
+ 0.904,
+ 1.364,
+ 0.272,
+ -0.92,
+ -1.652,
+ -1.6,
+ -1.34,
+ -0.748,
+ 0.392,
+ 1.192,
+ 0.528,
+ -0.492,
+ -1.516,
+ -1.4,
+ -1.108,
+ -0.524,
+ 0.532,
+ 1.244,
+ 0.696,
+ -0.312,
+ -1.412,
-1.508,
- -1.624,
- -1.872,
+ -1.092,
+ -0.712,
+ 0.412,
+ 1.348,
+ 0.752,
+ -0.38,
+ -1.368,
+ -1.436,
+ -1.044,
+ -0.608,
+ 0.488,
+ 0.952,
+ 0.404,
+ -0.536,
+ -0.992,
+ -0.616,
+ 0,
+ 0.664,
+ 0.352,
+ -0.588
+ ],
+ "z": [
+ 0.556,
+ 0.168,
+ -1.688,
-2.04,
-2.04,
+ -2,
+ -0.324,
+ 0.776,
+ 0.968,
+ 0.512,
+ -1.116,
-2.04,
-2.04,
- -1.94,
- -1.692,
- -1.512,
- -1.328,
- -1.192,
- -1.04,
- -0.896,
- -0.724,
- -0.5,
- -0.328,
- -0.244,
- -0.12,
- 0.016,
- 0.148,
- 0.216,
- 0.264,
- 0.312,
- 0.412,
- 0.552,
+ -2.036,
+ -1.184,
+ 0.26,
0.772,
- 0.896,
- 1.032,
- 1.312,
- 1.6,
- 1.932,
- 2.04,
- 2.04,
- 2.04,
- 2.04,
- 1.996,
- 1.74,
- 1.456,
- 1.2,
- 0.956,
- 0.744,
+ 0.604,
+ -0.496,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.996,
+ 0.516,
+ 0.768,
+ 0.536,
+ -0.496,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.376,
+ 0.32,
+ 0.816,
+ 0.604,
+ -0.36,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.548,
+ 0.36,
0.564,
- 0.376,
- 0.136,
- 0,
- -0.132,
- -0.24,
- -0.276,
- -0.332,
- -0.388,
- -0.452,
- -0.54,
- -0.688,
- -0.796,
- -0.864,
- -0.92,
- -0.992,
- -1.128,
- -1.272,
- -1.488,
- -1.724,
- -1.944,
+ 0.18,
+ -1.06,
-2.04,
-2.04,
- -2.04
- ],
- "z": [
- -0.472,
- -0.364,
- -0.268,
- -0.228,
- -0.24,
- -0.276,
- -0.324,
- -0.292,
- -0.212,
- -0.168,
- -0.208,
- -0.232,
- -0.212,
- -0.2,
- -0.224,
- -0.344,
- -0.42,
- -0.332,
- -0.092,
- 0.188,
- 0.372,
- 0.356,
- 0.304,
- 0.244,
- 0.212,
- 0.08,
- -0.152,
- -0.4,
- -0.292,
- -0.064,
- 0.092,
- 0.108,
- 0.084,
- 0.008,
- -0.004,
- 0.024,
+ -1.272,
0.096,
- 0.14,
- 0.172,
- 0.16,
- 0.132,
- 0.08,
- 0.088,
- 0.024,
- -0.052,
- -0.04,
- -0.076,
- -0.108,
- -0.108,
- -0.18,
- -0.264,
- -0.284,
- -0.328,
- -0.488,
- -0.644,
- -0.756,
- -0.768,
- -0.752,
- -0.656,
- -0.54,
- -0.464,
- -0.436,
+ 0.396,
+ -1.2
+ ]
+ },
+ "createdAt": 1730110951969
+ },
+ {
+ "id": "52b0efd9-2e93-4fbe-a990-41b9060e9ff9",
+ "data": {
+ "x": [
+ 0.412,
+ -0.484,
+ -1.636,
+ -1.372,
+ -0.484,
+ 0.216,
+ 0.804,
+ 1.46,
+ 1.172,
+ 0.524,
+ -0.032,
+ -1.608,
+ -1.292,
+ -0.572,
+ -0.316,
+ 0.368,
+ 0.692,
+ 0.948,
+ 0.792,
+ 0.204,
+ -0.372,
+ -0.988,
+ -0.732,
+ -0.772,
+ -0.316,
+ 0.62,
+ 1.084,
+ 0.892,
+ 0.268,
-0.42,
+ -1.156,
+ -1.172,
+ -0.944,
+ -0.34,
+ 0.532,
+ 0.96,
+ 0.944,
+ 0.624,
+ 0.264,
+ -0.5,
+ -1.02,
+ -0.824,
+ -0.728,
+ -0.056,
+ 0.708,
+ 1.132,
+ 0.964,
+ 0.38
+ ],
+ "y": [
+ -1.024,
+ -2.04,
+ -1.944,
+ -1.3,
+ -0.596,
+ 0.144,
+ 1.224,
+ 1.48,
+ 0.476,
+ -0.94,
+ -2.04,
+ -2.016,
+ -1.364,
+ -0.856,
-0.376,
- -0.308,
+ 0.084,
+ 0.696,
+ 1.132,
+ 0.808,
+ -0.064,
+ -1.548,
+ -1.904,
+ -1.424,
+ -1.016,
-0.24,
- -0.208,
- -0.18,
- -0.176,
- -0.192,
- -0.212,
- -0.176,
- -0.088,
- 0.004,
- 0.124,
- 0.192,
- 0.208,
- 0.248,
- 0.308,
- 0.384,
- 0.408,
+ 0.744,
+ 1.632,
+ 1.468,
+ -0.004,
+ -2.02,
+ -2.04,
+ -1.684,
+ -1.156,
+ -0.504,
+ 0.396,
+ 1.228,
+ 1.536,
+ 0.916,
+ -0.376,
+ -1.688,
+ -1.672,
+ -1.252,
+ -0.908,
+ -0.208,
+ 0.904,
+ 1.456,
+ 0.86,
+ -0.452
+ ],
+ "z": [
+ -0.912,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.968,
+ -0.112,
+ 1.2,
+ 1.672,
+ 0.824,
+ -0.336,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.512,
+ -0.584,
+ -0.368,
0.34,
- 0.2,
- 0.06,
- -0.068,
- -0.164,
- -0.212,
- -0.172,
- -0.12,
- -0.036
+ 0.776,
+ 0.68,
+ -0.072,
+ -1.728,
+ -2.04,
+ -2.04,
+ -1.4,
+ -0.056,
+ 0.64,
+ 1.5,
+ 1.412,
+ 0.236,
+ -1.78,
+ -2.04,
+ -2.04,
+ -1.276,
+ -0.28,
+ 0.028,
+ 0.632,
+ 1.288,
+ 1.032,
+ -0.116,
+ -1.8,
+ -2.04,
+ -2.04,
+ -1.216,
+ -0.344,
+ 0.408,
+ 1.244,
+ 1.396,
+ 0.2
]
- }
+ },
+ "createdAt": 1730110947823
},
{
- "ID": 1717765674496,
+ "id": "4fe2f639-0080-4e3a-9655-2995565a2638",
"data": {
"x": [
- -0.544,
- -0.452,
- -0.372,
- -0.312,
- -0.26,
- -0.244,
- -0.248,
- -0.28,
- -0.332,
- -0.384,
- -0.4,
- -0.42,
- -0.44,
- -0.416,
- -0.456,
- -0.48,
- -0.5,
- -0.508,
- -0.532,
- -0.536,
- -0.584,
+ -1.472,
+ -0.212,
+ 0.86,
+ 0.856,
+ 0.468,
+ 0.296,
+ -0.7,
+ -1.32,
+ -0.092,
+ 0.932,
+ 0.668,
+ 0.452,
+ 0.12,
+ -0.992,
+ -0.844,
+ 0.348,
+ 1.096,
+ 0.576,
+ 0.088,
+ -0.644,
+ -0.792,
+ -0.052,
+ 0.892,
+ 0.628,
+ -0.688,
+ -1.224,
+ -0.58,
+ 0.26,
+ 0.856,
+ 0.776,
+ -0.108,
+ -1.024,
-0.632,
+ 0.244,
+ 0.7,
+ 0.956,
+ 0.356,
+ -0.66,
+ -1.448,
+ -1.012,
+ -0.084,
+ 0.768,
+ 0.664,
+ 0.536,
+ 0.044,
+ -1.284,
+ -1.08,
+ -0.264,
+ -0.148
+ ],
+ "y": [
+ -0.684,
+ 0.508,
+ 1.388,
+ 0.856,
+ -0.592,
+ -1.14,
+ -0.908,
+ -0.436,
+ 0.652,
+ 1.284,
+ 0.568,
+ -0.74,
+ -0.996,
+ -0.652,
+ -0.136,
+ 0.612,
+ 0.584,
+ -0.02,
-0.716,
- -0.76,
- -0.724,
- -0.64,
+ -0.396,
+ -0.1,
+ 0.148,
+ 0.34,
+ -0.144,
+ -0.928,
+ -0.704,
+ -0.188,
+ 0.452,
+ 0.496,
+ 0.092,
+ -0.552,
+ -0.596,
+ -0.4,
+ 0.292,
+ 0.52,
+ 0.112,
-0.532,
- -0.46,
- -0.416,
- -0.364,
- -0.288,
- -0.284,
- -0.312,
- -0.332,
- -0.316,
- -0.328,
- -0.364,
- -0.36,
- -0.36,
- -0.32,
- -0.304,
- -0.256,
- -0.26,
- -0.32,
- -0.404,
+ -1.024,
+ -0.8,
-0.472,
- -0.62,
- -0.792,
- -0.912,
- -0.916,
- -0.908,
- -0.864,
- -0.78,
- -0.712,
- -0.62,
- -0.52,
- -0.452,
- -0.412,
- -0.384,
- -0.38,
- -0.368,
- -0.444,
- -0.432,
- -0.484,
- -0.484,
- -0.5,
- -0.5,
- -0.492,
- -0.488,
- -0.496,
- -0.508,
- -0.504,
+ 0.172,
+ 0.492,
+ 0.176,
+ -0.112,
-0.484,
- -0.5,
- -0.472,
- -0.512,
- -0.572,
- -0.656,
- -0.708,
- -0.704,
- -0.66,
- -0.572,
- -0.52,
- -0.456,
- -0.392,
- -0.364,
- -0.368,
- -0.4,
- -0.38,
- -0.368,
- -0.364
+ -0.6,
+ -0.636,
+ -0.304,
+ 0.152
],
- "y": [
- -1.156,
- -1.012,
- -0.78,
- -0.536,
- -0.404,
- -0.268,
- -0.12,
- 0.084,
+ "z": [
+ -1.82,
+ -0.308,
+ 1.184,
+ 0.912,
+ -0.624,
+ -2.04,
+ -2.04,
+ -1.252,
+ 0.228,
+ 1.352,
+ 0.716,
+ -1.02,
+ -2.04,
+ -2.04,
+ -1.152,
+ 0.32,
+ 0.848,
+ -0.188,
+ -1.976,
+ -2.04,
+ -1.46,
+ 0.044,
+ 0.12,
+ -0.928,
+ -1.764,
+ -2.04,
+ -1.548,
+ -0.08,
+ 0.52,
+ -0.384,
+ -1.684,
+ -2.04,
+ -1.768,
+ -0.644,
+ 0.64,
+ 0.144,
+ -1.136,
+ -2.04,
+ -2.04,
+ -1.588,
+ -0.7,
+ -0.032,
+ 0.244,
+ -0.56,
+ -1.652,
+ -1.804,
+ -1.908,
+ -1.708,
+ -0.852
+ ]
+ },
+ "createdAt": 1730110939381
+ },
+ {
+ "id": "f50f1519-8f71-491a-afc2-9c6a73143104",
+ "data": {
+ "x": [
0.276,
- 0.332,
- 0.3,
- 0.288,
+ 0.272,
+ 0.324,
+ 0.192,
+ 0.372,
+ 0.224,
+ 0.324,
+ 0.12,
+ -0.6,
+ -0.98,
+ -0.04,
+ 0.764,
+ 0.796,
+ 0.512,
0.376,
- 0.536,
- 0.712,
- 0.84,
- 0.98,
- 1.068,
- 1.204,
- 1.312,
- 1.476,
- 1.744,
- 2.04,
- 2.04,
- 2.04,
- 1.9,
- 1.656,
- 1.456,
- 1.272,
- 1.016,
- 0.688,
- 0.464,
- 0.368,
- 0.296,
- 0.144,
- -0.024,
- -0.096,
+ 0.252,
+ 0.1,
+ -0.3,
+ -0.34,
+ -0.12,
+ 0.072,
+ 0.252,
+ 0.292,
+ 0.38,
+ 0.256,
+ -0.108,
+ -0.276,
+ -0.316,
+ -0.924,
-0.104,
- -0.14,
- -0.208,
+ 0.728,
+ 1.248,
+ 1.16,
+ 0.212,
+ -0.336,
+ -0.532,
+ -0.16,
+ -1.488,
+ -1.048,
+ 0.304,
+ 0.668,
+ 0.796,
+ 0.432,
+ 0.188,
+ 0.168,
+ -0.044,
+ -0.024,
+ -0.7
+ ],
+ "y": [
+ -0.036,
+ 0.128,
+ 0.508,
+ 1.276,
+ 1.352,
+ 0.1,
+ -1.348,
+ -1.372,
+ -1.128,
+ -0.812,
+ 0.008,
+ 0.796,
+ 1.156,
+ 0.644,
+ 0.112,
-0.32,
- -0.444,
- -0.568,
- -0.652,
- -0.752,
- -0.976,
- -1.2,
- -1.456,
- -1.884,
+ -0.572,
+ -0.616,
+ -0.408,
+ -0.02,
+ 0.512,
+ 1.072,
+ 1.384,
+ 0.836,
+ -0.276,
+ -1.672,
+ -1.688,
+ -1.364,
+ -0.896,
+ -0.204,
+ 0.668,
+ 1.548,
+ 1.868,
+ 0.516,
+ -1.7,
-2.04,
+ -1.796,
+ -1.468,
+ -0.676,
+ 0.188,
+ 0.972,
+ 1.556,
+ 1.492,
+ 0.376,
+ -1.184,
+ -1.784,
+ -1.648,
+ -1.424
+ ],
+ "z": [
+ -0.812,
+ -1.136,
+ -1.048,
+ -0.02,
+ 0.596,
+ 0.596,
+ -1.276,
-2.04,
-2.04,
- -1.828,
- -1.48,
- -1.2,
- -0.924,
- -0.78,
+ -1.364,
-0.652,
- -0.516,
- -0.344,
-0.14,
- 0.032,
+ 0.66,
+ 0.928,
+ 0.072,
+ -1.188,
+ -2.04,
+ -2.04,
+ -1.816,
+ -1.056,
+ -0.58,
+ -0.052,
+ 0.876,
+ 1.06,
+ 0.064,
+ -1.944,
+ -2.04,
+ -2.04,
+ -1.16,
+ -0.528,
+ -0.04,
+ 0.948,
+ 1.816,
+ 1.304,
+ -1.068,
+ -2.04,
+ -2.04,
+ -1.56,
+ -0.416,
+ -0.44,
+ 0.34,
+ 1.052,
+ 1.456,
+ 0.508,
+ -1.28,
+ -2.04,
+ -2.04,
+ -1.916
+ ]
+ },
+ "createdAt": 1730110935138
+ },
+ {
+ "id": "064f9a2c-d99d-4b9a-924e-d5f715573804",
+ "data": {
+ "x": [
+ 0.244,
+ 0.088,
+ -0.3,
+ -0.34,
+ -0.272,
+ -0.18,
+ 0.38,
+ 0.636,
+ 0.428,
+ 0.184,
0.132,
- 0.22,
+ -0.196,
+ -0.06,
+ -0.416,
+ -0.12,
+ 0.564,
+ 0.708,
+ 0.532,
+ 0.404,
+ 0.004,
+ -0.144,
+ -0.128,
+ -0.452,
+ 0.316,
+ 0.864,
+ 0.712,
+ 0.428,
0.192,
- 0.204,
- 0.24,
- 0.3,
- 0.424,
- 0.544,
- 0.62,
- 0.628,
- 0.72,
- 0.908,
- 1.124,
- 1.42,
- 1.712,
- 2.02,
- 2.04,
- 2.04,
- 2.04,
- 1.844,
- 1.604,
- 1.372,
- 1.076,
- 0.784,
+ -0.388,
+ -0.208,
+ -0.648,
+ -0.588,
+ 0.352,
+ 0.712,
0.584,
+ 0.196,
+ 0.132,
+ -0.016,
+ -0.132,
+ -0.304,
+ 0.256,
+ 0.6,
+ 0.58,
+ 0.196,
+ 0.08,
+ -0.048,
+ -0.232,
+ 0.016,
+ -0.188
+ ],
+ "y": [
+ 0.496,
+ -0.772,
+ -1.608,
+ -1.26,
+ -0.74,
+ -0.164,
+ 0.428,
+ 0.964,
+ 0.976,
+ 0.076,
+ -1.164,
+ -1.46,
+ -1.104,
+ -0.684,
+ 0.036,
+ 0.876,
+ 1.388,
+ 0.884,
+ -0.456,
+ -1.804,
+ -1.552,
+ -1.048,
+ -0.404,
+ 0.428,
+ 1.272,
+ 1.54,
+ 0.532,
+ -1.16,
+ -2.04,
+ -1.516,
+ -1.04,
+ -0.328,
0.516,
- 0.424,
- 0.192,
- -0.028
+ 1.352,
+ 1.444,
+ 0.172,
+ -1.48,
+ -1.62,
+ -1.316,
+ -0.836,
+ -0.148,
+ 0.824,
+ 1.524,
+ 1.152,
+ -0.324,
+ -1.62,
+ -1.6,
+ -1.132,
+ -0.528
],
"z": [
- 0.336,
- 0.296,
- 0.16,
- 0.016,
- -0.024,
- 0.04,
- 0.056,
- -0.028,
+ 0.536,
+ -0.972,
+ -2.04,
+ -2.04,
+ -1.864,
+ -0.428,
-0.124,
- -0.164,
+ 0.412,
+ 0.74,
+ 0.208,
+ -1.44,
+ -2.04,
+ -2.04,
+ -1.4,
+ -0.212,
+ 0.428,
+ 1.192,
+ 1.076,
+ -0.276,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.66,
+ -0.188,
+ 0.556,
+ 1.364,
+ 0.948,
+ -0.824,
+ -2.04,
+ -2.04,
+ -1.808,
+ -0.204,
+ 0.08,
+ 0.812,
+ 1.108,
+ 0.344,
+ -1.812,
+ -2.04,
+ -2.04,
+ -1.12,
+ -0.548,
+ 0.088,
+ 0.98,
+ 1.024,
+ -0.336,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.748
+ ]
+ },
+ "createdAt": 1730110929535
+ },
+ {
+ "id": "16310978-ff3a-4a8d-85b1-bb25c725a10f",
+ "data": {
+ "x": [
+ 0.144,
+ 0.096,
+ 0.092,
-0.088,
- -0.072,
- -0.18,
- -0.288,
- -0.396,
- -0.396,
- -0.376,
- -0.404,
- -0.48,
- -0.632,
- -0.768,
- -0.804,
- -0.876,
- -0.84,
- -0.708,
- -0.644,
- -0.652,
- -0.676,
- -0.596,
- -0.516,
- -0.416,
- -0.308,
- -0.272,
- -0.248,
- -0.16,
- -0.028,
- 0.012,
- 0.004,
- 0.048,
- 0.152,
- 0.316,
- 0.4,
- 0.444,
- 0.484,
- 0.504,
- 0.548,
- 0.616,
- 0.6,
- 0.476,
- 0.328,
- 0.32,
- 0.336,
+ -0.388,
+ -0.488,
+ -0.064,
+ 0.368,
+ 0.436,
+ 0.248,
+ 0.148,
+ 0.028,
+ -0.008,
+ -0.372,
+ -0.488,
+ -0.064,
+ 0.356,
+ 0.472,
0.332,
- 0.348,
- 0.348,
0.264,
- 0.184,
- 0.14,
- 0.104,
- 0.056,
- 0.12,
- 0.132,
- 0.112,
0.084,
+ 0.008,
+ -0.404,
+ -0.448,
0.036,
- 0.076,
+ 0.464,
+ 0.52,
+ 0.356,
+ 0.184,
+ -0.092,
+ -0.012,
+ -0.572,
+ -0.408,
+ 0.172,
+ 0.504,
+ 0.512,
+ 0.144,
+ 0.088,
+ -0.032,
+ -0.36,
+ -0.48,
+ -0.188,
+ 0.228,
+ 0.48,
+ 0.412,
+ 0.256,
0.108,
- 0.032,
- -0.096,
- -0.236,
- -0.248,
- -0.16,
- -0.192,
+ -0.068,
+ -0.508
+ ],
+ "y": [
+ 0.424,
+ -0.292,
+ -1.036,
+ -1.128,
+ -0.892,
+ -0.472,
+ 0.004,
+ 0.448,
+ 0.784,
+ 0.524,
+ -0.156,
+ -0.888,
+ -1.072,
+ -0.984,
+ -0.56,
+ -0.04,
+ 0.512,
+ 0.864,
+ 0.56,
+ -0.228,
+ -1.12,
+ -1.232,
+ -1.096,
+ -0.672,
+ -0.06,
+ 0.624,
+ 1.036,
+ 0.736,
-0.32,
- -0.468,
+ -1.264,
+ -1.24,
+ -1.088,
-0.552,
- -0.564,
- -0.596,
- -0.66,
- -0.628,
- -0.516,
- -0.424,
- -0.456,
- -0.432,
- -0.404,
- -0.332,
- -0.312,
- -0.28,
+ 0.016,
+ 0.712,
+ 0.9,
+ 0.28,
+ -0.484,
+ -0.964,
+ -1.016,
+ -0.72,
+ -0.268,
+ 0.248,
+ 0.676,
+ 0.876,
+ 0.184,
+ -0.78,
+ -1.072,
+ -1.16
+ ],
+ "z": [
+ 0.26,
+ -0.756,
+ -2.04,
+ -2.04,
+ -2.008,
+ -0.796,
+ -0.54,
+ -0.168,
+ 0.492,
+ 0.576,
+ -0.36,
+ -2.024,
+ -2.04,
+ -2.04,
+ -1.096,
+ -0.536,
+ 0.052,
+ 0.736,
+ 0.812,
+ -0.264,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.084,
+ -0.484,
+ 0.148,
+ 1.088,
+ 1.148,
+ -0.252,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.82,
-0.256,
- -0.192,
- -0.092
+ 0.444,
+ 0.692,
+ 0.216,
+ -1.2,
+ -2.04,
+ -2.04,
+ -1.66,
+ -0.836,
+ -0.312,
+ 0.376,
+ 0.932,
+ 0.212,
+ -1.512,
+ -2.04,
+ -2.04
]
- }
+ },
+ "createdAt": 1730110925513
},
{
- "ID": 1717765669623,
+ "id": "c79c5e37-325c-49d5-8640-e60c23950942",
"data": {
"x": [
- -0.372,
- -0.376,
- -0.392,
- -0.352,
- -0.352,
- -0.404,
- -0.444,
- -0.468,
- -0.464,
- -0.456,
- -0.444,
- -0.444,
- -0.472,
- -0.528,
- -0.608,
- -0.704,
- -0.808,
- -0.912,
- -0.992,
- -0.996,
- -0.988,
- -0.948,
- -0.916,
- -0.856,
- -0.844,
- -0.772,
- -0.676,
- -0.572,
- -0.52,
- -0.508,
- -0.46,
- -0.42,
- -0.396,
- -0.384,
- -0.376,
- -0.388,
- -0.384,
- -0.38,
- -0.396,
- -0.396,
- -0.428,
- -0.472,
- -0.492,
- -0.504,
- -0.544,
- -0.6,
- -0.66,
- -0.72,
- -0.724,
- -0.68,
- -0.6,
- -0.528,
- -0.492,
- -0.444,
- -0.388,
- -0.392,
- -0.428,
- -0.436,
- -0.432,
- -0.464,
- -0.504,
- -0.516,
- -0.532,
+ 0.116,
+ 0.224,
+ 0.268,
+ 0.432,
+ 0.304,
+ -0.044,
+ -0.484,
-0.512,
- -0.472,
- -0.508,
- -0.496,
- -0.46,
- -0.44,
- -0.492,
- -0.544,
- -0.644,
- -0.768,
- -0.916,
- -1.048,
- -1.18,
- -1.192,
- -1.176,
- -1.092,
- -1.008,
- -0.916,
- -0.804,
- -0.704,
- -0.6,
- -0.48,
- -0.348,
- -0.288,
+ -0.084,
+ 0.208,
+ 0.26,
+ 0.384,
+ 0.372,
+ 0.112,
-0.272,
- -0.296,
- -0.324
+ -0.536,
+ -0.396,
+ 0.052,
+ 0.196,
+ 0.216,
+ 0.38,
+ 0.408,
+ 0.032,
+ -0.476,
+ -0.488,
+ -0.088,
+ 0.144,
+ 0.22,
+ 0.32,
+ 0.524,
+ 0.292,
+ -0.284,
+ -0.612,
+ -0.54,
+ 0.004,
+ 0.252,
+ 0.212,
+ 0.204,
+ 0.268,
+ 0.204,
+ -0.352,
+ -0.76,
+ -0.228,
+ 0.256,
+ 0.276,
+ 0.2,
+ 0.32,
+ 0.276
],
"y": [
- 0.544,
- 0.428,
- 0.268,
- 0.036,
- -0.084,
- -0.124,
- -0.116,
- -0.1,
- -0.132,
- -0.224,
- -0.328,
- -0.44,
- -0.512,
- -0.656,
- -0.832,
- -1.024,
- -1.272,
- -1.496,
- -1.776,
- -2.024,
- -2.028,
- -1.844,
- -1.56,
- -1.268,
- -0.94,
- -0.752,
- -0.656,
- -0.592,
- -0.408,
- -0.276,
- -0.216,
- -0.108,
- 0.004,
- 0.152,
+ 0.088,
0.304,
- 0.368,
- 0.344,
- 0.352,
- 0.428,
+ 0.632,
+ 0.46,
+ -0.176,
+ -0.84,
+ -0.96,
+ -0.484,
+ -0.072,
+ 0.092,
0.52,
- 0.636,
- 0.732,
- 0.848,
- 1.056,
- 1.428,
- 1.812,
- 2.04,
- 2.04,
- 2.04,
- 2.04,
- 1.756,
- 1.472,
- 1.244,
- 0.968,
- 0.668,
- 0.5,
- 0.424,
- 0.332,
- 0.188,
- 0.048,
- -0.012,
- 0,
- 0,
- -0.064,
- -0.156,
- -0.22,
- -0.28,
+ 0.756,
+ 0.412,
+ -0.508,
+ -0.832,
+ -0.684,
+ -0.18,
+ 0.1,
+ 0.224,
+ 0.556,
+ 0.508,
+ 0.004,
+ -0.74,
+ -0.956,
+ -0.52,
+ 0.004,
+ 0.168,
+ 0.456,
+ 0.784,
+ 0.448,
+ -0.472,
+ -0.904,
+ -0.804,
-0.368,
- -0.46,
- -0.576,
- -0.812,
- -1.036,
- -1.108,
- -1.188,
- -1.304,
- -1.464,
- -1.628,
- -1.76,
- -1.728,
- -1.556,
- -1.34,
- -1.132,
- -0.86,
- -0.68,
- -0.576,
- -0.536,
- -0.38,
- -0.088,
- 0.176,
- 0.304
+ 0.024,
+ 0.392,
+ 0.788,
+ 0.852,
+ 0.248,
+ -0.5,
+ -0.64,
+ -0.448,
+ 0.008,
+ 0.204,
+ 0.556,
+ 0.88,
+ 0.264,
+ -0.48
],
"z": [
- -0.308,
- -0.228,
- -0.124,
- -0.168,
- -0.16,
- -0.072,
- 0.008,
- 0.032,
- 0.056,
- 0.076,
- 0.176,
- 0.32,
+ -0.54,
+ 0.024,
+ 0.724,
+ 0.336,
+ -1.064,
+ -2.04,
+ -2.04,
+ -1.592,
+ -0.768,
+ -0.36,
0.38,
- 0.388,
- 0.416,
- 0.42,
- 0.36,
- 0.316,
- 0.284,
- 0.28,
- 0.308,
- 0.252,
- 0.26,
- 0.152,
- 0.056,
- 0.04,
- 0.064,
- 0.12,
+ 0.728,
+ -0.06,
+ -1.816,
+ -2.04,
+ -2.04,
+ -1.02,
+ -0.644,
+ -0.276,
+ 0.452,
+ 0.376,
+ -0.804,
+ -2.04,
+ -2.04,
+ -1.772,
+ -0.864,
+ -0.448,
0.088,
- 0.016,
- -0.02,
- -0.012,
- -0.024,
- -0.044,
+ 0.668,
+ 0.124,
+ -1.456,
+ -2.04,
+ -2.04,
+ -1.088,
+ -0.544,
+ -0.408,
+ 0.192,
+ 0.436,
+ -0.272,
+ -2.04,
+ -2.04,
+ -1.852,
+ -0.872,
+ -0.608,
-0.032,
- -0.004,
- 0.024,
- -0.04,
- -0.108,
- -0.22,
- -0.296,
- -0.38,
- -0.444,
- -0.548,
+ 0.688,
+ 0.296,
+ -1.368
+ ]
+ },
+ "createdAt": 1730110921508
+ },
+ {
+ "id": "c576737a-0b1f-472f-a75f-cec86f35b83c",
+ "data": {
+ "x": [
+ 0.452,
+ 0.764,
+ 0.564,
+ 0.44,
+ 0.068,
+ -0.516,
+ -0.612,
+ -0.324,
+ 0.068,
+ 0.504,
+ 0.62,
+ 0.544,
+ 0.288,
+ -0.212,
-0.712,
- -0.864,
- -0.9,
- -0.856,
+ -0.624,
+ -0.096,
+ 0.264,
+ 0.604,
+ 0.744,
+ 0.436,
+ -0.044,
+ -0.596,
+ -0.684,
+ -0.224,
+ 0.16,
+ 0.444,
+ 0.608,
+ 0.468,
+ 0.108,
+ -0.384,
+ -0.712,
+ -0.444,
+ 0.044,
+ 0.468,
+ 0.744,
+ 0.548,
+ 0.228,
+ -0.444,
+ -0.896,
+ -0.404,
+ 0.084,
+ 0.528,
+ 0.684,
+ 0.384,
+ 0.092,
+ -0.484,
-0.792,
- -0.72,
- -0.704,
+ -0.192
+ ],
+ "y": [
+ 0.556,
+ 1.104,
+ 0.84,
+ -0.12,
+ -0.972,
+ -1.124,
+ -0.96,
-0.652,
- -0.636,
- -0.56,
- -0.484,
- -0.392,
- -0.332,
- -0.316,
- -0.252,
- -0.108,
- 0.02,
+ -0.128,
+ 0.548,
+ 0.896,
+ 0.552,
+ -0.224,
+ -1.016,
+ -1.032,
+ -0.676,
+ -0.24,
+ 0.208,
+ 0.692,
+ 0.744,
0.068,
+ -0.98,
+ -1.212,
+ -0.908,
+ -0.492,
+ 0,
+ 0.504,
+ 0.836,
+ 0.48,
+ -0.432,
+ -0.972,
+ -0.896,
+ -0.472,
+ -0.008,
+ 0.632,
+ 0.896,
+ 0.232,
+ -0.836,
+ -1.232,
+ -1.024,
+ -0.512,
+ 0.048,
+ 0.608,
+ 0.724,
0.064,
- 0.088,
- 0.104,
- 0.18,
- 0.248,
- 0.252,
- 0.228,
- 0.34,
- 0.444,
- 0.492,
- 0.416,
- 0.304,
- 0.248,
- 0.272,
- 0.264,
- 0.3,
- 0.256,
- 0.224,
- 0.248,
- 0.224,
- 0.176,
- 0.156,
- 0.204,
- 0.176,
- 0.136,
+ -0.992,
+ -1.204,
+ -0.952,
+ -0.448
+ ],
+ "z": [
+ -0.148,
+ 0.568,
+ 0.984,
+ 0.06,
+ -1.684,
+ -2.04,
+ -2.04,
+ -1.508,
+ -0.608,
+ 0.012,
+ 0.868,
+ 0.724,
+ -0.56,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.964,
+ -0.036,
+ 0.696,
+ 0.664,
+ -0.3,
+ -2.036,
+ -2.04,
+ -2.04,
+ -1.276,
+ -0.46,
+ 0.348,
+ 0.768,
+ 0.084,
+ -1.252,
+ -2.04,
+ -2.04,
+ -1.564,
+ -0.528,
+ 0.588,
+ 1.196,
+ 0.436,
+ -1.436,
+ -2.04,
+ -2.04,
+ -1.468,
+ -0.364,
+ 0.66,
+ 1.048,
0.032,
- -0.056,
- -0.096
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.144
]
- }
- },
+ },
+ "createdAt": 1730110916926
+ }
+ ]
+ },
+ {
+ "id": "9db8233a-60f2-414d-a0cd-9b0d12064616",
+ "name": "flick",
+ "icon": "Yes",
+ "createdAt": 1730110969638,
+ "recordings": [
{
- "ID": 1717765664759,
+ "id": "460e4f1f-af8f-4073-85bb-fd699717b3c7",
"data": {
"x": [
- -0.524,
- -0.416,
- -0.384,
- -0.352,
- -0.352,
- -0.344,
- -0.356,
- -0.396,
- -0.428,
- -0.452,
- -0.468,
- -0.468,
- -0.484,
- -0.5,
- -0.528,
- -0.548,
- -0.556,
- -0.576,
- -0.604,
- -0.624,
- -0.616,
- -0.628,
- -0.656,
- -0.656,
- -0.576,
- -0.508,
- -0.428,
- -0.412,
- -0.392,
- -0.364,
- -0.348,
- -0.328,
+ 0.016,
+ 0.028,
+ 0.024,
+ 0.02,
+ 0.012,
+ 0.028,
+ 0.012,
+ 0,
+ 0.012,
+ 0.02,
+ 0.028,
+ 0.024,
+ 0.008,
+ -0.02,
+ 0.004,
+ 0.008,
+ 0.136,
+ 0.196,
+ 0.232,
-0.332,
- -0.328,
- -0.364,
- -0.416,
- -0.456,
- -0.48,
- -0.476,
- -0.476,
- -0.516,
- -0.6,
- -0.684,
- -0.712,
- -0.804,
- -0.88,
- -0.916,
- -0.924,
- -0.916,
- -0.888,
- -0.836,
- -0.776,
- -0.76,
- -0.732,
- -0.692,
- -0.604,
- -0.536,
- -0.504,
- -0.484,
- -0.488,
- -0.48,
- -0.5,
- -0.488,
- -0.492,
- -0.508,
- -0.508,
- -0.46,
- -0.444,
- -0.456,
- -0.452,
- -0.42,
- -0.44,
- -0.456,
- -0.476,
- -0.472,
- -0.476,
- -0.452,
- -0.412,
- -0.372,
- -0.348,
- -0.364,
- -0.384,
- -0.4,
- -0.376,
- -0.412,
- -0.456,
- -0.504,
- -0.504,
- -0.508,
- -0.484,
- -0.492
+ -2.04,
+ -2.04,
+ 0.064,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.44,
+ 1.208,
+ 0.596,
+ 0.308,
+ 0.168,
+ -0.276,
+ -0.188,
+ -0.072,
+ -0.04,
+ -0.096,
+ 0,
+ 0.104,
+ 0.108,
+ 0.064,
+ 0.036,
+ 0.036,
+ 0,
+ -0.012,
+ 0.048,
+ 0.132,
+ 0.156,
+ 0.124,
+ 0.096,
+ 0.104
],
"y": [
- -0.824,
- -0.72,
- -0.52,
- -0.292,
- -0.124,
+ -0.208,
+ -0.224,
+ -0.232,
+ -0.224,
+ -0.204,
+ -0.208,
+ -0.212,
+ -0.204,
+ -0.2,
+ -0.204,
+ -0.204,
+ -0.216,
+ -0.2,
+ -0.2,
+ -0.2,
+ 0.036,
+ -0.016,
0.008,
- 0.084,
- 0.164,
- 0.256,
- 0.336,
+ -0.04,
+ -0.624,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.692,
+ -0.82,
+ 0.912,
+ 1.596,
+ 0.348,
+ -0.32,
+ -0.632,
+ -0.032,
+ 0.252,
+ 0.296,
+ 0.376,
+ 0.456,
+ 0.476,
+ 0.448,
+ 0.448,
0.416,
- 0.432,
- 0.484,
- 0.608,
- 0.78,
- 0.924,
- 0.988,
- 1.1,
- 1.284,
- 1.428,
- 1.608,
- 1.96,
+ 0.376,
+ 0.352,
+ 0.296,
+ 0.22,
+ 0.152,
+ 0.116,
+ 0.088,
+ 0.048,
+ 0.008,
+ 0.012,
+ 0.024
+ ],
+ "z": [
+ -1.008,
+ -1.032,
+ -1.04,
+ -1.02,
+ -1.008,
+ -1.012,
+ -1.008,
+ -1.016,
+ -1.024,
+ -1.012,
+ -0.996,
+ -1.012,
+ -1.024,
+ -1.004,
+ -1.028,
+ -0.976,
+ -0.984,
+ -0.856,
+ -1.056,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.064,
+ 1.844,
2.04,
2.04,
- 1.98,
- 1.584,
- 1.284,
- 1.148,
- 1.004,
- 0.808,
- 0.576,
- 0.416,
- 0.22,
- -0.012,
- -0.132,
- -0.152,
- -0.176,
- -0.252,
- -0.38,
- -0.54,
- -0.7,
- -0.892,
+ 0.224,
+ -0.492,
+ -1.436,
+ -1.848,
+ -1.096,
+ -0.916,
+ -0.868,
+ -0.952,
+ -0.9,
+ -0.912,
+ -0.972,
+ -0.98,
+ -0.976,
+ -0.968,
-1.028,
- -1.252,
- -1.324,
- -1.476,
- -1.64,
- -1.824,
- -1.812,
- -1.612,
- -1.4,
+ -1.088,
+ -1.104,
+ -1.14,
+ -1.148,
+ -1.148,
-1.16,
- -0.836,
- -0.552,
- -0.408,
- -0.372,
- -0.332,
- -0.16,
- 0.048,
- 0.264,
- 0.452,
- 0.56,
- 0.576,
- 0.588,
- 0.584,
- 0.584,
- 0.596,
- 0.7,
- 0.86,
- 1.048,
- 1.248,
- 1.56,
- 1.936,
- 2.04,
- 2.04,
+ -1.18,
+ -1.156
+ ]
+ },
+ "createdAt": 1730111021721
+ },
+ {
+ "id": "c1393888-5895-4d82-84bc-3d33ba037b85",
+ "data": {
+ "x": [
+ 0.044,
+ 0.06,
+ 0.044,
+ 0.004,
+ 0,
+ -0.008,
+ -0.02,
+ 0.032,
+ 0.064,
+ 0.024,
+ 0.008,
+ 0.036,
+ 0.064,
+ 0.06,
+ 0.056,
+ 0.04,
+ -0.26,
+ -1.32,
+ -2.04,
+ -1.056,
+ 1.98,
2.04,
- 1.868,
- 1.66,
- 1.4,
- 1.124,
- 0.884,
- 0.748,
- 0.54,
- 0.3,
- 0.18,
- 0.072,
- 0.02,
- -0.016,
- -0.076,
- -0.172,
- -0.308
- ],
- "z": [
- 0.124,
- 0.112,
- 0.176,
- 0.156,
- 0.072,
- -0.024,
+ 1.832,
+ 2.02,
+ 1.316,
+ 0.152,
+ -0.096,
+ -0.38,
+ -0.38,
+ -0.344,
+ -0.496,
+ -0.252,
+ -0.02,
+ 0.016,
+ -0.02,
-0.068,
- -0.092,
- -0.136,
- -0.22,
- -0.312,
- -0.34,
- -0.376,
- -0.392,
- -0.468,
- -0.544,
- -0.636,
- -0.644,
- -0.616,
- -0.604,
- -0.584,
- -0.632,
- -0.728,
- -0.648,
- -0.436,
- -0.296,
- -0.268,
- -0.292,
- -0.34,
- -0.324,
- -0.268,
- -0.224,
- -0.212,
- -0.248,
- -0.236,
- -0.216,
- -0.164,
-0.1,
+ -0.072,
-0.02,
- 0.048,
- 0.144,
- 0.284,
- 0.408,
- 0.424,
- 0.424,
- 0.408,
- 0.38,
- 0.32,
- 0.304,
- 0.272,
- 0.228,
- 0.184,
- 0.036,
- -0.132,
- -0.172,
- -0.088,
- 0.036,
- 0.116,
- 0.128,
- 0.056,
- -0.024,
- -0.052,
- -0.056,
-0.004,
+ -0.02,
+ -0.008,
+ 0.016,
0.02,
- -0.056,
+ 0.032,
+ 0.032,
+ 0.028,
+ 0.052,
+ 0.068
+ ],
+ "y": [
+ -0.168,
+ -0.168,
+ -0.184,
+ -0.188,
-0.176,
- -0.268,
- -0.32,
- -0.332,
- -0.38,
- -0.472,
- -0.564,
- -0.64,
- -0.556,
- -0.396,
- -0.324,
- -0.368,
- -0.432,
- -0.392,
- -0.34,
- -0.304,
- -0.264,
- -0.272,
- -0.256,
- -0.256,
- -0.244,
- -0.216,
- -0.064,
+ -0.184,
+ -0.168,
+ -0.156,
+ -0.168,
+ -0.156,
+ -0.152,
+ -0.14,
+ -0.128,
+ -0.1,
+ -0.06,
+ 0.016,
+ -0.172,
+ -1.632,
+ -2.04,
+ -2.04,
+ -1.112,
+ -0.412,
+ 1.108,
+ 1.472,
+ 0.844,
+ -0.076,
+ -0.28,
0.084,
- 0.176
+ 0.28,
+ 0.28,
+ 0.344,
+ 0.36,
+ 0.352,
+ 0.348,
+ 0.36,
+ 0.336,
+ 0.284,
+ 0.256,
+ 0.228,
+ 0.16,
+ 0.116,
+ 0.112,
+ 0.108,
+ 0.088,
+ 0.06,
+ 0.024,
+ 0.028,
+ 0.052,
+ 0.044
+ ],
+ "z": [
+ -1.02,
+ -1.012,
+ -1.028,
+ -1.036,
+ -1.052,
+ -1.06,
+ -1.028,
+ -1.016,
+ -1.02,
+ -1.024,
+ -1.004,
+ -1.004,
+ -0.996,
+ -0.984,
+ -0.948,
+ -1.036,
+ -1.752,
+ -2.04,
+ -2.04,
+ -2.024,
+ -1.668,
+ 1.72,
+ 2.04,
+ 2.04,
+ 0.392,
+ -0.412,
+ -1.512,
+ -1.48,
+ -1.096,
+ -1.124,
+ -0.996,
+ -1.032,
+ -1.032,
+ -1.024,
+ -1.06,
+ -1.032,
+ -1,
+ -1.036,
+ -1.124,
+ -1.148,
+ -1.132,
+ -1.1,
+ -1.088,
+ -1.048,
+ -1.056,
+ -1.108,
+ -1.116,
+ -1.096,
+ -1.06
]
- }
+ },
+ "createdAt": 1730111017623
},
{
- "ID": 1717765659660,
+ "id": "a97b77d2-c44b-4013-840a-fe8a215808a8",
"data": {
"x": [
- -0.428,
- -0.42,
- -0.424,
- -0.408,
- -0.452,
- -0.48,
- -0.476,
- -0.452,
- -0.44,
- -0.444,
- -0.452,
- -0.456,
- -0.504,
- -0.524,
- -0.508,
- -0.52,
- -0.524,
- -0.592,
- -0.696,
- -0.816,
- -0.892,
- -0.968,
- -1.06,
- -1.08,
- -1.032,
- -0.968,
- -0.888,
- -0.824,
- -0.74,
- -0.608,
- -0.468,
- -0.36,
- -0.312,
- -0.328,
- -0.356,
- -0.36,
- -0.412,
- -0.464,
- -0.508,
- -0.54,
- -0.552,
- -0.548,
- -0.552,
- -0.548,
- -0.536,
- -0.536,
- -0.544,
- -0.552,
- -0.56,
- -0.588,
- -0.668,
- -0.72,
- -0.744,
- -0.7,
- -0.628,
- -0.556,
- -0.472,
- -0.46,
- -0.48,
- -0.48,
- -0.484,
- -0.488,
- -0.54,
- -0.572,
- -0.592,
- -0.596,
- -0.608,
- -0.596,
- -0.572,
- -0.544,
- -0.548,
- -0.552,
- -0.556,
- -0.588,
- -0.612,
- -0.712,
- -0.804,
- -0.888,
- -0.936,
- -0.96,
- -0.98,
- -0.96,
- -0.9,
- -0.844,
- -0.768,
- -0.68,
- -0.624,
- -0.556,
- -0.488,
- -0.436,
- -0.404
+ -0.056,
+ -0.036,
+ -0.032,
+ -0.024,
+ -0.008,
+ -0.012,
+ -0.044,
+ -0.04,
+ -0.004,
+ 0.004,
+ -0.04,
+ -0.036,
+ -0.016,
+ 0.016,
+ -0.008,
+ -0.172,
+ -0.672,
+ -1.864,
+ -2.04,
+ 0.648,
+ 2.04,
+ 2.04,
+ 1.356,
+ 1.304,
+ 1.828,
+ 0.508,
+ 0.128,
+ -0.072,
+ -0.304,
+ -0.24,
+ -0.204,
+ -0.136,
+ 0.04,
+ 0.148,
+ 0.172,
+ 0.156,
+ 0.108,
+ 0.12,
+ 0.052,
+ -0.028,
+ 0,
+ 0.076,
+ 0.128,
+ 0.1,
+ 0.024,
+ 0,
+ 0.02,
+ 0.076,
+ 0.104
],
"y": [
- 0.68,
- 0.556,
- 0.452,
- 0.24,
- 0.092,
- 0.068,
- 0.068,
- 0.008,
- -0.16,
+ -0.26,
+ -0.264,
+ -0.272,
+ -0.28,
+ -0.272,
+ -0.296,
+ -0.336,
+ -0.34,
-0.316,
- -0.412,
- -0.376,
- -0.376,
- -0.424,
- -0.576,
- -0.704,
- -0.812,
- -0.908,
- -1.028,
- -1.176,
- -1.336,
- -1.524,
- -1.616,
- -1.624,
- -1.628,
- -1.548,
- -1.38,
- -1.132,
+ -0.292,
+ -0.268,
+ -0.264,
+ -0.264,
+ -0.224,
+ -0.196,
+ -0.176,
+ -0.58,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.68,
+ -1.312,
+ 0.312,
+ 1.596,
+ 1.528,
+ 0.672,
+ 0.108,
+ 0.232,
+ 0.42,
+ 0.416,
+ 0.296,
+ 0.16,
+ 0.024,
+ 0.156,
+ 0.156,
+ 0.072,
+ 0.04,
+ 0.08,
+ 0.084,
+ 0.052,
+ 0.012,
+ -0.016,
+ -0.004,
+ 0.012,
+ -0.02,
+ 0,
+ -0.004,
+ -0.032,
+ -0.044
+ ],
+ "z": [
+ -0.968,
+ -0.992,
+ -1.008,
+ -1.012,
+ -1.02,
+ -1.004,
+ -1.012,
+ -1.048,
+ -1.084,
+ -1.044,
+ -0.992,
+ -0.964,
-0.96,
- -0.864,
- -0.86,
- -0.776,
- -0.54,
- -0.22,
- -0.008,
- 0.116,
- 0.212,
- 0.292,
- 0.4,
- 0.472,
- 0.5,
- 0.52,
- 0.588,
- 0.66,
- 0.7,
- 0.744,
- 0.86,
- 1.06,
- 1.32,
- 1.6,
- 1.904,
+ -0.996,
+ -0.956,
+ -1.176,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.316,
+ 1.372,
2.04,
2.04,
- 1.996,
- 1.704,
- 1.312,
- 0.972,
- 0.704,
- 0.564,
- 0.444,
- 0.3,
- 0.164,
- 0.048,
+ 0.628,
+ 0.46,
+ -0.4,
+ -0.94,
+ -0.748,
+ -0.62,
+ -0.696,
+ -0.888,
+ -1.144,
+ -1.296,
+ -1.348,
+ -1.404,
+ -1.332,
+ -1.216,
+ -1.124,
+ -1.088,
+ -1.152,
+ -1.16,
+ -1.124,
+ -1.08,
+ -1.06,
+ -1.048,
+ -1.072,
+ -1.076,
+ -1.076
+ ]
+ },
+ "createdAt": 1730111013390
+ },
+ {
+ "id": "2c05aef7-fd5c-43e3-a985-bb72a0c54301",
+ "data": {
+ "x": [
+ -0.008,
+ -0.004,
+ 0.012,
+ 0.012,
0.012,
0.004,
- 0.016,
- -0.032,
- -0.096,
- -0.152,
- -0.152,
- -0.172,
- -0.324,
- -0.492,
- -0.572,
- -0.684,
- -0.792,
- -1.024,
- -1.28,
- -1.544,
- -1.684,
- -1.756,
- -1.68,
- -1.524,
- -1.372,
- -1.212,
- -0.988,
- -0.736,
- -0.604,
- -0.564,
- -0.496,
- -0.352
- ],
- "z": [
- -0.532,
- -0.5,
- -0.42,
- -0.232,
- -0.072,
+ 0.004,
+ 0.004,
-0.004,
- -0.08,
- -0.132,
+ -0.008,
0,
- 0.22,
- 0.3,
- 0.24,
- 0.168,
- 0.216,
- 0.32,
- 0.424,
- 0.428,
- 0.472,
- 0.468,
- 0.452,
- 0.376,
- 0.304,
- 0.308,
- 0.356,
- 0.464,
- 0.564,
- 0.52,
- 0.356,
- 0.264,
- 0.288,
- 0.372,
- 0.408,
- 0.284,
- 0.112,
+ 0.032,
+ 0.072,
+ 0.088,
+ 0.064,
+ 0.076,
+ -0.04,
+ -0.564,
+ -1.784,
+ -2.04,
+ -0.54,
+ 2.04,
+ 2.04,
+ 2.04,
+ 2.04,
+ 1.876,
+ -0.136,
+ -0.456,
+ -0.452,
+ -0.2,
+ -0.196,
+ -0.38,
+ -0.276,
+ -0.068,
+ 0.012,
+ -0.008,
+ -0.14,
+ -0.176,
+ -0.052,
-0.048,
- -0.132,
+ -0.08,
+ 0,
+ 0.032,
+ 0.036,
+ 0.04,
+ 0.056,
+ 0.068,
+ 0.14
+ ],
+ "y": [
+ -0.096,
+ -0.08,
+ -0.08,
+ -0.1,
-0.108,
- -0.14,
- -0.196,
- -0.228,
- -0.208,
- -0.256,
- -0.304,
- -0.36,
- -0.352,
- -0.332,
- -0.332,
- -0.42,
- -0.584,
- -0.788,
+ -0.112,
+ -0.124,
+ -0.12,
+ -0.124,
+ -0.12,
+ -0.112,
+ -0.084,
+ -0.052,
+ -0.052,
+ -0.06,
+ -0.032,
+ 0.052,
+ -0.46,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.728,
+ 1.412,
+ 2.04,
+ 1.036,
+ -0.976,
-0.86,
- -0.816,
- -0.732,
- -0.72,
- -0.736,
- -0.696,
- -0.56,
- -0.448,
- -0.376,
- -0.352,
- -0.292,
- -0.168,
- -0.02,
- 0.048,
- 0.068,
- 0.036,
- 0.036,
- 0.104,
- 0.188,
- 0.196,
- 0.176,
- 0.204,
- 0.32,
- 0.4,
- 0.344,
- 0.372,
- 0.396,
- 0.4,
- 0.368,
- 0.396,
- 0.448,
- 0.484,
- 0.472,
- 0.5,
- 0.48,
- 0.352,
- 0.212,
- 0.164,
- 0.148,
+ -0.152,
+ 0.112,
0.116,
- 0.032
+ -0.1,
+ 0.004,
+ 0.148,
+ 0.256,
+ 0.344,
+ 0.208,
+ 0.152,
+ 0.124,
+ 0.108,
+ 0.076,
+ 0.052,
+ 0.032,
+ -0.008,
+ -0.004,
+ 0,
+ -0.008,
+ 0.12
+ ],
+ "z": [
+ -1.036,
+ -1.012,
+ -1.004,
+ -1.028,
+ -1.052,
+ -1.048,
+ -1.036,
+ -1.032,
+ -1.044,
+ -1.04,
+ -1.012,
+ -0.972,
+ -0.94,
+ -0.932,
+ -0.932,
+ -0.936,
+ -1.212,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.48,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.384,
+ 0.352,
+ -1.36,
+ -1.66,
+ -1.56,
+ -1.128,
+ -1.024,
+ -1.248,
+ -1.328,
+ -1.204,
+ -1.156,
+ -1.156,
+ -1.164,
+ -1.232,
+ -1.228,
+ -1.144,
+ -1.144,
+ -1.076,
+ -1.08,
+ -1.1,
+ -1.076,
+ -1.028,
+ -0.844
]
- }
+ },
+ "createdAt": 1730111008953
},
{
- "ID": 1717765654503,
+ "id": "b6c8590c-2f84-40aa-9357-e7ff27053629",
"data": {
"x": [
- -0.312,
- -0.352,
- -0.4,
- -0.468,
- -0.464,
- -0.416,
- -0.396,
- -0.308,
- -0.22,
- -0.084,
- -0.016,
- -0.012,
- -0.064,
- -0.104,
- -0.152,
- -0.252,
- -0.352,
- -0.404,
- -0.484,
- -0.508,
- -0.52,
- -0.516,
- -0.5,
- -0.468,
- -0.444,
+ -0.008,
+ -0.008,
+ 0.016,
+ 0.044,
+ -0.12,
-0.432,
- -0.4,
- -0.404,
- -0.396,
- -0.284,
- -0.304,
- -0.448,
- -0.684,
- -0.848,
- -1.028,
- -1.184,
- -1.264,
- -1.24,
- -1.092,
- -0.86,
- -0.636,
- -0.444,
- -0.288,
- -0.212,
- -0.16,
- -0.188,
- -0.22,
- -0.224,
- -0.22,
- -0.308,
- -0.38,
- -0.416,
- -0.424,
- -0.44,
- -0.46,
- -0.504,
- -0.524,
- -0.5,
- -0.512,
- -0.504,
- -0.44,
- -0.408,
- -0.424,
- -0.448,
- -0.424,
- -0.452,
- -0.484,
- -0.52,
- -0.588,
- -0.584,
- -0.52,
- -0.412,
+ -0.66,
+ -0.776,
+ -2.04,
+ -2.04,
+ 0.132,
+ 2.04,
+ 2.04,
+ 2.04,
+ 1.856,
+ 1.664,
+ 0.696,
+ -0.028,
+ -0.1,
+ -0.324,
+ -0.372,
-0.356,
-0.316,
- -0.244,
- -0.224,
- -0.248,
- -0.276,
- -0.324,
- -0.364,
- -0.42,
- -0.468,
- -0.476,
- -0.496,
- -0.484,
- -0.484,
- -0.448,
- -0.46,
- -0.428,
- -0.38,
- -0.38
+ -0.256,
+ -0.184,
+ -0.044,
+ 0.048,
+ 0.036,
+ 0.032,
+ 0.04,
+ -0.036,
+ -0.1,
+ -0.1,
+ 0.008,
+ 0.008,
+ -0.048,
+ 0.004,
+ 0.048,
+ 0.028,
+ -0.004,
+ -0.044,
+ 0.016,
+ 0.06,
+ 0.044,
+ 0.052,
+ 0.088,
+ 0.08,
+ 0.096,
+ 0.084
],
"y": [
- 1.256,
- 1.584,
- 2.032,
- 2.04,
- 2.04,
- 2.04,
- 2.04,
- 1.928,
- 1.624,
- 1.16,
- 0.716,
- 0.4,
- 0.264,
- 0.112,
- -0.108,
- -0.216,
- -0.172,
+ -0.208,
+ -0.12,
+ -0.044,
+ -0.008,
+ 0.012,
+ 0.036,
+ -0.056,
+ -1.396,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.528,
+ 1.204,
+ 1.404,
+ 0.768,
+ 0.076,
+ -0.124,
+ 0.244,
+ 0.612,
+ 0.7,
+ 0.624,
+ 0.436,
+ 0.26,
+ 0.184,
+ 0.144,
+ 0.06,
+ 0.012,
+ -0.02,
+ -0.024,
+ -0.14,
+ -0.128,
+ -0.192,
-0.16,
- -0.22,
- -0.348,
- -0.368,
- -0.292,
- -0.256,
- -0.352,
- -0.488,
- -0.52,
- -0.52,
- -0.44,
- -0.36,
- -0.644,
- -1.112,
- -1.312,
- -1.524,
- -1.908,
+ -0.16,
+ -0.16,
+ -0.2,
+ -0.244,
+ -0.24,
+ -0.216,
+ -0.208,
+ -0.232,
+ -0.2,
+ -0.188,
+ -0.176,
+ -0.192,
+ -0.168,
+ -0.16,
+ -0.172
+ ],
+ "z": [
+ -0.944,
+ -0.892,
+ -0.872,
+ -0.888,
+ -0.944,
+ -0.928,
+ -1.092,
+ -1.696,
-2.04,
-2.04,
- -1.916,
- -1.68,
- -1.548,
- -1.552,
- -1.54,
- -1.428,
- -1.248,
- -0.972,
- -0.748,
- -0.456,
- -0.296,
- -0.236,
- -0.172,
- 0.052,
- 0.204,
- 0.212,
- 0.188,
- 0.244,
- 0.428,
- 0.612,
- 0.64,
- 0.552,
- 0.548,
- 0.6,
- 0.592,
- 0.652,
- 0.82,
- 0.956,
- 1.04,
- 1.264,
- 1.588,
- 1.996,
+ -2.04,
+ 0.032,
2.04,
2.04,
2.04,
- 1.784,
- 1.536,
- 1.24,
- 0.872,
- 0.552,
- 0.42,
- 0.28,
- 0.128,
- 0.032,
- 0.068,
- 0.08,
- -0.008,
- -0.112,
- -0.112,
- -0.116,
- -0.18,
- -0.272,
- -0.356,
- -0.424,
- -0.448
- ],
- "z": [
- -0.932,
- -1.012,
- -1.192,
- -1.34,
+ 0.608,
+ -0.26,
+ -0.716,
+ -1.124,
+ -0.696,
+ -0.46,
+ -0.444,
+ -0.596,
+ -0.788,
+ -0.864,
+ -0.948,
+ -1.168,
+ -1.292,
-1.34,
- -1.144,
- -0.956,
- -0.936,
- -0.932,
- -0.876,
- -0.748,
- -0.588,
- -0.472,
- -0.364,
- -0.192,
- 0.028,
- 0.136,
- 0.116,
- 0.12,
- 0.22,
- 0.292,
- 0.236,
- 0.22,
- 0.212,
- 0.272,
- 0.292,
- 0.244,
- 0.26,
- 0.24,
- 0.224,
- 0.408,
- 0.472,
- 0.6,
- 0.56,
- 0.296,
- 0.084,
- 0.02,
- 0.12,
- 0.324,
- 0.548,
- 0.664,
- 0.612,
- 0.56,
- 0.468,
- 0.364,
- 0.188,
- 0.076,
- 0.096,
- 0.104,
- -0.056,
- -0.164,
- -0.132,
- -0.068,
- -0.14,
- -0.256,
- -0.336,
- -0.328,
- -0.3,
- -0.304,
- -0.364,
- -0.448,
- -0.468,
- -0.528,
- -0.632,
- -0.708,
- -0.82,
- -1.02,
- -1.208,
- -1.212,
+ -1.26,
+ -1.304,
+ -1.304,
+ -1.304,
+ -1.252,
+ -1.2,
+ -1.152,
+ -1.188,
+ -1.192,
+ -1.136,
+ -1.124,
+ -1.076,
+ -1.056,
-1.052,
- -0.904,
- -0.872,
- -0.844,
- -0.764,
- -0.656,
- -0.52,
- -0.448,
- -0.408,
- -0.276,
- -0.14,
- -0.076,
- -0.084,
- -0.024,
- 0.108,
- 0.116,
- 0.084,
- 0.128,
- 0.22,
- 0.248,
- 0.236,
- 0.28
+ -1.036,
+ -1.004,
+ -1.02,
+ -1.016,
+ -1.036,
+ -1.024
]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- },
- "icon": "Rabbit"
- },
- {
- "ID": 1717765681522,
- "name": "clap",
- "matrix": [
- false,
- false,
- true,
- false,
- false,
- false,
- false,
- true,
- true,
- false,
- false,
- false,
- true,
- false,
- true,
- true,
- true,
- true,
- false,
- false,
- true,
- true,
- true,
- false,
- false
- ],
- "recordings": [
+ },
+ "createdAt": 1730111004935
+ },
{
- "ID": 1717765716738,
+ "id": "ef20f66d-03e9-411c-99a5-02f5a6f2372c",
"data": {
"x": [
- -1.372,
- -1.5,
- -1.608,
- -1.636,
- -1.556,
- -1.428,
- -1.252,
- -1.04,
- -0.844,
- -0.684,
- -0.544,
- -0.468,
- -0.436,
- -0.396,
- -0.408,
- -0.372,
- -0.304,
- -0.244,
- -0.236,
- -0.188,
- -0.092,
- -0.052,
- -0.072,
- -0.02,
- -0.008,
- -0.06,
- -0.212,
- -0.34,
- -0.432,
- -0.516,
- -0.576,
- -0.736,
- -0.796,
- -0.72,
- -0.52,
- -0.38,
- -0.228,
+ 0.012,
+ 0.004,
+ 0,
+ 0,
+ 0.02,
+ 0.044,
+ 0.028,
+ 0.008,
+ 0.004,
+ 0.012,
+ 0.02,
+ 0.076,
+ 0.1,
+ 0.008,
+ -0.364,
+ -1.18,
+ -2.04,
+ -2.04,
+ 1.668,
+ 2.04,
+ 1.612,
+ 1.648,
+ 2.04,
+ 1.596,
+ 0.692,
+ 0.428,
+ 0.212,
+ 0.012,
-0.052,
- 0.032,
+ -0.116,
+ -0.112,
+ -0.132,
+ -0.164,
+ -0.076,
+ 0.04,
0.056,
- 0.048,
+ 0.104,
+ 0.124,
0.008,
- 0,
- 0.004,
- -0.028,
- -0.104,
- -0.18,
- -0.208,
- -0.276,
- -0.32,
- -0.372,
- -0.448,
- -0.52,
- -0.532,
- -0.496,
- -0.492,
- -0.564,
- -0.576,
- -0.62,
- -0.832,
- -1.156,
- -1.42,
- -1.528,
- -1.62,
- -1.628,
- -1.536,
- -1.372,
- -1.172,
- -1.02,
- -0.892,
- -0.74,
- -0.604,
- -0.524,
- -0.456,
- -0.372,
- -0.292,
- -0.232,
- -0.196,
- -0.188,
- -0.188,
- -0.168,
- -0.136,
- -0.068,
- -0.06,
- -0.072,
+ -0.08,
-0.112,
- -0.22,
- -0.388,
- -0.552,
- -0.696,
- -0.768
+ 0,
+ 0.112,
+ 0.1,
+ 0.056,
+ 0,
+ -0.016,
+ -0.008,
+ 0.056
],
"y": [
- 0.176,
- 0.26,
- 0.276,
- 0.36,
- 0.42,
- 0.436,
- 0.408,
- 0.3,
- 0.208,
- 0.064,
- -0.076,
- -0.116,
- -0.112,
- -0.1,
- -0.084,
- -0.104,
- -0.148,
-0.14,
- -0.08,
- -0.084,
- -0.116,
+ -0.156,
+ -0.148,
+ -0.124,
-0.144,
+ -0.148,
-0.176,
- -0.304,
- -0.332,
- -0.328,
- -0.348,
- -0.4,
- -0.504,
- -0.532,
- -0.58,
- -0.632,
- -0.756,
- -0.892,
- -1.1,
- -1.208,
- -1.176,
- -1.124,
- -0.904,
- -0.688,
- -0.52,
- -0.388,
- -0.308,
- -0.256,
- -0.212,
+ -0.168,
+ -0.172,
+ -0.176,
+ -0.156,
+ -0.136,
+ -0.092,
+ 0.02,
-0.148,
- -0.116,
- -0.104,
- -0.056,
- 0.024,
- 0.152,
- 0.208,
- 0.236,
- 0.296,
+ -1.376,
+ -2.04,
+ -2.04,
+ -2.024,
+ -1.188,
+ -0.14,
+ 1.008,
+ 1.188,
+ 0.584,
+ 0.076,
+ 0.088,
+ 0.352,
+ 0.556,
+ 0.504,
+ 0.416,
0.412,
- 0.476,
- 0.348,
- 0.132,
- -0.016,
+ 0.328,
+ 0.216,
0.112,
- 0.516,
- 0.652,
- 0.588,
- 0.544,
- 0.58,
- 0.624,
- 0.604,
- 0.488,
- 0.316,
- 0.108,
- -0.036,
- -0.072,
- -0.068,
- -0.052,
- -0.04,
+ 0.072,
-0.028,
- -0.024,
- -0.052,
- -0.08,
- -0.092,
- -0.064,
- -0.04,
- -0.044,
- -0.204,
- -0.46,
- -0.548,
- -0.412,
- -0.324,
- -0.252,
- -0.148,
- -0.092
+ -0.172,
+ -0.228,
+ -0.224,
+ -0.212,
+ -0.2,
+ -0.232,
+ -0.212,
+ -0.196,
+ -0.18,
+ -0.188,
+ -0.188,
+ -0.184,
+ -0.176
],
"z": [
- -1.32,
- -1.404,
- -1.244,
- -1.316,
- -1.408,
- -1.328,
- -1.032,
- -0.708,
- -0.448,
- -0.28,
- -0.16,
- -0.02,
- 0.184,
- 0.296,
- 0.368,
- 0.44,
- 0.536,
- 0.676,
- 0.804,
- 0.92,
- 0.98,
- 1.012,
- 1.064,
- 1.184,
- 1.256,
- 1.16,
- 1.084,
- 1.088,
- 1.148,
- 1.26,
- 1.332,
- 1.544,
- 1.78,
- 1.944,
- 2.036,
- 2.04,
- 2.008,
- 1.832,
- 1.756,
- 1.688,
- 1.476,
- 1.244,
- 1.016,
- 0.828,
- 0.744,
- 0.672,
- 0.536,
- 0.304,
- 0.124,
- 0.06,
- 0.136,
- 0.212,
- 0.048,
- -0.248,
- -0.252,
- 0.14,
- 0.348,
- 0.056,
- -0.468,
- -0.596,
- -0.764,
- -1.264,
- -1.604,
- -1.8,
- -1.656,
- -1.38,
- -1.076,
- -0.8,
- -0.556,
- -0.412,
- -0.332,
- -0.192,
- 0.032,
- 0.228,
- 0.356,
- 0.452,
- 0.532,
- 0.688,
- 0.772,
- 0.844,
- 0.904,
- 0.976,
- 1.024,
- 1.048,
- 1.096,
- 1.16,
- 1.064,
- 0.988,
- 0.96,
- 0.94,
- 1
+ -1.024,
+ -1.012,
+ -1.04,
+ -1,
+ -0.988,
+ -1.008,
+ -1.008,
+ -1.024,
+ -1.016,
+ -1.024,
+ -1.012,
+ -1.012,
+ -1,
+ -1.072,
+ -1.448,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.016,
+ 0.476,
+ 2.04,
+ 2.04,
+ 1.004,
+ 0.06,
+ -0.268,
+ -0.764,
+ -0.816,
+ -0.628,
+ -0.632,
+ -0.532,
+ -0.544,
+ -0.652,
+ -0.796,
+ -0.94,
+ -1.096,
+ -1.236,
+ -1.528,
+ -1.728,
+ -1.54,
+ -1.292,
+ -1.096,
+ -1.1,
+ -1.156,
+ -1.124,
+ -1.104,
+ -1.064,
+ -1.052,
+ -1.06,
+ -1.104
]
- }
+ },
+ "createdAt": 1730111000940
},
{
- "ID": 1717765710734,
+ "id": "cb010b38-568b-48d6-9a06-86c93cb640ee",
"data": {
"x": [
- -0.632,
- -0.512,
- -0.452,
- -0.436,
- -0.448,
- -0.428,
- -0.42,
- -0.4,
- -0.4,
- -0.404,
- -0.352,
- -0.308,
- -0.336,
+ -0.028,
+ -0.02,
+ 0.008,
+ -0.012,
+ -0.044,
+ -0.028,
+ -0.052,
+ -0.048,
+ -0.048,
+ -0.068,
+ -0.06,
+ -0.036,
+ -0.004,
+ 0,
+ -0.024,
+ 0.004,
+ 0.024,
+ 0.008,
+ 0.036,
-0.276,
- -0.232,
- -0.22,
- -0.272,
- -0.304,
- -0.328,
- -0.4,
- -0.488,
- -0.524,
- -0.528,
- -0.556,
- -0.548,
- -0.588,
- -0.668,
- -0.524,
- -0.356,
- -0.272,
- -0.256,
- -0.244,
- -0.24,
- -0.256,
- -0.268,
- -0.312,
- -0.344,
- -0.368,
- -0.364,
- -0.404,
- -0.388,
- -0.392,
- -0.396,
- -0.416,
- -0.436,
- -0.452,
- -0.412,
- -0.448,
- -0.512,
- -0.528,
- -0.556,
- -0.516,
- -0.552,
- -0.708,
- -0.796,
- -0.98,
- -1.256,
- -1.496,
- -1.6,
- -1.62,
- -1.52,
+ -1.56,
+ -2.04,
-1.392,
- -1.256,
- -1.108,
- -0.972,
- -0.88,
- -0.772,
- -0.696,
- -0.66,
- -0.632,
- -0.552,
- -0.492,
- -0.464,
- -0.372,
- -0.34,
- -0.324,
- -0.288,
- -0.244,
- -0.212,
- -0.228,
+ 1.94,
+ 2.04,
+ 1.988,
+ 2.04,
+ 2.04,
-0.24,
- -0.26,
- -0.268,
- -0.288,
- -0.248,
- -0.256,
- -0.34,
- -0.452,
- -0.596,
- -0.724,
- -0.844
+ -0.56,
+ -0.012,
+ -0.3,
+ -0.476,
+ -0.008,
+ 0.284,
+ 0.072,
+ -0.116,
+ -0.148,
+ -0.084,
+ -0.084,
+ -0.16,
+ -0.144,
+ -0.04,
+ 0.104,
+ 0.144,
+ 0.068,
+ 0.008,
+ 0.02
],
"y": [
- -0.184,
- -0.304,
- -0.284,
-0.18,
+ -0.192,
+ -0.18,
+ -0.18,
+ -0.176,
+ -0.18,
+ -0.18,
+ -0.188,
+ -0.188,
+ -0.176,
+ -0.168,
+ -0.164,
+ -0.164,
+ -0.176,
+ -0.188,
+ -0.184,
+ -0.172,
+ -0.148,
+ -0.128,
+ -0.532,
+ -1.796,
+ -2.04,
+ -2.04,
+ -1.844,
+ -0.772,
+ 1.076,
+ 1.776,
-0.104,
- -0.04,
- -0.016,
- -0.024,
- -0.04,
- -0.04,
- -0.028,
- -0.044,
- -0.06,
- -0.108,
- -0.196,
- -0.268,
- -0.272,
- -0.24,
- -0.216,
- -0.156,
- -0.12,
- -0.256,
- -0.408,
- -0.5,
- -0.608,
+ -0.928,
+ -0.476,
+ 0.04,
+ 0.32,
+ 0.492,
+ 0.596,
+ 0.516,
+ 0.46,
+ 0.48,
+ 0.52,
+ 0.5,
+ 0.496,
+ 0.448,
+ 0.368,
+ 0.32,
+ 0.256,
+ 0.228,
+ 0.204,
+ 0.188,
+ 0.188
+ ],
+ "z": [
+ -0.996,
+ -0.996,
+ -1.044,
+ -1.016,
+ -0.996,
+ -1.016,
+ -1.02,
+ -1.008,
+ -1.036,
+ -1.028,
+ -1.02,
+ -1.016,
+ -1.008,
+ -1.016,
+ -1.008,
+ -1.032,
+ -1.04,
+ -1,
+ -1.044,
+ -1.664,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.284,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.22,
-0.692,
- -0.784,
- -1.02,
- -1.352,
- -1.288,
- -1.076,
- -0.868,
- -0.736,
- -0.612,
- -0.504,
- -0.412,
- -0.316,
- -0.26,
- -0.252,
- -0.288,
- -0.26,
- -0.188,
- -0.08,
- 0.004,
+ -1.972,
+ -2.04,
+ -1.424,
+ -0.628,
+ -0.604,
+ -0.924,
+ -0.976,
+ -0.972,
+ -0.968,
+ -1.008,
+ -0.992,
+ -0.924,
+ -1.004,
+ -1.068,
+ -1.152,
+ -1.144,
+ -1.06,
+ -1.028,
+ -1.04
+ ]
+ },
+ "createdAt": 1730110996785
+ },
+ {
+ "id": "df5a3877-3447-46e2-bcbb-ea7c27ddd3f7",
+ "data": {
+ "x": [
+ 0.04,
+ 0.064,
+ 0.076,
+ 0.028,
+ 0.008,
+ -0.012,
+ -0.016,
+ 0.02,
+ 0.016,
0.004,
+ 0.048,
+ 0.076,
+ 0.048,
+ 0.048,
+ 0.036,
+ 0.02,
0.056,
- 0.108,
- 0.144,
- 0.112,
- 0.044,
- 0.144,
- 0.328,
- 0.328,
+ 0.116,
0.048,
- 0.024,
- 0.3,
- 0.404,
- 0.444,
- 0.512,
- 0.608,
- 0.564,
- 0.48,
- 0.344,
- 0.196,
- 0.04,
- -0.116,
- -0.208,
- -0.224,
- -0.192,
- -0.112,
- -0.044,
- -0.024,
- -0.04,
- -0.032,
- -0.024,
- -0.064,
- -0.1,
+ -0.18,
+ -1.444,
+ -2.04,
+ -2.04,
+ 1.512,
+ 1.788,
+ 2.04,
+ 2.04,
+ 1.652,
+ 0.084,
+ 0.148,
-0.136,
- -0.132,
- -0.12,
+ -0.892,
+ -0.48,
+ 0.032,
+ 0.16,
+ 0.376,
+ 0.448,
+ 0.18,
+ -0.008,
+ 0.092,
+ 0.092,
+ 0.016,
+ 0.032,
+ 0.112,
+ 0.164,
+ 0.188,
+ 0.14,
+ 0.1,
+ 0.1
+ ],
+ "y": [
-0.14,
+ -0.124,
+ -0.116,
+ -0.096,
+ -0.108,
+ -0.124,
-0.136,
- -0.072,
- -0.06,
- -0.232,
- -0.452,
- -0.528,
- -0.464,
- -0.444,
- -0.496,
- -0.584
- ],
- "z": [
- -0.184,
+ -0.124,
+ -0.116,
+ -0.1,
+ -0.096,
+ -0.1,
+ -0.14,
+ -0.152,
+ -0.148,
+ -0.116,
+ -0.076,
+ -0.028,
-0.004,
- 0.152,
- 0.308,
- 0.416,
- 0.468,
- 0.532,
- 0.608,
- 0.68,
- 0.74,
- 0.812,
- 0.9,
- 0.972,
- 0.98,
- 0.92,
- 0.884,
- 0.964,
- 1,
+ -0.212,
+ -1.144,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.024,
+ 1.032,
+ 2.02,
+ -1.576,
+ -1.124,
+ 0.292,
0.956,
- 0.872,
- 0.936,
- 1.072,
- 1.26,
- 1.436,
- 1.548,
- 1.736,
- 1.896,
- 1.996,
+ 1.216,
+ 0.92,
+ 0.748,
+ 0.58,
+ 0.6,
+ 0.556,
+ 0.536,
+ 0.484,
+ 0.492,
+ 0.396,
+ 0.36,
+ 0.36,
+ 0.436,
+ 0.472,
+ 0.456,
+ 0.416,
+ 0.42,
+ 0.42
+ ],
+ "z": [
+ -1.044,
+ -1.028,
+ -1.044,
+ -1.012,
+ -1.004,
+ -1.012,
+ -1.02,
+ -1.032,
+ -1.004,
+ -0.992,
+ -1.02,
+ -1.02,
+ -0.988,
+ -1.04,
+ -1.044,
+ -0.996,
+ -0.96,
+ -0.964,
+ -0.912,
+ -1.336,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
2.04,
2.04,
- 1.9,
- 1.736,
- 1.58,
- 1.356,
- 1.124,
- 0.88,
- 0.712,
- 0.644,
- 0.612,
- 0.552,
- 0.528,
- 0.452,
- 0.408,
- 0.412,
- 0.312,
- 0.144,
- 0.044,
- 0.12,
- 0.156,
- -0.056,
- -0.232,
- -0.008,
- 0.276,
- 0.048,
- -0.6,
+ 2.04,
+ -0.26,
+ -2.04,
+ -2.04,
+ -0.892,
+ -0.06,
+ -0.884,
+ -1.216,
+ -0.944,
+ -0.796,
+ -0.748,
+ -0.816,
+ -0.824,
-0.904,
- -0.872,
- -1.052,
- -1.328,
- -1.444,
- -1.408,
- -1.172,
- -0.868,
- -0.652,
- -0.516,
- -0.408,
- -0.336,
- -0.204,
- -0.012,
- 0.06,
- 0.152,
- 0.3,
- 0.416,
- 0.492,
- 0.64,
- 0.828,
- 0.94,
- 0.956,
- 0.916,
- 0.908,
- 0.92,
- 0.892,
- 0.86,
- 0.844,
- 0.896,
- 1.1,
- 1.32,
- 1.388,
- 1.364,
- 1.456,
- 1.564
+ -1.064,
+ -1.164,
+ -1.128,
+ -0.992,
+ -0.832,
+ -0.804,
+ -0.892,
+ -0.964,
+ -1.008
]
- }
+ },
+ "createdAt": 1730110992536
},
{
- "ID": 1717765704869,
+ "id": "fe1da65c-6493-4be2-96cf-a9b8ac565ed1",
"data": {
"x": [
- -0.788,
- -0.86,
- -0.8,
- -0.616,
- -0.448,
- -0.364,
- -0.264,
- -0.224,
- -0.22,
- -0.184,
- -0.2,
- -0.184,
- -0.22,
- -0.244,
- -0.244,
- -0.272,
- -0.316,
- -0.352,
- -0.352,
+ 0.024,
+ -0.064,
+ -0.124,
+ -0.068,
+ -0.028,
+ 0.012,
+ 0.024,
+ -0.008,
+ -0.008,
+ 0.024,
+ 0.008,
+ -0.044,
+ -0.056,
+ -0.032,
+ -0.004,
+ -0.004,
+ 0.056,
+ -0.02,
+ -0.712,
+ -2.04,
+ -2.04,
+ -2.04,
+ 1.82,
+ 2.04,
+ 2.04,
+ 2.04,
+ 2.04,
+ 0.328,
+ 0.288,
+ -0.284,
+ -0.336,
+ -0.116,
+ -0.196,
+ -0.116,
+ 0.184,
+ 0.204,
+ 0.248,
+ 0.216,
+ 0.12,
+ 0.104,
+ 0.2,
+ 0.268,
+ 0.112,
+ 0.028,
+ 0.112,
+ 0.2,
+ 0.18,
+ 0.1
+ ],
+ "y": [
+ -0.092,
+ -0.108,
+ -0.144,
+ -0.144,
+ -0.136,
+ -0.12,
+ -0.116,
+ -0.096,
+ -0.104,
+ -0.12,
+ -0.108,
+ -0.112,
+ -0.12,
+ -0.104,
+ -0.092,
+ -0.084,
+ -0.064,
+ -0.044,
-0.344,
- -0.364,
- -0.456,
- -0.5,
- -0.564,
- -0.588,
- -0.704,
- -0.652,
- -0.924,
- -1.256,
- -1.564,
- -1.776,
- -1.748,
- -1.536,
- -1.272,
+ -1.416,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ 0.812,
+ 2.04,
+ 0.936,
+ -0.78,
+ -0.52,
+ 0.148,
+ 0.452,
+ 0.648,
+ 0.66,
+ 0.668,
+ 0.676,
+ 0.668,
+ 0.652,
+ 0.664,
+ 0.628,
+ 0.552,
+ 0.476,
+ 0.408,
+ 0.232,
+ 0.18,
+ 0.132,
+ 0.072,
+ 0.028,
+ 0.048
+ ],
+ "z": [
+ -1.032,
-0.988,
- -0.724,
- -0.532,
- -0.456,
- -0.412,
- -0.456,
- -0.516,
- -0.564,
- -0.616,
- -0.62,
- -0.592,
- -0.552,
- -0.512,
- -0.4,
- -0.28,
- -0.324,
- -0.252,
- -0.156,
- -0.148,
- -0.288,
- -0.396,
- -0.472,
- -0.552,
- -0.664,
- -0.748,
- -0.876,
+ -1.012,
+ -1.116,
+ -1.096,
+ -1.012,
+ -1.008,
-1,
+ -1.02,
+ -1.028,
+ -1.036,
+ -1.028,
+ -1.012,
+ -1.016,
+ -1.012,
-0.988,
- -0.788,
- -0.528,
- -0.364,
- -0.26,
- -0.216,
- -0.248,
- -0.26,
- -0.24,
- -0.272,
- -0.28,
- -0.268,
- -0.284,
- -0.248,
- -0.248,
- -0.284,
- -0.292,
- -0.304,
- -0.292,
- -0.304,
- -0.36,
- -0.444,
- -0.436,
- -0.456,
- -0.584,
+ -0.976,
+ -1.128,
+ -1.884,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.024,
+ 1.56,
+ 2.04,
+ 2.04,
+ 1.044,
+ -0.264,
+ -2.04,
+ -2.016,
+ -1.116,
+ -0.724,
-0.68,
- -0.884,
+ -0.716,
+ -0.888,
+ -0.724,
+ -0.696,
+ -0.68,
+ -0.664,
+ -0.676,
+ -0.744,
+ -0.856,
+ -0.936,
+ -1.088,
+ -1.124,
+ -1.152,
-1.224,
- -1.484,
- -1.636
+ -1.2
+ ]
+ },
+ "createdAt": 1730110988086
+ },
+ {
+ "id": "49b6fdfd-8125-4750-a90c-64669fde7af4",
+ "data": {
+ "x": [
+ 0.104,
+ 0.084,
+ 0.112,
+ 0.112,
+ 0.088,
+ 0.12,
+ 0.112,
+ 0.056,
+ 0.048,
+ 0.052,
+ 0.06,
+ 0.06,
+ 0.024,
+ -0.244,
+ -1.256,
+ -2.04,
+ -1.192,
+ 1.784,
+ 2.04,
+ 1.848,
+ 2.04,
+ 2.04,
+ -0.412,
+ -0.14,
+ -0.304,
+ -0.264,
+ -0.096,
+ 0.116,
+ 0.124,
+ 0.212,
+ 0.164,
+ 0.164,
+ 0.112,
+ -0.104,
+ -0.164,
+ -0.064,
+ -0.08,
+ -0.056,
+ -0.092,
+ -0.052,
+ -0.02,
+ -0.012,
+ 0.012,
+ 0.044,
+ 0.048,
+ 0.02,
+ -0.016,
+ -0.016
],
"y": [
- -0.832,
- -1.016,
- -1.228,
- -1.456,
- -1.496,
- -1.288,
+ -0.164,
+ -0.18,
+ -0.172,
+ -0.16,
+ -0.168,
+ -0.152,
+ -0.164,
+ -0.192,
+ -0.22,
+ -0.212,
+ -0.172,
+ -0.112,
+ -0.064,
+ -0.252,
+ -1.464,
+ -2.04,
+ -2.04,
+ -1.652,
+ -1.82,
+ 0.412,
+ 2.04,
+ 0.128,
+ -0.568,
+ 0.036,
+ 0.72,
+ 1.044,
+ 1.104,
+ 0.924,
+ 0.736,
+ 0.536,
+ 0.508,
+ 0.54,
+ 0.608,
+ 0.552,
+ 0.572,
+ 0.544,
+ 0.524,
+ 0.5,
+ 0.496,
+ 0.524,
+ 0.544,
+ 0.528,
+ 0.516,
+ 0.5,
+ 0.504,
+ 0.464,
+ 0.456,
+ 0.472
+ ],
+ "z": [
+ -1.012,
+ -1.028,
-1.068,
- -0.932,
+ -1.048,
+ -0.984,
+ -0.996,
+ -0.988,
+ -1.008,
+ -1.076,
+ -1.068,
+ -1.004,
+ -0.96,
+ -1.112,
+ -1.724,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.02,
+ 2.04,
+ 2.04,
+ 2.04,
+ -0.732,
+ -0.476,
+ -2.04,
+ -1.064,
+ -0.472,
+ -0.364,
+ -0.676,
+ -0.7,
+ -0.94,
+ -0.948,
+ -0.9,
+ -0.812,
+ -0.804,
+ -0.884,
+ -0.988,
+ -0.964,
+ -1.008,
+ -0.956,
+ -0.912,
+ -0.856,
-0.84,
- -0.756,
- -0.608,
- -0.452,
- -0.34,
- -0.308,
- -0.308,
- -0.232,
- -0.136,
- -0.128,
- -0.084,
+ -0.876,
+ -0.816,
+ -0.78,
+ -0.956,
+ -1.004,
+ -0.936
+ ]
+ },
+ "createdAt": 1730110983822
+ },
+ {
+ "id": "b94d55af-041b-4cc2-9939-f1409bf91a71",
+ "data": {
+ "x": [
+ -0.004,
+ -0.008,
+ -0.004,
+ -0.016,
+ -0.048,
+ -0.004,
0.028,
- 0.164,
- 0.232,
- 0.26,
- 0.316,
- 0.444,
- 0.376,
- 0.108,
- 0.072,
- 0.244,
- 0.388,
- 0.788,
- 1.096,
- 0.968,
- 0.74,
- 0.432,
- 0.092,
- -0.232,
- -0.464,
- -0.468,
- -0.432,
- -0.364,
- -0.216,
- -0.084,
- -0.02,
0,
- -0.06,
- -0.088,
- -0.14,
- -0.148,
- -0.176,
- -0.144,
- -0.164,
- -0.164,
- -0.1,
+ -0.028,
+ -0.012,
+ -0.012,
+ -0.128,
+ -0.66,
+ -1.82,
+ -2.04,
+ -0.448,
+ 1.772,
+ 2.04,
+ 1.744,
+ 0.3,
+ 2.04,
+ 2.008,
+ 1.044,
+ 0.596,
+ 0.064,
+ 0.144,
+ 0.212,
+ 0.132,
+ 0.04,
+ 0.004,
+ 0.028,
+ 0.032,
+ -0.008,
+ 0.008,
+ 0.048,
+ 0.024,
-0.056,
- -0.152,
- -0.332,
- -0.512,
- -0.696,
- -0.884,
- -0.984,
- -1.096,
- -1.28,
- -1.524,
- -1.468,
- -1.188,
- -0.928,
- -0.752,
- -0.6,
- -0.532,
- -0.452,
- -0.396,
- -0.348,
- -0.328,
- -0.324,
- -0.3,
- -0.264,
- -0.208,
+ 0.012,
+ 0,
+ -0.06,
+ -0.076,
+ -0.136,
+ -0.18,
+ -0.248,
+ -0.252,
+ -0.232,
+ -0.216,
+ -0.172,
+ -0.112
+ ],
+ "y": [
-0.132,
- 0.008,
- 0.104,
- 0.096,
- 0.052,
- 0.136,
- 0.308,
- 0.24,
- 0.112,
- 0.24,
- 0.272,
+ -0.132,
+ -0.144,
+ -0.152,
+ -0.136,
+ -0.152,
+ -0.18,
+ -0.172,
+ -0.136,
+ -0.12,
+ -0.104,
+ -0.036,
+ -0.36,
+ -1.248,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -0.264,
+ 0.784,
+ 1.604,
+ 1.404,
+ 0.768,
+ 0.616,
+ 0.576,
+ 0.704,
+ 0.812,
+ 0.78,
+ 0.772,
+ 0.728,
+ 0.652,
+ 0.628,
+ 0.608,
+ 0.576,
+ 0.532,
+ 0.48,
+ 0.464,
+ 0.48,
+ 0.48,
0.384,
- 0.46
+ 0.344,
+ 0.3,
+ 0.28,
+ 0.244,
+ 0.22,
+ 0.212,
+ 0.18,
+ 0.144,
+ 0.116
],
"z": [
- 1.684,
- 1.848,
- 1.968,
- 2.004,
- 2.028,
- 2,
- 1.828,
- 1.616,
- 1.34,
- 1.072,
- 0.912,
- 0.8,
- 0.652,
- 0.536,
- 0.356,
- 0.292,
- 0.328,
- 0.276,
- 0.08,
- -0.032,
- -0.004,
- -0.052,
- -0.12,
- -0.2,
- -0.148,
- 0.088,
- -0.3,
+ -1.044,
+ -1.032,
-1.004,
- -1.376,
- -1.764,
- -2.032,
- -2.024,
- -1.676,
- -1.204,
- -0.848,
- -0.552,
- -0.18,
- 0.06,
- 0.32,
- 0.436,
- 0.424,
- 0.34,
- 0.316,
- 0.388,
- 0.456,
- 0.536,
- 0.472,
- 0.44,
- 0.592,
- 0.788,
- 0.904,
- 0.96,
- 0.956,
- 0.988,
- 1.028,
- 1.112,
- 1.124,
- 1.068,
- 1.116,
- 1.372,
- 1.548,
- 1.588,
- 1.776,
- 2.036,
+ -1.024,
+ -1.024,
+ -1.028,
+ -1.064,
+ -1.06,
+ -1.036,
+ -1.004,
+ -1,
+ -1.184,
+ -1.816,
+ -2.04,
+ -2.04,
+ -2.04,
+ -2.04,
+ -1.032,
2.04,
- 2.024,
- 1.788,
- 1.572,
- 1.356,
- 1.104,
- 0.916,
- 0.792,
- 0.68,
- 0.604,
- 0.608,
- 0.584,
- 0.52,
- 0.36,
- 0.2,
- 0.208,
- 0.248,
- 0.168,
- -0.02,
- -0.212,
- -0.072,
- 0,
- -0.42,
- -0.808,
- -1.284,
- -1.716,
- -1.616
+ 2.04,
+ -0.052,
+ 0.144,
+ 0.052,
+ -0.572,
+ -0.408,
+ -0.468,
+ -0.468,
+ -0.564,
+ -0.64,
+ -0.612,
+ -0.716,
+ -0.724,
+ -0.744,
+ -0.756,
+ -0.86,
+ -0.96,
+ -0.92,
+ -1.04,
+ -1.016,
+ -0.956,
+ -0.884,
+ -0.952,
+ -0.968,
+ -0.976,
+ -1,
+ -1.032,
+ -1.068,
+ -1.052,
+ -1.08
]
- }
- },
+ },
+ "createdAt": 1730110979246
+ }
+ ]
+ },
+ {
+ "id": "a50277ef-1534-4b4b-ac0c-a890cdda4e47",
+ "name": "circle",
+ "icon": "Square",
+ "createdAt": 1730111022972,
+ "recordings": [
{
- "ID": 1717765700042,
+ "id": "77871264-32b7-4e43-92d4-4914f7f474a4",
"data": {
"x": [
- -0.296,
- -0.248,
- -0.244,
- -0.216,
- -0.16,
- -0.192,
- -0.16,
- -0.204,
- -0.284,
- -0.34,
- -0.384,
- -0.424,
- -0.468,
- -0.444,
- -0.42,
- -0.396,
- -0.372,
- -0.508,
- -0.608,
- -0.68,
+ 0.328,
+ 0.18,
+ 0.096,
+ 0.02,
+ 0.044,
+ 0.324,
+ 0.412,
+ 0.432,
+ 0.5,
+ 0.448,
+ 0.512,
+ 0.584,
+ 0.592,
+ 0.692,
+ 0.6,
+ 0.468,
+ 0.54,
+ 0.58,
+ 0.64,
+ 0.608,
+ 0.576,
+ 0.656,
+ 0.768,
+ 0.704,
+ 0.512,
+ 0.48,
+ 0.556,
+ 0.54,
+ 0.456,
+ 0.508,
+ 0.604,
+ 0.7,
+ 0.676,
+ 0.552,
+ 0.38,
+ 0.444,
+ 0.476,
+ 0.5,
+ 0.608,
+ 0.44,
+ 0.44,
+ 0.528,
+ 0.428,
+ 0.352,
+ 0.464,
+ 0.408,
+ 0.26,
+ 0.248,
+ 0.16
+ ],
+ "y": [
+ 0.204,
+ 0.256,
+ 0.312,
+ 0.324,
+ 0.348,
+ 0.488,
+ 0.596,
+ 0.68,
+ 0.688,
+ 0.668,
+ 0.68,
+ 0.652,
+ 0.664,
+ 0.648,
+ 0.54,
+ 0.4,
+ 0.332,
+ 0.376,
+ 0.42,
+ 0.32,
+ 0.164,
+ 0.18,
+ 0.232,
+ 0.148,
+ 0.032,
+ -0.108,
+ -0.208,
+ -0.336,
+ -0.464,
+ -0.6,
-0.764,
- -0.908,
- -1.092,
- -1.248,
- -1.396,
- -1.384,
- -1.16,
- -0.856,
- -0.64,
- -0.488,
- -0.444,
- -0.492,
- -0.536,
- -0.588,
- -0.632,
- -0.672,
- -0.684,
- -0.692,
- -0.712,
- -0.664,
- -0.532,
- -0.42,
- -0.528,
- -0.484,
- -0.384,
- -0.284,
- -0.352,
- -0.416,
- -0.364,
- -0.368,
- -0.552,
- -0.76,
+ -0.932,
+ -0.804,
-0.888,
- -1.008,
+ -1.048,
+ -1.164,
+ -1.212,
+ -1.264,
+ -1.224,
+ -1.308,
+ -1.328,
+ -1.284,
+ -1.264,
+ -1.336,
+ -1.212,
+ -1.108,
-1.004,
+ -0.896,
+ -0.816
+ ],
+ "z": [
+ -0.832,
+ -0.756,
+ -0.792,
-0.836,
- -0.632,
+ -0.736,
+ -0.812,
+ -0.712,
+ -0.48,
-0.46,
- -0.348,
- -0.292,
- -0.272,
- -0.276,
- -0.236,
- -0.216,
- -0.284,
- -0.352,
- -0.368,
- -0.404,
- -0.392,
- -0.416,
- -0.4,
- -0.416,
- -0.388,
- -0.424,
- -0.416,
- -0.436,
+ -0.432,
+ -0.476,
+ -0.58,
-0.46,
+ -0.376,
+ -0.396,
+ -0.44,
+ -0.624,
+ -0.636,
+ -0.588,
+ -0.6,
+ -0.584,
+ -0.548,
+ -0.496,
-0.528,
+ -0.476,
+ -0.472,
+ -0.456,
+ -0.412,
+ -0.384,
-0.556,
- -0.652,
- -0.8,
- -0.984,
- -1.168,
- -1.352,
- -1.428,
- -1.3,
- -1.1,
- -0.868,
- -0.676,
- -0.556,
- -0.524
- ],
- "y": [
- -0.592,
- -0.528,
+ -0.768,
+ -0.904,
+ -1.02,
+ -0.948,
+ -0.628,
+ -0.552,
+ -0.608,
+ -0.536,
+ -0.6,
-0.484,
- -0.412,
- -0.388,
- -0.392,
- -0.388,
- -0.34,
- -0.276,
- -0.212,
- -0.172,
- -0.088,
- -0.012,
- 0.152,
- 0.152,
- 0.072,
- 0.06,
- 0.284,
- 0.424,
- 0.312,
- 0.316,
+ -0.532,
+ -0.692,
+ -0.728,
+ -0.776,
+ -0.872,
+ -0.876,
+ -0.784,
+ -0.828,
+ -0.84
+ ]
+ },
+ "createdAt": 1730111080605
+ },
+ {
+ "id": "7b214d41-26fa-49c3-92f7-dc49bae2e666",
+ "data": {
+ "x": [
+ -0.076,
+ -0.2,
+ -0.184,
+ -0.096,
+ -0.048,
+ 0.164,
+ 0.396,
0.416,
- 0.544,
- 0.716,
- 1.024,
- 1.14,
- 0.88,
- 0.512,
- 0.196,
- -0.104,
- -0.264,
- -0.216,
- -0.144,
- -0.08,
- -0.06,
- -0.056,
- -0.016,
- 0.008,
- 0.064,
+ 0.292,
0.092,
- 0.012,
- -0.112,
- -0.156,
- -0.144,
- -0.14,
- -0.24,
- -0.272,
- -0.164,
- -0.12,
- -0.188,
+ -0.028,
+ 0.088,
+ 0.32,
+ 0.568,
+ 0.512,
+ 0.2,
+ 0.116,
+ 0.132,
+ -0.028,
+ -0.072,
+ 0.24,
+ 0.412,
+ 0.436,
+ 0.336,
+ 0.184,
+ 0.312,
+ 0.472,
+ 0.496,
+ 0.472,
+ 0.428,
+ 0.508,
+ 0.604,
+ 0.512,
+ 0.624,
+ 0.74,
+ 0.544,
+ 0.404,
+ 0.448,
+ 0.556,
+ 0.66,
+ 0.7,
+ 0.612,
+ 0.608,
+ 0.616,
+ 0.56,
+ 0.66,
+ 0.748,
+ 0.66
+ ],
+ "y": [
+ -1.156,
+ -1.096,
+ -1.02,
+ -0.972,
+ -0.844,
+ -0.72,
+ -0.588,
+ -0.476,
+ -0.3,
+ -0.248,
+ -0.136,
+ 0.016,
+ 0.164,
+ 0.304,
+ 0.308,
+ 0.308,
+ 0.372,
+ 0.432,
+ 0.464,
+ 0.484,
+ 0.54,
+ 0.568,
+ 0.576,
+ 0.552,
+ 0.516,
+ 0.536,
+ 0.584,
+ 0.612,
+ 0.564,
+ 0.44,
+ 0.392,
+ 0.284,
+ 0.24,
+ 0.324,
+ 0.344,
+ 0.236,
+ 0.096,
+ 0.004,
+ -0.068,
+ -0.02,
+ -0.048,
+ -0.16,
-0.304,
- -0.504,
- -0.716,
- -0.84,
- -0.98,
- -1.128,
- -1.216,
- -1.108,
- -0.996,
+ -0.384,
+ -0.436,
+ -0.6,
+ -0.696,
+ -0.772
+ ],
+ "z": [
+ -0.78,
+ -0.776,
+ -0.848,
+ -0.924,
+ -0.86,
+ -0.828,
+ -0.9,
+ -0.86,
+ -0.776,
+ -0.656,
+ -0.616,
+ -0.736,
-0.78,
+ -0.824,
+ -0.812,
+ -0.628,
+ -0.62,
+ -0.756,
+ -0.772,
+ -0.72,
+ -0.792,
+ -0.792,
-0.644,
- -0.552,
- -0.524,
- -0.516,
- -0.416,
- -0.336,
- -0.304,
- -0.296,
- -0.336,
- -0.324,
- -0.196,
- -0.048,
- -0.06,
- -0.136,
- -0.092,
- 0.164,
+ -0.672,
+ -0.664,
+ -0.764,
+ -0.688,
+ -0.54,
+ -0.5,
+ -0.548,
+ -0.576,
+ -0.876,
+ -0.824,
+ -0.664,
+ -0.536,
+ -0.44,
+ -0.548,
+ -0.648,
+ -0.728,
+ -0.6,
+ -0.572,
+ -0.448,
+ -0.404,
+ -0.504,
+ -0.624,
+ -0.672,
+ -0.76,
+ -0.732
+ ]
+ },
+ "createdAt": 1730111076549
+ },
+ {
+ "id": "0caa6a74-0d93-4242-a6a5-8c617b04f32b",
+ "data": {
+ "x": [
+ 0.396,
+ 0.54,
+ 0.564,
+ 0.444,
+ 0.308,
+ 0.448,
+ 0.54,
+ 0.216,
+ -0.008,
+ 0.068,
+ 0.32,
+ 0.412,
+ 0.28,
+ 0.292,
0.288,
- 0.248,
- 0.164,
- 0.276,
- 0.356,
+ 0.112,
+ 0.06,
+ 0.144,
+ 0.184,
+ 0.24,
+ 0.212,
+ 0.184,
+ 0.24,
0.32,
+ 0.4,
+ 0.412,
+ 0.384,
+ 0.388,
+ 0.404,
+ 0.3,
+ 0.232,
+ 0.368,
+ 0.556,
+ 0.656,
+ 0.504,
+ 0.208,
+ -0.048,
+ -0.056,
+ 0.104,
+ 0.36,
+ 0.484,
0.424,
- 0.704,
- 0.996,
- 0.972,
- 0.8,
- 0.532,
- 0.22,
- -0.052,
- -0.188
+ 0.396,
+ 0.352,
+ 0.328,
+ 0.52,
+ 0.6,
+ 0.66
+ ],
+ "y": [
+ -0.676,
+ -0.816,
+ -0.956,
+ -0.896,
+ -1.284,
+ -1.272,
+ -1.18,
+ -1.256,
+ -1.372,
+ -1.44,
+ -1.408,
+ -1.308,
+ -1.292,
+ -1.24,
+ -1.172,
+ -1.148,
+ -1.072,
+ -1.08,
+ -1.036,
+ -0.82,
+ -0.808,
+ -0.824,
+ -0.768,
+ -0.624,
+ -0.512,
+ -0.356,
+ -0.18,
+ -0.136,
+ -0.068,
+ -0.004,
+ 0.032,
+ 0.124,
+ 0.208,
+ 0.3,
+ 0.392,
+ 0.384,
+ 0.512,
+ 0.42,
+ 0.512,
+ 0.584,
+ 0.676,
+ 0.684,
+ 0.66,
+ 0.648,
+ 0.64,
+ 0.668,
+ 1.008,
+ 0.704
],
"z": [
- 2.036,
- 1.744,
- 1.356,
- 1.124,
- 0.98,
- 0.796,
- 0.54,
- 0.36,
- 0.268,
- 0.22,
- 0.108,
- 0.008,
- -0.064,
- 0.076,
- 0.28,
- 0.156,
- -0.192,
- -0.34,
- -0.176,
- -0.268,
- -0.6,
- -0.964,
- -1.376,
- -1.624,
- -1.836,
- -1.816,
- -1.508,
- -1.1,
- -0.644,
- -0.328,
- -0.028,
- 0.156,
- 0.228,
- 0.256,
- 0.308,
- 0.344,
- 0.36,
- 0.412,
- 0.44,
+ -0.372,
+ -0.504,
+ -0.612,
+ -0.744,
+ -0.692,
+ -0.804,
+ -0.892,
+ -0.476,
+ -0.268,
+ -0.38,
+ -0.524,
+ -0.628,
+ -0.6,
+ -0.624,
+ -0.704,
+ -0.708,
+ -0.636,
+ -0.72,
+ -0.804,
+ -0.868,
+ -0.836,
+ -0.82,
+ -0.864,
+ -0.824,
+ -0.804,
+ -0.792,
+ -0.676,
+ -0.636,
+ -0.688,
+ -0.7,
+ -0.708,
+ -0.852,
+ -0.948,
+ -0.948,
+ -0.796,
+ -0.652,
+ -0.628,
+ -0.708,
+ -0.724,
+ -0.744,
+ -0.744,
+ -0.64,
+ -0.576,
+ -0.568,
+ -0.544,
+ -0.592,
+ -0.824,
+ -0.612
+ ]
+ },
+ "createdAt": 1730111072430
+ },
+ {
+ "id": "103110e8-0f71-4267-9a83-05fb1627fcb8",
+ "data": {
+ "x": [
+ 0.672,
+ 0.684,
+ 0.52,
+ 0.42,
0.472,
- 0.532,
+ 0.528,
+ 0.488,
+ 0.472,
+ 0.488,
+ 0.572,
+ 0.448,
+ 0.3,
+ 0.396,
+ 0.696,
+ 0.784,
+ 0.628,
+ 0.62,
+ 0.768,
+ 0.852,
+ 0.72,
0.46,
+ 0.32,
0.48,
- 0.532,
+ 0.752,
+ 0.728,
+ 0.552,
0.644,
- 0.668,
- 0.704,
- 0.88,
- 1.164,
- 1.3,
- 1.3,
- 1.34,
- 1.484,
- 1.52,
- 1.692,
- 2.012,
- 2.04,
- 2.04,
- 2.028,
- 1.932,
- 1.752,
- 1.528,
- 1.22,
- 0.88,
- 0.7,
- 0.58,
- 0.584,
- 0.544,
- 0.412,
+ 0.512,
+ 0.468,
+ 0.588,
+ 0.296,
+ 0.372,
0.3,
- 0.328,
- 0.472,
- 0.544,
- 0.244,
- -0.044,
- -0.096,
- 0.096,
- 0.056,
- -0.2,
- -0.496,
- -0.684,
- -1.124,
- -1.54,
- -1.912,
- -1.92,
- -1.556,
- -1.152,
- -0.8,
+ 0.456,
+ 0.7,
+ 0.496,
+ 0.144,
+ 0.084,
+ 0.196,
+ 0.432,
+ 0.568,
+ 0.632,
+ 0.76,
+ 0.548,
+ 0.164,
+ -0.012,
+ -0.028,
+ 0.152
+ ],
+ "y": [
+ 0.464,
+ 0.516,
+ 0.508,
+ 0.492,
+ 0.56,
+ 0.608,
+ 0.604,
+ 0.536,
+ 0.596,
+ 0.612,
+ 0.5,
+ 0.268,
+ 0.176,
+ 0.172,
+ 0.12,
+ 0.024,
+ 0.008,
+ 0.04,
+ 0.136,
+ 0.136,
+ 0.02,
+ -0.084,
+ -0.08,
+ -0.132,
+ -0.152,
+ -0.424,
-0.472,
- -0.12,
- 0.112
+ -0.64,
+ -0.764,
+ -0.756,
+ -0.644,
+ -0.72,
+ -0.812,
+ -0.972,
+ -0.968,
+ -0.872,
+ -0.916,
+ -1.024,
+ -1.124,
+ -1.276,
+ -1.192,
+ -1.156,
+ -1.052,
+ -0.924,
+ -0.884,
+ -0.852,
+ -0.82,
+ -0.736
+ ],
+ "z": [
+ -0.804,
+ -0.672,
+ -0.548,
+ -0.516,
+ -0.544,
+ -0.572,
+ -0.48,
+ -0.524,
+ -0.492,
+ -0.428,
+ -0.332,
+ -0.54,
+ -0.728,
+ -0.824,
+ -0.852,
+ -0.88,
+ -0.984,
+ -0.908,
+ -0.712,
+ -0.548,
+ -0.496,
+ -0.528,
+ -0.608,
+ -0.716,
+ -0.86,
+ -0.66,
+ -0.784,
+ -0.724,
+ -0.764,
+ -0.956,
+ -0.62,
+ -0.78,
+ -0.468,
+ -0.476,
+ -0.72,
+ -0.736,
+ -0.484,
+ -0.628,
+ -0.808,
+ -0.928,
+ -0.98,
+ -0.972,
+ -1.044,
+ -0.956,
+ -0.788,
+ -0.724,
+ -0.712,
+ -0.8
]
- }
+ },
+ "createdAt": 1730111068366
},
{
- "ID": 1717765694490,
+ "id": "30943b8c-0f57-449d-8cf5-7313793f2e57",
"data": {
"x": [
- -0.448,
- -0.452,
- -0.496,
- -0.504,
- -0.464,
- -0.444,
- -0.452,
- -0.452,
- -0.416,
- -0.412,
- -0.388,
- -0.412,
- -0.356,
- -0.368,
- -0.424,
- -0.428,
- -0.476,
- -0.548,
- -0.664,
- -0.764,
- -0.864,
- -0.868,
+ 0.26,
+ 0.288,
+ 0.28,
+ 0.152,
+ 0.124,
+ 0.056,
+ 0.04,
+ 0.172,
+ 0.248,
+ 0.324,
+ 0.472,
+ 0.484,
+ 0.352,
+ 0.256,
+ 0.236,
+ 0.28,
+ 0.42,
+ 0.424,
+ 0.36,
+ 0.332,
+ 0.424,
+ 0.452,
+ 0.372,
+ 0.284,
+ 0.296,
+ 0.404,
+ 0.476,
+ 0.456,
+ 0.456,
+ 0.464,
+ 0.324,
+ 0.34,
+ 0.404,
+ 0.428,
+ 0.452,
+ 0.472,
+ 0.484,
+ 0.384,
+ 0.512,
+ 0.564,
+ 0.508,
+ 0.48,
+ 0.284,
+ 0.3,
+ 0.832,
+ 1.028,
+ 0.78,
+ 0.608,
+ 0.588
+ ],
+ "y": [
+ -1.348,
+ -1.288,
+ -1.3,
+ -1.332,
+ -1.356,
+ -1.368,
+ -1.368,
+ -1.26,
+ -1.18,
+ -1.06,
+ -1.036,
+ -0.952,
+ -0.88,
-0.788,
- -0.66,
- -0.552,
- -0.456,
- -0.376,
- -0.288,
- -0.264,
- -0.272,
- -0.288,
- -0.272,
- -0.224,
- -0.2,
- -0.192,
- -0.224,
+ -0.672,
+ -0.5,
+ -0.328,
+ -0.172,
+ -0.12,
+ 0,
+ 0.084,
+ 0.204,
+ 0.316,
+ 0.384,
+ 0.464,
+ 0.508,
+ 0.56,
+ 0.624,
+ 0.728,
+ 0.768,
+ 0.728,
+ 0.668,
+ 0.592,
+ 0.516,
+ 0.384,
+ 0.328,
+ 0.268,
+ 0.18,
+ 0.064,
+ 0.048,
+ 0,
+ -0.08,
+ -0.232,
+ -0.344,
+ -0.38,
-0.316,
- -0.408,
- -0.488,
- -0.516,
- -0.588,
- -0.584,
- -0.62,
- -0.648,
- -0.648,
- -0.64,
- -0.668,
+ -0.4,
+ -0.48,
+ -0.492
+ ],
+ "z": [
+ -0.492,
+ -0.544,
+ -0.568,
+ -0.532,
-0.664,
- -0.82,
- -1.1,
- -1.364,
- -1.556,
- -1.536,
- -1.396,
- -1.252,
- -1.068,
- -0.916,
- -0.8,
+ -0.864,
+ -0.852,
+ -0.744,
-0.752,
- -0.692,
- -0.692,
+ -0.68,
+ -0.776,
+ -0.792,
+ -0.836,
+ -0.772,
+ -0.716,
+ -0.564,
+ -0.576,
+ -0.604,
+ -0.604,
+ -0.592,
+ -0.684,
+ -0.72,
+ -0.732,
-0.704,
- -0.672,
- -0.628,
- -0.628,
- -0.644,
- -0.696,
-0.668,
- -0.556,
- -0.532,
- -0.52,
- -0.5,
- -0.464,
- -0.444,
- -0.42,
- -0.504,
- -0.52,
- -0.488,
- -0.444,
+ -0.636,
+ -0.612,
+ -0.516,
+ -0.352,
+ -0.34,
+ -0.292,
+ -0.416,
+ -0.568,
-0.532,
- -0.592,
- -0.64,
- -0.716,
- -0.748,
- -0.704,
+ -0.632,
+ -0.608,
+ -0.652,
-0.584,
- -0.536,
- -0.492,
- -0.452,
- -0.436,
- -0.388
- ],
- "y": [
- 0.14,
- 0.204,
- 0.256,
- 0.248,
- 0.216,
- 0.12,
- 0.016,
- -0.024,
- -0.048,
- -0.064,
- -0.144,
- -0.224,
- -0.256,
- -0.28,
- -0.3,
- -0.408,
- -0.528,
- -0.66,
+ -0.76,
+ -0.796,
-0.716,
- -0.692,
- -0.704,
- -0.888,
- -1.108,
- -1.224,
- -1.06,
- -0.9,
- -0.768,
- -0.692,
- -0.592,
- -0.456,
- -0.372,
- -0.276,
- -0.252,
- -0.24,
- -0.256,
- -0.22,
- -0.116,
- -0.024,
- 0.004,
- 0.052,
- 0.14,
- 0.252,
- 0.164,
- 0.036,
- 0.064,
- 0.328,
+ -0.744,
+ -0.7,
+ -0.636,
+ -0.928,
+ -1.024,
+ -0.956,
+ -0.98,
+ -0.832
+ ]
+ },
+ "createdAt": 1730111064260
+ },
+ {
+ "id": "65e35b65-3640-435c-b215-919d02ffbd1d",
+ "data": {
+ "x": [
+ 0.484,
+ 0.276,
+ 0.212,
+ 0.408,
+ 0.44,
+ 0.304,
+ 0.296,
0.404,
- 0.092,
- 0.008,
- 0.216,
+ 0.344,
+ 0.204,
+ 0.276,
+ 0.432,
+ 0.456,
+ 0.42,
+ 0.432,
+ 0.436,
+ 0.36,
+ 0.24,
+ 0.2,
+ 0.368,
+ 0.272,
+ 0.144,
+ 0.204,
+ 0.212,
+ 0.132,
+ 0.064,
+ 0.1,
+ 0.156,
+ 0.42,
+ 0.412,
+ 0.132,
+ -0.028,
+ 0,
+ 0.188,
+ 0.308,
+ 0.416,
0.516,
- 0.608,
- 0.528,
- 0.368,
+ 0.5,
+ 0.396,
+ 0.276,
+ 0.316,
+ 0.38,
+ 0.448,
+ 0.424,
+ 0.376,
+ 0.316,
+ 0.412,
+ 0.504,
+ 0.408
+ ],
+ "y": [
+ 0.512,
+ 0.42,
+ 0.356,
+ 0.376,
+ 0.3,
0.232,
- 0.084,
- -0.04,
- -0.16,
- -0.228,
+ 0.188,
+ 0.188,
+ 0,
+ -0.108,
+ -0.18,
+ -0.196,
-0.256,
- -0.188,
- -0.12,
- -0.096,
- -0.044,
+ -0.38,
+ -0.548,
+ -0.584,
+ -0.544,
+ -0.752,
+ -0.856,
+ -0.86,
+ -0.864,
+ -1.18,
+ -1.252,
+ -1.092,
+ -1.04,
+ -1.052,
+ -1.164,
+ -1.212,
+ -1.236,
+ -1.192,
+ -1.176,
+ -1.076,
+ -1.016,
+ -0.956,
+ -0.852,
+ -0.788,
+ -0.704,
+ -0.596,
+ -0.536,
+ -0.384,
+ -0.272,
+ -0.18,
+ -0.068,
0.008,
- 0.08,
- 0.156,
- 0.172,
- 0.068,
- -0.036,
- -0.104,
- -0.144,
- -0.132,
- -0.176,
- -0.212,
- -0.216,
- -0.188,
- -0.196,
- -0.308,
- -0.408,
- -0.472,
- -0.476,
- -0.56,
- -0.672,
- -0.828,
- -1.048,
- -1.16,
- -1.072,
- -0.968,
- -0.844,
- -0.736
+ 0,
+ 0,
+ -0.004,
+ 0.072,
+ 0.156
],
"z": [
- 0.372,
- 0.404,
- 0.452,
- 0.468,
- 0.52,
- 0.564,
- 0.588,
- 0.636,
- 0.596,
- 0.632,
- 0.664,
- 0.74,
- 0.836,
- 0.876,
- 0.924,
- 1.024,
- 1.272,
- 1.668,
- 1.884,
- 1.884,
- 1.924,
- 1.92,
- 1.912,
- 1.948,
- 2.02,
- 1.896,
- 1.76,
- 1.436,
- 1.172,
- 1.016,
- 0.808,
- 0.684,
- 0.58,
- 0.524,
- 0.408,
- 0.28,
+ -0.616,
+ -0.688,
+ -0.708,
+ -0.744,
+ -0.768,
+ -0.768,
+ -0.708,
+ -0.656,
+ -0.752,
+ -0.78,
+ -0.752,
+ -0.708,
+ -0.76,
+ -0.808,
+ -0.844,
+ -0.908,
+ -0.892,
+ -0.776,
+ -0.696,
+ -0.948,
+ -0.892,
+ -0.732,
+ -0.804,
+ -0.792,
+ -0.796,
+ -0.6,
+ -0.6,
+ -0.708,
+ -0.968,
+ -1.008,
+ -0.944,
+ -0.892,
+ -0.784,
+ -0.808,
+ -0.748,
+ -0.776,
+ -0.808,
+ -0.768,
+ -0.744,
+ -0.612,
+ -0.72,
+ -0.808,
+ -0.828,
+ -0.836,
+ -0.792,
+ -0.72,
+ -0.86,
+ -1.06,
+ -1.108
+ ]
+ },
+ "createdAt": 1730111060117
+ },
+ {
+ "id": "0609c195-c769-44bc-a401-a3a676629863",
+ "data": {
+ "x": [
+ 0.032,
+ 0.024,
+ -0.044,
+ -0.06,
+ 0.12,
+ 0.048,
+ -0.024,
+ 0.04,
0.192,
- 0.124,
- 0.044,
- 0.016,
- 0.02,
- 0.172,
- 0.184,
- 0.016,
- -0.228,
- -0.052,
- 0.172,
- -0.212,
- -0.704,
- -1.116,
- -1.392,
- -1.52,
- -1.616,
- -1.604,
- -1.312,
- -0.98,
- -0.596,
- -0.352,
- -0.208,
- -0.096,
- 0.004,
- 0.1,
+ 0.296,
+ 0.34,
+ 0.252,
+ 0.152,
0.1,
- 0.124,
- 0.196,
+ 0.076,
+ 0.364,
+ 0.576,
+ 0.412,
+ 0.104,
+ 0.008,
+ 0.232,
+ 0.26,
+ 0.204,
+ 0.204,
0.256,
- 0.264,
+ 0.288,
+ 0.34,
+ 0.408,
+ 0.376,
0.276,
- 0.368,
- 0.436,
- 0.548,
+ 0.196,
+ 0.272,
+ 0.412,
+ 0.344,
+ 0.424,
+ 0.552,
+ 0.476,
+ 0.26,
+ 0.308,
+ 0.54,
+ 0.464,
+ 0.212,
+ 0.3,
+ 0.504,
+ 0.396,
+ 0.264,
+ 0.424,
+ 0.584,
+ 0.672
+ ],
+ "y": [
+ -1.34,
+ -1.288,
+ -1.284,
+ -1.284,
+ -1.164,
+ -1.116,
+ -1.024,
+ -0.936,
+ -0.78,
+ -0.856,
+ -0.668,
+ -0.432,
+ -0.244,
+ -0.048,
+ 0.084,
+ 0.248,
+ 0.384,
+ 0.404,
+ 0.324,
+ 0.424,
+ 0.528,
+ 0.568,
+ 0.576,
+ 0.64,
+ 0.7,
+ 0.732,
+ 0.8,
+ 0.816,
+ 0.8,
+ 0.72,
+ 0.644,
0.612,
- 0.624,
- 0.648,
- 0.668,
- 0.648,
- 0.712,
- 0.76,
- 0.86,
- 1.012,
- 1.116,
- 1.264,
- 1.424,
- 1.548,
- 1.764,
- 2.036,
- 2.04,
- 2.04,
- 2.04,
- 1.928,
- 1.78
+ 0.516,
+ 0.364,
+ 0.272,
+ 0.284,
+ 0.184,
+ 0.068,
+ 0.128,
+ 0.236,
+ 0.068,
+ -0.176,
+ -0.168,
+ -0.08,
+ -0.172,
+ -0.42,
+ -0.552,
+ -0.456,
+ -0.384
+ ],
+ "z": [
+ -0.724,
+ -0.696,
+ -0.8,
+ -0.876,
+ -0.956,
+ -0.876,
+ -0.824,
+ -0.828,
+ -0.932,
+ -0.856,
+ -0.74,
+ -0.612,
+ -0.4,
+ -0.468,
+ -0.516,
+ -0.7,
+ -0.812,
+ -0.664,
+ -0.592,
+ -0.636,
+ -0.836,
+ -0.772,
+ -0.672,
+ -0.632,
+ -0.588,
+ -0.516,
+ -0.356,
+ -0.336,
+ -0.428,
+ -0.584,
+ -0.632,
+ -0.592,
+ -0.692,
+ -0.732,
+ -0.808,
+ -0.78,
+ -0.884,
+ -0.992,
+ -0.876,
+ -0.632,
+ -0.608,
+ -0.772,
+ -0.824,
+ -0.772,
+ -0.572,
+ -0.616,
+ -0.896,
+ -0.92,
+ -1.048
]
- }
+ },
+ "createdAt": 1730111055582
},
{
- "ID": 1717765689141,
+ "id": "eab4ad7a-30a8-408d-b23c-e1ff2c779d8a",
"data": {
"x": [
- -0.444,
- -0.4,
- -0.368,
- -0.368,
- -0.304,
- -0.26,
- -0.28,
- -0.312,
- -0.368,
- -0.336,
- -0.316,
- -0.328,
- -0.408,
- -0.436,
- -0.42,
- -0.412,
- -0.456,
- -0.456,
- -0.44,
- -0.412,
- -0.304,
- -0.26,
- -0.244,
- -0.192,
- -0.192,
- -0.184,
+ -0.004,
-0.164,
- -0.12,
- -0.144,
+ 0.056,
+ 0.14,
+ 0.092,
+ -0.004,
+ -0.088,
+ -0.192,
+ -0.212,
+ -0.092,
+ -0.156,
+ -0.232,
+ -0.232,
-0.152,
- -0.14,
- -0.128,
- -0.108,
- -0.184,
+ -0.004,
+ -0.132,
+ -0.28,
+ -0.292,
+ -0.272,
+ -0.292,
+ -0.24,
+ -0.116,
+ -0.188,
+ -0.372,
-0.248,
- -0.284,
- -0.364,
- -0.468,
- -0.516,
- -0.5,
- -0.516,
- -0.52,
- -0.532,
- -0.568,
- -0.596,
- -0.608,
- -0.672,
- -0.764,
- -0.896,
+ -0.036,
+ 0.068,
+ 0.196,
+ 0.236,
+ 0.06,
+ -0.052,
+ -0.016,
+ 0.084,
+ 0.188,
+ 0.256,
+ 0.32,
+ 0.328,
+ 0.272,
+ 0.28,
+ 0.352,
+ 0.416,
+ 0.344,
+ 0.192,
+ 0.112,
+ 0.128,
+ 0.24,
+ 0.3,
+ 0.352,
+ 0.34
+ ],
+ "y": [
+ -0.64,
+ -0.92,
-0.988,
- -1.096,
- -1.268,
- -1.352,
- -1.372,
- -1.304,
- -1.168,
- -0.992,
- -0.832,
+ -1.004,
+ -0.856,
-0.736,
- -0.652,
- -0.604,
- -0.62,
- -0.592,
- -0.576,
- -0.536,
- -0.516,
- -0.496,
- -0.464,
- -0.432,
- -0.444,
- -0.432,
- -0.42,
- -0.416,
- -0.384,
- -0.348,
- -0.308,
- -0.328,
- -0.384,
- -0.364,
- -0.34,
- -0.38,
- -0.464,
- -0.532,
- -0.592,
- -0.616,
- -0.556,
- -0.5,
- -0.416,
+ -0.828,
+ -1.06,
+ -1.152,
+ -1.14,
+ -1.14,
+ -1.032,
+ -1.012,
+ -1.116,
+ -1.112,
+ -1.068,
+ -1.036,
+ -1.044,
+ -0.996,
+ -1.032,
+ -1.02,
+ -1.024,
+ -0.92,
+ -0.896,
+ -0.808,
+ -0.76,
+ -0.62,
+ -0.436,
-0.396,
- -0.344
+ -0.4,
+ -0.352,
+ -0.328,
+ -0.264,
+ -0.196,
+ -0.12,
+ -0.068,
+ 0.008,
+ 0.048,
+ 0.104,
+ 0.204,
+ 0.272,
+ 0.296,
+ 0.292,
+ 0.332,
+ 0.388,
+ 0.504,
+ 0.56,
+ 0.596,
+ 0.624
],
- "y": [
- 0,
- -0.04,
- -0.02,
- 0,
- -0.024,
- -0.08,
- -0.164,
- -0.236,
- -0.248,
- -0.284,
- -0.34,
- -0.388,
- -0.412,
- -0.44,
- -0.484,
- -0.588,
- -0.668,
+ "z": [
+ -0.932,
-0.764,
- -0.892,
- -1.044,
- -1.144,
- -1.1,
- -1,
- -0.916,
- -0.828,
- -0.76,
+ -0.988,
+ -1.028,
+ -1.028,
-0.696,
- -0.648,
- -0.572,
- -0.504,
- -0.476,
- -0.444,
-0.488,
- -0.484,
- -0.436,
- -0.272,
- -0.132,
- -0.068,
- 0.024,
- 0.084,
- 0.1,
- 0.016,
- 0.056,
- 0.268,
- 0.268,
- 0.112,
+ -0.544,
+ -0.86,
+ -1.032,
+ -0.824,
+ -0.552,
+ -0.412,
+ -0.46,
+ -0.736,
+ -0.752,
+ -0.688,
+ -0.696,
+ -0.692,
+ -0.732,
+ -0.856,
+ -1.076,
+ -1.072,
+ -0.804,
+ -0.756,
+ -0.828,
+ -0.832,
+ -0.72,
+ -0.764,
+ -0.696,
+ -0.728,
+ -0.808,
+ -0.928,
+ -0.988,
+ -0.984,
+ -0.976,
+ -0.96,
+ -0.892,
+ -0.892,
+ -0.9,
+ -0.856,
+ -0.832,
+ -0.808,
+ -0.852,
+ -0.856,
+ -0.884,
+ -0.812,
+ -0.724,
+ -0.6
+ ]
+ },
+ "createdAt": 1730111051003
+ },
+ {
+ "id": "1b72a86b-8c83-492f-9bd9-861418f71d19",
+ "data": {
+ "x": [
+ 0.692,
+ 0.632,
+ 0.68,
+ 0.688,
+ 0.596,
+ 0.576,
+ 0.7,
+ 0.684,
+ 0.656,
+ 0.808,
+ 0.868,
+ 0.836,
+ 0.708,
+ 0.44,
+ 0.304,
+ 0.444,
+ 0.748,
+ 0.984,
+ 0.296,
+ 0.148,
+ 0.68,
+ 0.756,
+ 0.364,
+ -0.1,
+ 0.28,
+ 0.404,
-0.004,
- 0.112,
- 0.18,
- 0.208,
- 0.256,
- 0.396,
+ 0.244,
+ 0.276,
+ 0.172,
+ 0.156,
+ 0.376,
+ 0.512,
0.516,
- 0.6,
- 0.64,
- 0.504,
- 0.344,
- 0.184,
+ 0.392,
+ 0.072,
+ 0.004,
+ 0.368,
+ 0.604,
+ 0.488,
+ 0.212,
+ 0.192,
+ 0.268,
+ 0.356,
+ 0.4,
+ 0.468,
+ 0.492,
+ 0.38
+ ],
+ "y": [
+ 0.208,
0.064,
- -0.056,
- -0.024,
- 0.06,
0.084,
- 0.092,
- 0.048,
- -0.004,
- -0.016,
- -0.032,
- -0.052,
- -0.072,
- -0.128,
- -0.176,
+ 0.176,
+ 0.124,
+ -0.124,
+ -0.12,
+ -0.116,
+ -0.148,
+ -0.26,
+ -0.392,
+ -0.468,
+ -0.432,
+ -0.46,
+ -0.476,
+ -0.764,
+ -0.94,
+ -0.692,
+ -0.656,
+ -0.752,
+ -0.872,
+ -0.908,
+ -0.808,
+ -0.916,
+ -1.028,
+ -1.024,
+ -1.152,
+ -1.112,
+ -1.128,
+ -1.168,
+ -1.016,
+ -0.852,
+ -0.724,
+ -0.712,
+ -0.732,
+ -0.668,
+ -0.6,
+ -0.376,
-0.18,
- -0.196,
- -0.224,
- -0.292,
- -0.34,
- -0.344,
- -0.396,
- -0.528,
- -0.644,
+ 0.1,
+ 0.284,
+ 0.452,
+ 0.56,
+ 0.548,
+ 0.5,
+ 0.504,
+ 0.48,
+ 0.448
+ ],
+ "z": [
+ -0.688,
+ -0.764,
+ -0.796,
+ -0.688,
+ -0.504,
+ -0.52,
+ -0.696,
+ -0.672,
+ -0.58,
+ -0.584,
-0.6,
- -0.476,
+ -0.752,
+ -0.74,
+ -0.624,
+ -0.428,
+ -0.488,
+ -0.744,
+ -1.224,
+ -0.548,
+ -0.18,
+ -0.66,
+ -0.86,
+ -0.796,
+ -0.496,
+ -0.788,
+ -1.016,
+ -0.768,
+ -0.92,
+ -0.984,
+ -0.976,
+ -0.94,
+ -0.816,
+ -0.756,
+ -0.88,
+ -1.18,
+ -1.068,
+ -0.78,
+ -0.78,
+ -0.808,
+ -0.756,
+ -0.48,
+ -0.372,
+ -0.328,
-0.456,
- -0.54,
- -0.724,
- -0.864,
- -1,
- -1.1,
- -1.136
- ],
- "z": [
- 0.256,
+ -0.656,
+ -0.772,
+ -0.752,
+ -0.732
+ ]
+ },
+ "createdAt": 1730111046637
+ },
+ {
+ "id": "ab5494a6-ff70-45fe-ae11-8fed15a4f5e9",
+ "data": {
+ "x": [
+ 0.44,
+ 0.388,
+ 0.312,
+ 0.268,
+ 0.26,
+ 0.304,
+ 0.312,
+ 0.308,
+ 0.288,
+ 0.34,
+ 0.408,
+ 0.44,
0.38,
+ 0.268,
+ 0.416,
+ 0.54,
+ 0.552,
+ 0.412,
+ 0.432,
0.532,
- 0.632,
+ 0.528,
+ 0.404,
+ 0.356,
+ 0.352,
+ 0.376,
+ 0.492,
+ 0.556,
+ 0.504,
+ 0.512,
0.744,
- 0.816,
- 0.856,
+ 0.6,
+ 0.34,
+ 0.248,
+ 0.244,
+ 0.268,
+ 0.388,
+ 0.504,
+ 0.352,
+ 0.34,
+ 0.252,
+ 0.284,
+ 0.192,
+ 0.116,
+ -0.048,
+ -0.088,
+ -0.144,
+ -0.164,
+ -0.096,
+ -0.06
+ ],
+ "y": [
+ 0.624,
+ 0.7,
+ 0.736,
+ 0.8,
0.864,
- 0.868,
- 0.868,
- 0.82,
+ 0.876,
+ 0.836,
0.784,
- 0.86,
- 0.98,
- 1.108,
- 1.188,
- 1.348,
- 1.556,
- 1.82,
- 2.032,
- 2.04,
- 2.04,
- 2.04,
- 2.04,
- 1.956,
- 1.688,
- 1.42,
- 1.208,
- 1.044,
- 0.94,
- 0.848,
- 0.752,
- 0.588,
- 0.468,
- 0.288,
- 0.132,
- 0.028,
- -0.072,
- -0.004,
- 0.16,
- 0.24,
- 0.148,
- -0.032,
- 0.056,
- 0.22,
- 0.072,
- -0.14,
- -0.228,
- -0.34,
- -0.74,
- -1.116,
- -1.476,
- -1.684,
- -1.716,
- -1.608,
- -1.408,
- -1.204,
- -0.956,
- -0.688,
- -0.484,
- -0.304,
- -0.128,
- 0.004,
- 0.124,
- 0.224,
- 0.32,
- 0.468,
- 0.564,
- 0.668,
- 0.732,
- 0.728,
- 0.688,
- 0.704,
- 0.728,
- 0.712,
- 0.712,
0.74,
- 0.8,
- 0.916,
- 0.988,
- 0.952,
- 0.968,
- 1.036,
- 1.084,
- 1.248,
- 1.392,
- 1.628,
- 1.948,
- 2.04,
- 2.04
+ 0.72,
+ 0.712,
+ 0.624,
+ 0.44,
+ 0.392,
+ 0.388,
+ 0.44,
+ 0.376,
+ 0.296,
+ 0.308,
+ 0.364,
+ 0.284,
+ 0.252,
+ 0.26,
+ 0.116,
+ -0.064,
+ -0.112,
+ -0.084,
+ -0.164,
+ -0.372,
+ -0.368,
+ -0.332,
+ -0.46,
+ -0.564,
+ -0.584,
+ -0.652,
+ -0.764,
+ -0.872,
+ -0.928,
+ -0.784,
+ -0.772,
+ -0.868,
+ -1.112,
+ -1.204,
+ -1.192,
+ -1.104,
+ -1.096,
+ -1.144,
+ -1.236,
+ -1.264
+ ],
+ "z": [
+ -0.788,
+ -0.704,
+ -0.608,
+ -0.5,
+ -0.356,
+ -0.288,
+ -0.352,
+ -0.488,
+ -0.556,
+ -0.532,
+ -0.472,
+ -0.472,
+ -0.708,
+ -0.724,
+ -0.796,
+ -0.776,
+ -0.896,
+ -0.82,
+ -0.772,
+ -0.712,
+ -0.712,
+ -0.752,
+ -0.848,
+ -0.876,
+ -0.912,
+ -0.708,
+ -0.516,
+ -0.58,
+ -0.808,
+ -1.024,
+ -0.852,
+ -0.624,
+ -0.772,
+ -0.804,
+ -0.776,
+ -0.66,
+ -0.888,
+ -0.788,
+ -0.756,
+ -0.408,
+ -0.352,
+ -0.52,
+ -0.92,
+ -0.84,
+ -0.656,
+ -0.42,
+ -0.392,
+ -0.568,
+ -0.816
]
- }
+ },
+ "createdAt": 1730111042105
}
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- },
- "icon": "EighthNote"
+ ]
}
]
}",
- "main.blocks": "ml.event.StillIconNames.Asleepml.event.WaveIconNames.Rabbitml.event.ClapIconNames.EighthNote",
- "main.ts": "ml.onStart(ml.event.Still, function () {
- basic.showIcon(IconNames.Asleep)
+ "main.blocks": "ml.event.NotASpellIconNames.Noml.event.PokeIconNames.Swordml.event.WaggleIconNames.Confusedml.event.FlickIconNames.Yesml.event.CircleIconNames.Square",
+ "main.ts": "ml.onStart(ml.event.NotASpell, function () {
+ basic.showIcon(IconNames.No)
+})
+ml.onStart(ml.event.Poke, function () {
+ basic.showIcon(IconNames.Sword)
+})
+ml.onStart(ml.event.Waggle, function () {
+ basic.showIcon(IconNames.Confused)
})
-ml.onStart(ml.event.Wave, function () {
- basic.showIcon(IconNames.Rabbit)
+ml.onStart(ml.event.Flick, function () {
+ basic.showIcon(IconNames.Yes)
})
-ml.onStart(ml.event.Clap, function () {
- basic.showIcon(IconNames.EighthNote)
+ml.onStart(ml.event.Circle, function () {
+ basic.showIcon(IconNames.Square)
})
",
"pxt.json": "{"name":"A project name","description":"","dependencies":{"core":"*","microphone":"*","radio":"*","machine-learning":"github:microbit-foundation/pxt-microbit-ml#v1.0.14"},"files":["main.ts","main.blocks","autogenerated.ts","dataset.json","pxt.json","README.md"],"preferredEditor":"blocksprj"}",
diff --git a/src/makecode/generate-custom-scripts.ts b/src/makecode/generate-custom-scripts.ts
index 8af0b6570..4b809b5ac 100644
--- a/src/makecode/generate-custom-scripts.ts
+++ b/src/makecode/generate-custom-scripts.ts
@@ -10,7 +10,7 @@ import { ActionName, actionNamesFromLabels } from "./utils";
import { LayersModel } from "@tensorflow/tfjs";
import { DatasetEditorJsonFormat, ActionData } from "../model";
import { mlSettings } from "../mlConfig";
-import { DataWindow } from "../store";
+import { DataWindow } from "../project-utils";
const createMlEvents = (actionNames: ActionName[]) => {
let code = "";
diff --git a/src/makecode/generate-main-scripts.test.ts b/src/makecode/generate-main-scripts.test.ts
index b0d279807..706d63afd 100644
--- a/src/makecode/generate-main-scripts.test.ts
+++ b/src/makecode/generate-main-scripts.test.ts
@@ -15,14 +15,18 @@ import { getMainScript } from "./generate-main-scripts";
describe("test generateMainScripts", () => {
it("generates xml blocks", () => {
const expected = `ml.event.NameIconNames.Heart`;
- const actions: Action[] = [{ name: "name", icon: "Heart", ID: 12 }];
+ const actions: Action[] = [
+ { name: "name", icon: "Heart", id: "12", createdAt: 12 },
+ ];
expect(getMainScript(actions, "blocks")).toEqual(expected);
});
it("generates js", () => {
const expected =
"ml.onStart(ml.event.Name, function () {\n basic.showIcon(IconNames.Heart)\n})";
- const actions: Action[] = [{ name: "name", icon: "Heart", ID: 12 }];
+ const actions: Action[] = [
+ { name: "name", icon: "Heart", id: "12", createdAt: 12 },
+ ];
expect(getMainScript(actions, "javascript")).toContain(expected);
});
});
diff --git a/src/makecode/generate-main-scripts.ts b/src/makecode/generate-main-scripts.ts
index d7e8fcd31..d215a4d4a 100644
--- a/src/makecode/generate-main-scripts.ts
+++ b/src/makecode/generate-main-scripts.ts
@@ -70,7 +70,7 @@ const onMLEventChildren = (
export const getMainScript = (actions: Action[], lang: Language) => {
const actionNames = actionNamesFromLabels(actions.map((a) => a.name));
const configs = actions.map((g, idx) => ({
- id: g.ID,
+ id: g.id,
name: actionNames[idx].actionVar,
iconName: g.icon,
}));
diff --git a/src/makecode/ml4f-output.test.ts b/src/makecode/ml4f-output.test.ts
index 421438cba..81dcdd866 100644
--- a/src/makecode/ml4f-output.test.ts
+++ b/src/makecode/ml4f-output.test.ts
@@ -15,9 +15,9 @@ import { prepareFeaturesAndLabels, trainModel } from "../ml";
import { ActionData } from "../model";
import { getAutogeneratedTs } from "./generate-custom-scripts";
// Change the file path to use different datasets.
-import rawTrainingData from "../test-fixtures/activity-timer-data-log-data-samples.json";
-import { currentDataWindow, DataWindow } from "../store";
import path from "path";
+import { currentDataWindow, DataWindow } from "../project-utils";
+import rawTrainingData from "../test-fixtures/activity-timer-data-log-data-samples.json";
// Configure if the recording data is clipped to size of the smallest recording.
const CLIP_TRAINING_DATA = false;
diff --git a/src/makecode/utils.test.ts b/src/makecode/utils.test.ts
index d1b6f8634..39bee4663 100644
--- a/src/makecode/utils.test.ts
+++ b/src/makecode/utils.test.ts
@@ -12,9 +12,9 @@ import { MakeCodeProject } from "@microbit/makecode-embed/react";
import * as tf from "@tensorflow/tfjs";
import { assert, vi } from "vitest";
import { TrainingResult, trainModel } from "../ml";
-import { DatasetEditorJsonFormat, ActionData } from "../model";
+import { ActionData, DatasetEditorJsonFormat } from "../model";
import oldProject from "../test-fixtures/project-to-update.json";
-import actionData from "../test-fixtures/still-wave-clap-data-samples-legacy.json";
+import actionData from "../test-fixtures/wand-data-samples.json";
import {
ActionName,
actionNamesFromLabels,
@@ -25,7 +25,7 @@ import {
hasMakeCodeMlExtension,
pxt,
} from "./utils";
-import { currentDataWindow } from "../store";
+import { currentDataWindow } from "../project-utils";
const data: DatasetEditorJsonFormat = {
data: actionData as ActionData[],
@@ -42,10 +42,7 @@ beforeAll(async () => {
const randomSpy = vi.spyOn(Math, "random");
randomSpy.mockImplementation(() => 0.5);
- trainingResult = await trainModel(
- actionData as ActionData[],
- currentDataWindow
- );
+ trainingResult = await trainModel(data.data, currentDataWindow);
});
describe("test project generation", () => {
diff --git a/src/makecode/utils.ts b/src/makecode/utils.ts
index e334c5612..6d6ba5c76 100644
--- a/src/makecode/utils.ts
+++ b/src/makecode/utils.ts
@@ -12,8 +12,7 @@ import { DatasetEditorJsonFormat } from "../model";
import { getMainScript } from "./generate-main-scripts";
import { getAutogeneratedTs, getDatasetJson } from "./generate-custom-scripts";
import { MakeCodeProject } from "@microbit/makecode-embed/react";
-import { DataWindow } from "../store";
-import { untitledProjectName } from "../project-name";
+import { DataWindow, untitledProjectName } from "../project-utils";
export const filenames = {
mainTs: "main.ts",
diff --git a/src/ml.test.ts b/src/ml.test.ts
index dcbf12dae..afc5c9b20 100644
--- a/src/ml.test.ts
+++ b/src/ml.test.ts
@@ -9,7 +9,7 @@
* SPDX-License-Identifier: MIT
*/
import * as tf from "@tensorflow/tfjs";
-import { ActionData } from "./model";
+import { ActionData, OldActionData } from "./model";
import {
applyFilters,
prepareFeaturesAndLabels,
@@ -19,21 +19,24 @@ import {
import actionDataBadLabels from "./test-fixtures/shake-still-circle-legacy-bad-labels.json";
import actionData from "./test-fixtures/shake-still-circle-data-samples-legacy.json";
import testData from "./test-fixtures/shake-still-circle-legacy-test-data.json";
-import { currentDataWindow } from "./store";
+import { currentDataWindow, migrateLegacyActionData } from "./project-utils";
-const fixUpTestData = (data: Partial[]): ActionData[] => {
+const fixUpTestData = (data: Partial[]): OldActionData[] => {
data.forEach((action) => (action.icon = "Heart"));
- return data as ActionData[];
+ return data as OldActionData[];
};
+const migratedActionData = migrateLegacyActionData(fixUpTestData(actionData));
+const migratedActionDataBadLabels = migrateLegacyActionData(
+ fixUpTestData(actionDataBadLabels)
+);
+const migratedTestData = migrateLegacyActionData(fixUpTestData(testData));
+
let trainingResult: TrainingResult;
beforeAll(async () => {
// No webgl in tests running in node.
await tf.setBackend("cpu");
- trainingResult = await trainModel(
- fixUpTestData(actionData),
- currentDataWindow
- );
+ trainingResult = await trainModel(migratedActionData, currentDataWindow);
});
const getModelResults = (data: ActionData[]) => {
@@ -66,7 +69,7 @@ const getModelResults = (data: ActionData[]) => {
describe("Model tests", () => {
test("returns acceptable results on training data", () => {
const { tensorFlowResultAccuracy, tensorflowPredictionResult, labels } =
- getModelResults(fixUpTestData(actionData));
+ getModelResults(migratedActionData);
const d = labels[0].length; // dimensions
for (let i = 0, j = 0; i < tensorflowPredictionResult.length; i += d, j++) {
const result = tensorflowPredictionResult.slice(i, i + d);
@@ -81,7 +84,7 @@ describe("Model tests", () => {
// Training data is shake, still, circle. This data is still, circle, shake.
test("returns incorrect results on wrongly labelled training data", () => {
const { tensorFlowResultAccuracy, tensorflowPredictionResult, labels } =
- getModelResults(fixUpTestData(actionDataBadLabels));
+ getModelResults(migratedActionDataBadLabels);
const d = labels[0].length; // dimensions
for (let i = 0, j = 0; i < tensorflowPredictionResult.length; i += d, j++) {
const result = tensorflowPredictionResult.slice(i, i + d);
@@ -93,9 +96,7 @@ describe("Model tests", () => {
});
test("returns correct results on testing data", () => {
- const { tensorFlowResultAccuracy } = getModelResults(
- fixUpTestData(testData)
- );
+ const { tensorFlowResultAccuracy } = getModelResults(migratedTestData);
// The model thinks 1-2 samples of still are circle.
expect(parseFloat(tensorFlowResultAccuracy)).toBeGreaterThan(0.85);
});
diff --git a/src/ml.ts b/src/ml.ts
index 65a9fabbb..a5590efeb 100644
--- a/src/ml.ts
+++ b/src/ml.ts
@@ -8,7 +8,7 @@ import * as tf from "@tensorflow/tfjs";
import { SymbolicTensor } from "@tensorflow/tfjs";
import { getMlFilters, mlSettings } from "./mlConfig";
import { ActionData, XYZData } from "./model";
-import { DataWindow } from "./store";
+import { DataWindow } from "./project-utils";
export type TrainingResult =
| { error: false; model: tf.LayersModel }
@@ -128,10 +128,10 @@ export const applyFilters = (
interface PredictInput {
model: tf.LayersModel;
data: XYZData;
- classificationIds: number[];
+ classificationIds: string[];
}
-export type Confidences = Record;
+export type Confidences = Record;
export type ConfidencesResult =
| { error: true; detail: unknown }
diff --git a/src/mlConfig.ts b/src/mlConfig.ts
index e77b7a65a..c150430e0 100644
--- a/src/mlConfig.ts
+++ b/src/mlConfig.ts
@@ -4,7 +4,8 @@
*
* SPDX-License-Identifier: MIT
*/
-import { DataWindow } from "./store";
+
+import { DataWindow } from "./project-utils";
export enum Filter {
MAX = "max",
diff --git a/src/model.test.ts b/src/model.test.ts
index 433b83d64..dd533cda1 100644
--- a/src/model.test.ts
+++ b/src/model.test.ts
@@ -16,29 +16,29 @@ describe("isDatasetUserFileFormat", () => {
expect(isDatasetUserFileFormat([{ invalid: 3 }])).toEqual(false);
expect(isDatasetUserFileFormat([{ name: 3 }])).toEqual(false);
expect(
- isDatasetUserFileFormat([{ ID: 0, name: "some name", recordings: [] }])
+ isDatasetUserFileFormat([{ id: 0, name: "some name", recordings: [] }])
).toEqual(true);
});
it("checks data recordings", () => {
const generateData = (recordings: unknown) => [
- { ID: 0, name: "some name", recordings },
+ { id: 0, name: "some name", recordings },
];
expect(isDatasetUserFileFormat(generateData({}))).toEqual(false);
expect(isDatasetUserFileFormat(generateData([]))).toEqual(true);
expect(
- isDatasetUserFileFormat(generateData([{ ID: 0, data: [] }]))
+ isDatasetUserFileFormat(generateData([{ id: 0, data: [] }]))
).toEqual(false);
expect(
- isDatasetUserFileFormat(generateData([{ ID: 0, data: {} }]))
+ isDatasetUserFileFormat(generateData([{ id: 0, data: {} }]))
).toEqual(false);
expect(
isDatasetUserFileFormat(
- generateData([{ ID: 0, data: { x: 0, y: 0, z: 0 } }])
+ generateData([{ id: 0, data: { x: 0, y: 0, z: 0 } }])
)
).toEqual(false);
expect(
isDatasetUserFileFormat(
- generateData([{ ID: 0, data: { x: [], y: [], z: [] } }])
+ generateData([{ id: 0, data: { x: [], y: [], z: [] } }])
)
).toEqual(true);
});
diff --git a/src/model.ts b/src/model.ts
index 3e05c4828..547bc9424 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -17,15 +17,28 @@ export interface XYZData {
}
export interface RecordingData {
- ID: number;
+ id: string;
data: XYZData;
+ createdAt: number;
}
export interface Action {
name: string;
- ID: number;
+ id: string;
icon: MakeCodeIcon;
requiredConfidence?: number;
+ createdAt: number;
+}
+
+export interface OldRecordingData {
+ ID: number;
+ data: XYZData;
+}
+
+export interface OldActionData
+ extends Omit {
+ ID: number;
+ recordings: OldRecordingData[];
}
export interface ActionData extends Action {
@@ -52,7 +65,7 @@ export const isDatasetUserFileFormat = (
}
if (
!("name" in item) ||
- !("ID" in item) ||
+ !("ID" in item || "id" in item) ||
!("recordings" in item) ||
!Array.isArray(item.recordings)
) {
@@ -63,7 +76,11 @@ export const isDatasetUserFileFormat = (
if (typeof rec !== "object" || rec === null) {
return false;
}
- if (!("data" in rec) || !("ID" in rec) || Array.isArray(rec.data)) {
+ if (
+ !("data" in rec) ||
+ !("ID" in rec || "id" in rec) ||
+ Array.isArray(rec.data)
+ ) {
return false;
}
const xyzData = rec.data as object;
diff --git a/src/pages/DataSamplesPage.tsx b/src/pages/DataSamplesPage.tsx
index 584aa3221..a8dccd9ad 100644
--- a/src/pages/DataSamplesPage.tsx
+++ b/src/pages/DataSamplesPage.tsx
@@ -36,7 +36,7 @@ const DataSamplesPage = () => {
useEffect(() => {
// If a user first connects on "Testing model" this can result in the tour when they return to the "Data samples" page.
if (isConnected) {
- tourStart({ name: "Connect" }, false);
+ void tourStart({ name: "Connect" }, false);
}
}, [isConnected, tourStart]);
@@ -48,9 +48,9 @@ const DataSamplesPage = () => {
}, [navigate]);
const trainButtonRef = useRef(null);
- const handleAddNewAction = useCallback(() => {
+ const handleAddNewAction = useCallback(async () => {
setSelectedActionIdx(actions.length);
- addNewAction();
+ await addNewAction();
}, [addNewAction, actions]);
useShortcut(keyboardShortcuts.addAction, handleAddNewAction, {
enabled: !isAddNewActionDisabled,
diff --git a/src/pages/ImportPage.tsx b/src/pages/ImportPage.tsx
index 6860adcb6..dd946a96b 100644
--- a/src/pages/ImportPage.tsx
+++ b/src/pages/ImportPage.tsx
@@ -25,7 +25,7 @@ import { useDeployment } from "../deployment";
import { useDefaultProjectName, useProject } from "../hooks/project-hooks";
import { useLogging } from "../logging/logging-hooks";
import { MicrobitOrgResource } from "../model";
-import { validateProjectName } from "../project-name";
+import { validateProjectName } from "../project-utils";
import { useStore } from "../store";
import { createDataSamplesPageUrl } from "../urls";
import { ButtonWithLoading } from "../components/ButtonWithLoading";
@@ -79,14 +79,14 @@ const ImportPage = () => {
const newSession = useStore((s) => s.newSession);
const timestamp = useStore((s) => s.timestamp);
- const handleStartSession = useCallback(() => {
+ const handleStartSession = useCallback(async () => {
if (project) {
- loadProject(project, name);
+ await loadProject(project, name);
navigate(createDataSamplesPageUrl());
} else {
// If no resource fetched, start as new empty session
// with provided project name
- newSession(name);
+ await newSession(name);
navigate(createDataSamplesPageUrl());
}
}, [loadProject, name, navigate, newSession, project]);
diff --git a/src/pages/NewPage.tsx b/src/pages/NewPage.tsx
index 5c66d2bf7..14ee40549 100644
--- a/src/pages/NewPage.tsx
+++ b/src/pages/NewPage.tsx
@@ -50,11 +50,11 @@ const NewPage = () => {
loadProjectRef.current?.chooseFile();
}, []);
- const handleStartNewSession = useCallback(() => {
+ const handleStartNewSession = useCallback(async () => {
logging.event({
type: "session-open-new",
});
- newSession();
+ await newSession();
navigate(createDataSamplesPageUrl());
}, [logging, newSession, navigate]);
diff --git a/src/pages/OpenSharedProjectPage.tsx b/src/pages/OpenSharedProjectPage.tsx
index 740e3517b..581daa443 100644
--- a/src/pages/OpenSharedProjectPage.tsx
+++ b/src/pages/OpenSharedProjectPage.tsx
@@ -74,9 +74,9 @@ const OpenSharedProjectPage = () => {
useProjectPreload(setName);
const { shareId } = useParams();
- const handleOpenProject = useCallback(() => {
+ const handleOpenProject = useCallback(async () => {
if (!header || !projectText) return;
- loadProject({ header: { ...header, name }, text: projectText }, name);
+ await loadProject({ header: { ...header, name }, text: projectText }, name);
logging.event({
type: "import-shared-project-complete",
detail: { shareId },
@@ -293,7 +293,7 @@ const PreviewData = ({ dataset }: PreviewDataProps) => {
{dataset.map((action) => (
{
const wasConnected = usePrevious(isConnected);
useEffect(() => {
if (isConnected) {
- tourStart(
+ void tourStart(
{ name: "TrainModel", delayedUntilConnection: wasConnected === false },
false
);
diff --git a/src/pages/Tour.tsx b/src/pages/Tour.tsx
index 524a4baed..8c215a575 100644
--- a/src/pages/Tour.tsx
+++ b/src/pages/Tour.tsx
@@ -50,11 +50,11 @@ const Tour = () => {
});
const ourRef = useRef();
- const handleTourComplete = useCallback(() => {
+ const handleTourComplete = useCallback(async () => {
if (!tourState) {
throw new Error("Must be a tour");
}
- tourComplete(tourState.markCompleted);
+ await tourComplete(tourState.markCompleted);
}, [tourComplete, tourState]);
useEffect(() => {
diff --git a/src/project-name.ts b/src/project-name.ts
deleted file mode 100644
index aa06f15c9..000000000
--- a/src/project-name.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * (c) 2024, Micro:bit Educational Foundation and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-export const untitledProjectName = "Untitled";
-export const validateProjectName = (name: string): boolean => {
- return name.trim().length > 0;
-};
diff --git a/src/project-utils.ts b/src/project-utils.ts
new file mode 100644
index 000000000..276676aa9
--- /dev/null
+++ b/src/project-utils.ts
@@ -0,0 +1,90 @@
+/**
+ * (c) 2024, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { MakeCodeProject } from "@microbit/makecode-embed";
+import { v4 as uuid } from "uuid";
+import { generateProject } from "./makecode/utils";
+import { ActionData, OldActionData } from "./model";
+
+export const untitledProjectName = "Untitled";
+
+export const validateProjectName = (name: string): boolean => {
+ return name.trim().length > 0;
+};
+
+export interface DataWindow {
+ duration: number; // Duration of recording
+ minSamples: number; // minimum number of samples for reliable detection (when detecting actions)
+ deviceSamplesPeriod: number;
+ deviceSamplesLength: number;
+}
+
+// Exported for testing.
+export const currentDataWindow: DataWindow = {
+ duration: 990,
+ minSamples: 44,
+ deviceSamplesPeriod: 20, // Default value for accelerometer period.
+ deviceSamplesLength: 50, // Number of samples required at 20 ms intervals for 1 second of data.
+};
+
+export const legacyDataWindow: DataWindow = {
+ duration: 1800,
+ minSamples: 80,
+ deviceSamplesPeriod: 25,
+ deviceSamplesLength: 80,
+};
+
+export const createUntitledProject = (): MakeCodeProject => ({
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ header: {
+ target: "microbit",
+ targetVersion: "7.1.2",
+ name: untitledProjectName,
+ meta: {},
+ editor: "blocksprj",
+ pubId: "",
+ pubCurrent: false,
+ _rev: null,
+ id: "45a3216b-e997-456c-bd4b-6550ddb81c4e",
+ recentUse: 1726493314,
+ modificationTime: 1726493314,
+ cloudUserId: null,
+ cloudCurrent: false,
+ cloudVersion: null,
+ cloudLastSyncTime: 0,
+ isDeleted: false,
+ githubCurrent: false,
+ saveId: null,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ } as any,
+ ...generateProject(
+ untitledProjectName,
+ { data: [] },
+ undefined,
+ currentDataWindow
+ ),
+});
+
+export const migrateLegacyActionData = (
+ actions: OldActionData[] | ActionData[]
+): ActionData[] => {
+ return actions.map((a) => {
+ if (Object.prototype.hasOwnProperty.call(a, "ID")) {
+ return {
+ name: a.name,
+ id: uuid(),
+ icon: a.icon,
+ requiredConfidence: a.requiredConfidence,
+ recordings: (a as OldActionData).recordings.map((r) => ({
+ id: uuid(),
+ data: r.data,
+ createdAt: r.ID,
+ })),
+ createdAt: (a as OldActionData).ID,
+ };
+ }
+ return a as ActionData;
+ });
+};
diff --git a/src/storage.ts b/src/storage.ts
new file mode 100644
index 000000000..87492b863
--- /dev/null
+++ b/src/storage.ts
@@ -0,0 +1,641 @@
+import { MakeCodeProject } from "@microbit/makecode-embed";
+import { DBSchema, IDBPDatabase, IDBPTransaction, openDB } from "idb";
+import orderBy from "lodash.orderby";
+import { Action, ActionData, RecordingData } from "./model";
+import {
+ createUntitledProject,
+ migrateLegacyActionData,
+} from "./project-utils";
+import { defaultSettings, Settings } from "./settings";
+import { prepActionForStorage } from "./storageUtils";
+import { v4 as uuid } from "uuid";
+
+const DATABASE_NAME = "ml";
+
+interface PersistedProjectData {
+ actions: ActionData[];
+ project: MakeCodeProject;
+ projectEdited: boolean;
+ settings: Settings;
+ timestamp: number | undefined;
+}
+
+interface MakeCodeData {
+ project: MakeCodeProject;
+ projectEdited: boolean;
+}
+
+enum DatabaseStore {
+ PROJECT_DATA = "project-data",
+ MAKECODE_DATA = "makecode-data",
+ RECORDINGS = "recordings",
+ ACTIONS = "actions",
+ SETTINGS = "settings",
+}
+
+export class StorageError extends Error {}
+
+const defaultCreatedAt = Date.now();
+const defaultProjectId = uuid();
+
+const defaultStoreData: Record<
+ | DatabaseStore.PROJECT_DATA
+ | DatabaseStore.SETTINGS
+ | DatabaseStore.MAKECODE_DATA,
+ { key: string; value: ProjectData | Settings | MakeCodeData }
+> = {
+ [DatabaseStore.PROJECT_DATA]: {
+ value: {
+ id: defaultProjectId,
+ createdAt: defaultCreatedAt,
+ updatedAt: defaultCreatedAt,
+ actionIds: [],
+ },
+ key: defaultProjectId,
+ },
+ [DatabaseStore.SETTINGS]: {
+ value: defaultSettings,
+ key: DatabaseStore.SETTINGS,
+ },
+ [DatabaseStore.MAKECODE_DATA]: {
+ value: {
+ project: createUntitledProject(),
+ projectEdited: false,
+ },
+ key: defaultProjectId,
+ },
+};
+
+export interface StoreAction extends Action {
+ recordingIds: string[];
+}
+
+interface ProjectData {
+ id: string;
+ timestamp?: number;
+ actionIds: string[];
+ createdAt: number;
+ updatedAt: number;
+}
+
+interface Schema extends DBSchema {
+ [DatabaseStore.PROJECT_DATA]: {
+ key: string;
+ value: ProjectData;
+ };
+ [DatabaseStore.ACTIONS]: {
+ key: string;
+ value: StoreAction;
+ };
+ [DatabaseStore.RECORDINGS]: {
+ key: string;
+ value: RecordingData;
+ };
+ [DatabaseStore.MAKECODE_DATA]: {
+ key: string;
+ value: MakeCodeData;
+ };
+ [DatabaseStore.SETTINGS]: {
+ key: string;
+ value: Settings;
+ };
+}
+
+export class Database {
+ dbPromise: Promise>;
+ projectId: string = defaultProjectId;
+ constructor() {
+ this.dbPromise = this.initialize();
+ }
+
+ initialize(): Promise> {
+ return openDB(DATABASE_NAME, 1, {
+ async upgrade(db) {
+ const localStorageProject = getLocalStorageProject();
+ for (const store of Object.values(DatabaseStore)) {
+ const objectStore = db.createObjectStore(store);
+ if (localStorageProject) {
+ switch (store) {
+ case DatabaseStore.ACTIONS: {
+ await Promise.all(
+ localStorageProject.actions.map((a) =>
+ objectStore.add(prepActionForStorage(a), a.id)
+ )
+ );
+ break;
+ }
+ case DatabaseStore.RECORDINGS: {
+ await Promise.all(
+ localStorageProject.actions
+ .flatMap((a) => a.recordings)
+ .map((r) => objectStore.add(r, r.id))
+ );
+ break;
+ }
+ case DatabaseStore.MAKECODE_DATA: {
+ await objectStore.add(
+ {
+ project: localStorageProject.project,
+ projectEdited: localStorageProject.projectEdited,
+ },
+ defaultProjectId
+ );
+ break;
+ }
+ case DatabaseStore.PROJECT_DATA: {
+ await objectStore.add(
+ {
+ id: defaultProjectId,
+ timestamp: localStorageProject.timestamp,
+ createdAt: defaultCreatedAt,
+ updatedAt: defaultCreatedAt,
+ actionIds: [],
+ },
+ defaultProjectId
+ );
+ break;
+ }
+ case DatabaseStore.SETTINGS: {
+ await objectStore.add(
+ localStorageProject.settings,
+ DatabaseStore.SETTINGS
+ );
+ break;
+ }
+ }
+ continue;
+ }
+ // Set default values if there is are data to migrate.
+ if (
+ store === DatabaseStore.PROJECT_DATA ||
+ store === DatabaseStore.MAKECODE_DATA ||
+ store === DatabaseStore.SETTINGS
+ ) {
+ const defaultData = defaultStoreData[store];
+ await objectStore.add(defaultData.value, defaultData.key);
+ }
+ }
+ localStorage.removeItem(DATABASE_NAME);
+ },
+ });
+ }
+
+ async newSession(
+ makeCodeData: MakeCodeData,
+ projectData: Partial
+ ): Promise {
+ this.projectId = uuid();
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.RECORDINGS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await recordingsStore.clear();
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await actionsStore.clear();
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.clear();
+ await makeCodeStore.add(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ await projectDataStore.clear();
+ await projectDataStore.add(
+ {
+ id: this.projectId,
+ actionIds: [],
+ createdAt: projectData.timestamp!,
+ updatedAt: projectData.timestamp!,
+ ...projectData,
+ },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async loadProject(id: string): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.RECORDINGS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ DatabaseStore.SETTINGS,
+ ],
+ "readwrite"
+ );
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(id));
+ // Ensure that this project will be loaded by default during next page load.
+ await projectDataStore.put(
+ { ...projectData, updatedAt: Date.now() },
+ this.projectId
+ );
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ const storeActions = orderBy(
+ assertDataArray(
+ await Promise.all(
+ projectData.actionIds.map((id) => actionsStore.get(id))
+ )
+ ),
+ "createdAt",
+ "asc"
+ );
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ const actions: ActionData[] = await Promise.all(
+ storeActions.map(async (action) => {
+ return {
+ id: action.id,
+ name: action.name,
+ icon: action.icon,
+ requiredConfidence: action.requiredConfidence,
+ createdAt: action.createdAt,
+ recordings: assertDataArray(
+ await Promise.all(
+ action.recordingIds.map((id) => recordingsStore.get(id))
+ )
+ ),
+ };
+ })
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ const makeCodeData = assertData(await makeCodeStore.get(id));
+ const settingsStore = tx.objectStore(DatabaseStore.SETTINGS);
+ const settings = assertData(
+ await settingsStore.get(DatabaseStore.SETTINGS)
+ );
+ await tx.done;
+ return {
+ actions,
+ project: makeCodeData.project,
+ projectEdited: makeCodeData.projectEdited,
+ timestamp: projectData.timestamp,
+ settings,
+ };
+ }
+
+ async importProject(
+ actions: ActionData[],
+ makeCodeData: MakeCodeData,
+ projectData: Partial,
+ settings: Settings
+ ): Promise {
+ this.projectId = uuid();
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.RECORDINGS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ DatabaseStore.SETTINGS,
+ ],
+ "readwrite"
+ );
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await recordingsStore.clear();
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await actionsStore.clear();
+ await Promise.all(
+ actions
+ .flatMap((a) => a.recordings)
+ .map((r) => recordingsStore.add(r, r.id))
+ );
+ await Promise.all(
+ actions.map((a) => actionsStore.add(prepActionForStorage(a), a.id))
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.clear();
+ await makeCodeStore.add(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ await projectDataStore.clear();
+ const createdAt = Date.now();
+ await projectDataStore.add(
+ {
+ id: this.projectId,
+ actionIds: actions.map((a) => a.id),
+ createdAt,
+ updatedAt: createdAt,
+ ...projectData,
+ },
+ this.projectId
+ );
+
+ const settingsStore = tx.objectStore(DatabaseStore.SETTINGS);
+ await settingsStore.put(settings, DatabaseStore.SETTINGS);
+ return tx.done;
+ }
+
+ async getLatestProjectId(): Promise {
+ const projectData = await (
+ await this.dbPromise
+ ).getAll(DatabaseStore.PROJECT_DATA);
+ const latestProjectData = orderBy(projectData, "updatedAt", "desc")[0];
+ this.projectId = latestProjectData.id;
+ return this.projectId;
+ }
+
+ async addAction(
+ action: ActionData,
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const actionToStore = prepActionForStorage(action);
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await actionsStore.add(actionToStore, actionToStore.id);
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+ projectData.actionIds.push(action.id);
+ projectData.updatedAt = Date.now();
+ await projectDataStore.put(projectData, this.projectId);
+ return tx.done;
+ }
+
+ async updateAction(
+ action: ActionData,
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const actionToStore = prepActionForStorage(action);
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await actionsStore.put(actionToStore, actionToStore.id);
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+ const updatedActionIds = Array.from(
+ new Set([action.id, ...projectData.actionIds])
+ );
+ await projectDataStore.put(
+ {
+ ...projectData,
+ actionIds: updatedActionIds,
+ updatedAt: Date.now(),
+ },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async updateActions(
+ actions: ActionData[],
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await Promise.all(
+ actions.map((action) =>
+ actionsStore.put(prepActionForStorage(action), action.id)
+ )
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+ const updatedActionIds = Array.from(
+ new Set(...actions.map((a) => a.id), projectData.actionIds)
+ );
+ await projectDataStore.put(
+ {
+ ...projectData,
+ actionIds: updatedActionIds,
+ updatedAt: Date.now(),
+ },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async deleteAction(
+ action: ActionData,
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.RECORDINGS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ await actionsStore.delete(action.id);
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await Promise.all(
+ action.recordings.map((r) => recordingsStore.delete(r.id))
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+ const updatedActionIds = projectData.actionIds.filter(
+ (id) => id !== action.id
+ );
+ await projectDataStore.put(
+ { ...projectData, actionIds: updatedActionIds, updatedAt: Date.now() },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async deleteAllActions(makeCodeData: MakeCodeData): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.RECORDINGS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ ],
+ "readwrite"
+ );
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ const actions = assertDataArray(
+ await Promise.all(projectData.actionIds.map((id) => actionsStore.get(id)))
+ );
+ await Promise.all(
+ projectData.actionIds.map((id) => actionsStore.delete(id))
+ );
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await Promise.all(
+ actions
+ .flatMap((a) => a.recordingIds)
+ .map((id) => recordingsStore.delete(id))
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ await projectDataStore.put(
+ { ...projectData, actionIds: [], updatedAt: Date.now() },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async addRecording(
+ recording: RecordingData,
+ action: ActionData,
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ DatabaseStore.RECORDINGS,
+ ],
+ "readwrite"
+ );
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ const actionToStore = prepActionForStorage(action);
+ await actionsStore.put(actionToStore, actionToStore.id);
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await recordingsStore.add(recording, recording.id);
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ await this.updateProjectInternal(tx);
+ return tx.done;
+ }
+
+ async deleteRecording(
+ key: string,
+ action: ActionData,
+ makeCodeData: MakeCodeData
+ ): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ DatabaseStore.RECORDINGS,
+ ],
+ "readwrite"
+ );
+ const actionsStore = tx.objectStore(DatabaseStore.ACTIONS);
+ const actionToStore = prepActionForStorage(action);
+ await actionsStore.put(actionToStore, actionToStore.id);
+ const recordingsStore = tx.objectStore(DatabaseStore.RECORDINGS);
+ await recordingsStore.delete(key);
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ await this.updateProjectInternal(tx);
+ return tx.done;
+ }
+
+ async updateMakeCodeProject(makeCodeData: MakeCodeData): Promise {
+ const tx = (await this.dbPromise).transaction(
+ [
+ DatabaseStore.ACTIONS,
+ DatabaseStore.MAKECODE_DATA,
+ DatabaseStore.PROJECT_DATA,
+ DatabaseStore.RECORDINGS,
+ ],
+ "readwrite"
+ );
+ const makeCodeStore = tx.objectStore(DatabaseStore.MAKECODE_DATA);
+ await makeCodeStore.put(makeCodeData, this.projectId);
+ await this.updateProjectInternal(tx);
+ return tx.done;
+ }
+
+ // TODO: TypeScript to ensure that a transaction with DatabaseStore.PROJECT_DATA is passed in.
+ private async updateProjectInternal(
+ tx: IDBPTransaction,
+ projectUpdates?: Partial
+ ): Promise {
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const projectData = assertData(await projectDataStore.get(this.projectId));
+ await projectDataStore.put(
+ {
+ ...projectData,
+ updatedAt: Date.now(),
+ ...projectUpdates,
+ },
+ this.projectId
+ );
+ }
+
+ // Currently unused.
+ async updateProject(project: Partial): Promise {
+ const tx = (await this.dbPromise).transaction(
+ DatabaseStore.PROJECT_DATA,
+ "readwrite"
+ );
+ const projectDataStore = tx.objectStore(DatabaseStore.PROJECT_DATA);
+ const storedProjectData = assertData(
+ await projectDataStore.get(this.projectId)
+ );
+ await projectDataStore.put(
+ {
+ ...storedProjectData,
+ ...project,
+ updatedAt: Date.now(),
+ },
+ this.projectId
+ );
+ return tx.done;
+ }
+
+ async updateSettings(settings: Settings): Promise {
+ return (await this.dbPromise).put(
+ DatabaseStore.SETTINGS,
+ settings,
+ DatabaseStore.SETTINGS
+ );
+ }
+}
+
+const assertData = (data: T) => {
+ if (!data) {
+ throw new StorageError("Failed to fetch expected data from storage");
+ }
+ return data;
+};
+
+const assertDataArray = (data: (undefined | T)[]) => {
+ data.forEach((item) => {
+ if (!item) {
+ throw new StorageError("Failed to fetch expected data from storage");
+ }
+ });
+ return data as T[];
+};
+
+export const getLocalStorageProject = (): PersistedProjectData | undefined => {
+ const data = localStorage.getItem(DATABASE_NAME);
+ if (!data) {
+ return undefined;
+ }
+ const dataToMigrate = JSON.parse(data) as { state: PersistedProjectData };
+ return {
+ ...dataToMigrate.state,
+ actions: migrateLegacyActionData(dataToMigrate.state.actions),
+ };
+};
diff --git a/src/storageUtils.ts b/src/storageUtils.ts
new file mode 100644
index 000000000..833fcc83a
--- /dev/null
+++ b/src/storageUtils.ts
@@ -0,0 +1,13 @@
+import { ActionData } from "./model";
+import { StoreAction } from "./storage";
+
+export const prepActionForStorage = (action: ActionData): StoreAction => {
+ return {
+ id: action.id,
+ name: action.name,
+ icon: action.icon,
+ requiredConfidence: action.requiredConfidence,
+ recordingIds: action.recordings.map((r) => r.id),
+ createdAt: action.createdAt,
+ };
+};
diff --git a/src/store.ts b/src/store.ts
index eada40e8c..5c75c1ac8 100644
--- a/src/store.ts
+++ b/src/store.ts
@@ -6,11 +6,14 @@
*/
import { MakeCodeProject } from "@microbit/makecode-embed/react";
import * as tf from "@tensorflow/tfjs";
+import { v4 as uuid } from "uuid";
import { create } from "zustand";
-import { devtools, persist } from "zustand/middleware";
+import { devtools } from "zustand/middleware";
import { useShallow } from "zustand/react/shallow";
+import { BufferedData } from "./buffered-data";
import { deployment } from "./deployment";
import { flags } from "./flags";
+import { createPromise, PromiseInfo } from "./hooks/use-promise-ref";
import { Logging } from "./logging/logging";
import {
filenames,
@@ -18,108 +21,72 @@ import {
generateProject,
} from "./makecode/utils";
import { Confidences, predict, trainModel } from "./ml";
+import { mlSettings } from "./mlConfig";
import {
+ Action,
+ ActionData,
DataSamplesView,
DownloadState,
DownloadStep,
- Action,
- ActionData,
+ EditorStartUp,
MicrobitToFlash,
+ OldActionData,
PostImportDialogState,
RecordingData,
SaveState,
SaveStep,
- TourTrigger,
+ tourSequence,
TourState,
- TrainModelDialogStage,
- EditorStartUp,
+ TourTrigger,
TourTriggerName,
- tourSequence,
+ TrainModelDialogStage,
} from "./model";
+import {
+ createUntitledProject,
+ currentDataWindow,
+ DataWindow,
+ legacyDataWindow,
+ migrateLegacyActionData,
+ untitledProjectName,
+} from "./project-utils";
import { defaultSettings, Settings } from "./settings";
+import { Database, StorageError } from "./storage";
+import { getTour as getTourSpec } from "./tours";
import { getTotalNumSamples } from "./utils/actions";
import { defaultIcons, MakeCodeIcon } from "./utils/icons";
-import { untitledProjectName } from "./project-name";
-import { mlSettings } from "./mlConfig";
-import { BufferedData } from "./buffered-data";
import { getDetectedAction } from "./utils/prediction";
-import { getTour as getTourSpec } from "./tours";
-import { createPromise, PromiseInfo } from "./hooks/use-promise-ref";
+
+export enum BroadcastChannelMessages {
+ RELOAD_PROJECT = "reload-project",
+ REMOVE_MODEL = "remove-model",
+}
+// Used to keep state synced between open tabs.
+const broadcastChannel = new BroadcastChannel("ml");
+
+const storage = new Database();
export const modelUrl = "indexeddb://micro:bit-ai-creator-model";
-const createFirstAction = () => ({
+const createFirstAction = (): ActionData => ({
icon: defaultIcons[0],
- ID: Date.now(),
+ id: uuid(),
name: "",
recordings: [],
+ createdAt: Date.now(),
});
-export interface DataWindow {
- duration: number; // Duration of recording
- minSamples: number; // minimum number of samples for reliable detection (when detecting actions)
- deviceSamplesPeriod: number;
- deviceSamplesLength: number;
-}
-
-const legacyDataWindow: DataWindow = {
- duration: 1800,
- minSamples: 80,
- deviceSamplesPeriod: 25,
- deviceSamplesLength: 80,
-};
-
-// Exported for testing.
-export const currentDataWindow: DataWindow = {
- duration: 990,
- minSamples: 44,
- deviceSamplesPeriod: 20, // Default value for accelerometer period.
- deviceSamplesLength: 50, // Number of samples required at 20 ms intervals for 1 second of data.
-};
-
interface PredictionResult {
confidences: Confidences;
detected: Action | undefined;
}
-const createUntitledProject = (): MakeCodeProject => ({
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- header: {
- target: "microbit",
- targetVersion: "7.1.2",
- name: untitledProjectName,
- meta: {},
- editor: "blocksprj",
- pubId: "",
- pubCurrent: false,
- _rev: null,
- id: "45a3216b-e997-456c-bd4b-6550ddb81c4e",
- recentUse: 1726493314,
- modificationTime: 1726493314,
- cloudUserId: null,
- cloudCurrent: false,
- cloudVersion: null,
- cloudLastSyncTime: 0,
- isDeleted: false,
- githubCurrent: false,
- saveId: null,
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- } as any,
- ...generateProject(
- untitledProjectName,
- { data: [] },
- undefined,
- currentDataWindow
- ),
-});
-
const updateProject = (
project: MakeCodeProject,
projectEdited: boolean,
actions: ActionData[],
model: tf.LayersModel | undefined,
dataWindow: DataWindow
-): Partial => {
+): Pick => {
const actionsData = { data: actions };
const updatedProject = {
...project,
@@ -222,39 +189,41 @@ export interface ConnectOptions {
}
export interface Actions {
- addNewAction(): void;
- addActionRecordings(id: ActionData["ID"], recs: RecordingData[]): void;
- deleteAction(id: ActionData["ID"]): void;
- setActionName(id: ActionData["ID"], name: string): void;
- setActionIcon(id: ActionData["ID"], icon: MakeCodeIcon): void;
- setRequiredConfidence(id: ActionData["ID"], value: number): void;
- deleteActionRecording(id: ActionData["ID"], recordingIdx: number): void;
- deleteAllActions(): void;
+ loadProjectFromStorage(id: string): Promise;
+ addNewAction(): Promise;
+ addActionRecording(id: string, recording: RecordingData): Promise;
+ deleteAction(action: ActionData): Promise;
+ setActionName(id: string, name: string): Promise;
+ setActionIcon(id: string, icon: MakeCodeIcon): Promise;
+ setRequiredConfidence(id: string, value: number): Promise;
+ deleteActionRecording(id: string, recordingId: string): Promise;
+ deleteAllActions(): Promise;
downloadDataset(): void;
dataCollectionMicrobitConnectionStart(options?: ConnectOptions): void;
dataCollectionMicrobitConnected(): void;
- loadDataset(actions: ActionData[]): void;
- loadProject(project: MakeCodeProject, name: string): void;
+ loadDataset(actions: ActionData[]): Promise;
+ loadProject(project: MakeCodeProject, name: string): Promise;
setEditorOpen(open: boolean): void;
recordingStarted(): void;
recordingStopped(): void;
- newSession(projectName?: string): void;
+ newSession(projectName?: string): Promise;
trainModelFlowStart: (callback?: () => void) => Promise;
closeTrainModelDialogs: () => void;
trainModel(): Promise;
- setSettings(update: Partial): void;
- setLanguage(languageId: string): void;
+ removeModel(): void;
+ setSettings(update: Partial): Promise;
+ setLanguage(languageId: string): Promise;
/**
* Resets the project.
*/
- resetProject(): void;
+ resetProject(): Promise;
/**
* Sets the project name.
*/
- setProjectName(name: string): void;
+ setProjectName(name: string): Promise;
/**
* When interacting outside of React to sync with MakeCode it's important to have
@@ -264,7 +233,7 @@ export interface Actions {
checkIfProjectNeedsFlush(): boolean;
checkIfLangChanged(): boolean;
langChangeFlushedToEditor(): void;
- editorChange(project: MakeCodeProject): void;
+ editorChange(project: MakeCodeProject): Promise;
editorReady(): void;
editorTimedOut(): void;
getEditorStartUp(): EditorStartUp;
@@ -274,19 +243,18 @@ export interface Actions {
projectFlushedToEditor(): void;
setDownload(state: DownloadState): void;
- // TODO: does the persistence slow this down? we could move it to another store
setDownloadFlashingProgress(value: number): void;
setSave(state: SaveState): void;
- tourStart(trigger: TourTrigger, manual?: boolean): void;
+ tourStart(trigger: TourTrigger, manual?: boolean): Promise;
tourNext(): void;
tourBack(): void;
- tourComplete(markCompleted: TourTriggerName[]): void;
+ tourComplete(markCompleted: TourTriggerName[]): Promise;
setPostConnectTourTrigger(trigger: TourTrigger | undefined): void;
- setDataSamplesView(view: DataSamplesView): void;
- setShowGraphs(show: boolean): void;
+ setDataSamplesView(view: DataSamplesView): Promise;
+ setShowGraphs(show: boolean): Promise;
setPostImportDialogState(state: PostImportDialogState): void;
startPredicting(buffer: BufferedData): void;
@@ -312,1015 +280,1138 @@ type Store = State & Actions;
const createMlStore = (logging: Logging) => {
return create()(
devtools(
- persist(
- (set, get) => ({
- timestamp: undefined,
- actions: [],
- dataWindow: currentDataWindow,
- isRecording: false,
- project: createUntitledProject(),
- projectLoadTimestamp: 0,
- download: {
- step: DownloadStep.None,
- microbitToFlash: MicrobitToFlash.Default,
- },
- downloadFlashingProgress: 0,
- save: {
- step: SaveStep.None,
- },
- projectEdited: false,
- settings: defaultSettings,
- model: undefined,
- isEditorOpen: false,
- isEditorReady: false,
- isEditorLoadingFile: false,
- isEditorImportingState: false,
- editorStartUp: "in-progress",
- editorStartUpTimestamp: Date.now(),
- editorPromises: {
- editorReadyPromise: createPromise(),
- editorContentLoadedPromise: createPromise(),
- },
- isEditorTimedOutDialogOpen: false,
- langChanged: false,
- appEditNeedsFlushToEditor: true,
- // This dialog flow spans two pages
- trainModelDialogStage: TrainModelDialogStage.Closed,
- trainModelProgress: 0,
- dataSamplesView: DataSamplesView.Graph,
- postImportDialogState: PostImportDialogState.None,
- predictionInterval: undefined,
- predictionResult: undefined,
- isLanguageDialogOpen: false,
- isSettingsDialogOpen: false,
- isConnectFirstDialogOpen: false,
- isAboutDialogOpen: false,
- isFeedbackFormOpen: false,
- isDeleteAllActionsDialogOpen: false,
- isNameProjectDialogOpen: false,
- isRecordingDialogOpen: false,
- isConnectToRecordDialogOpen: false,
- isDeleteActionDialogOpen: false,
- isIncompatibleEditorDeviceDialogOpen: false,
-
- setSettings(update: Partial) {
- set(
- ({ settings }) => ({
- settings: {
- ...settings,
- ...update,
- },
- }),
- false,
- "setSettings"
- );
- },
-
- setLanguage(languageId: string) {
- const currLanguageId = get().settings.languageId;
- if (languageId === currLanguageId) {
- // No need to update language if language is the same.
- // MakeCode does not reload.
- return;
- }
- set(
- ({ settings }) => ({
- settings: {
- ...settings,
- languageId,
- },
- editorPromises: {
- editorReadyPromise: createPromise(),
- editorContentLoadedPromise: createPromise(),
- },
- isEditorReady: false,
- editorStartUp: "in-progress",
- editorStartUpTimestamp: Date.now(),
- langChanged: true,
- }),
- false,
- "setLanguage"
- );
- },
-
- newSession(projectName?: string) {
- const untitledProject = createUntitledProject();
- set(
- {
- actions: [],
- dataWindow: currentDataWindow,
- model: undefined,
- project: projectName
- ? renameProject(untitledProject, projectName)
- : untitledProject,
- projectEdited: false,
- appEditNeedsFlushToEditor: true,
- timestamp: Date.now(),
+ (set, get) => ({
+ timestamp: undefined,
+ actions: [],
+ dataWindow: currentDataWindow,
+ isRecording: false,
+ project: createUntitledProject(),
+ projectLoadTimestamp: 0,
+ download: {
+ step: DownloadStep.None,
+ microbitToFlash: MicrobitToFlash.Default,
+ },
+ downloadFlashingProgress: 0,
+ save: {
+ step: SaveStep.None,
+ },
+ projectEdited: false,
+ settings: defaultSettings,
+ model: undefined,
+ isEditorOpen: false,
+ isEditorReady: false,
+ isEditorLoadingFile: false,
+ isEditorImportingState: false,
+ editorStartUp: "in-progress",
+ editorStartUpTimestamp: Date.now(),
+ editorPromises: {
+ editorReadyPromise: createPromise(),
+ editorContentLoadedPromise: createPromise(),
+ },
+ isEditorTimedOutDialogOpen: false,
+ langChanged: false,
+ appEditNeedsFlushToEditor: true,
+ // This dialog flow spans two pages
+ trainModelDialogStage: TrainModelDialogStage.Closed,
+ trainModelProgress: 0,
+ dataSamplesView: DataSamplesView.Graph,
+ postImportDialogState: PostImportDialogState.None,
+ predictionInterval: undefined,
+ predictionResult: undefined,
+ isLanguageDialogOpen: false,
+ isSettingsDialogOpen: false,
+ isConnectFirstDialogOpen: false,
+ isAboutDialogOpen: false,
+ isFeedbackFormOpen: false,
+ isDeleteAllActionsDialogOpen: false,
+ isNameProjectDialogOpen: false,
+ isRecordingDialogOpen: false,
+ isConnectToRecordDialogOpen: false,
+ isDeleteActionDialogOpen: false,
+ isIncompatibleEditorDeviceDialogOpen: false,
+
+ async setSettings(update: Partial) {
+ const { settings } = get();
+ const updatedSettings = {
+ ...settings,
+ ...update,
+ };
+ set({ settings: updatedSettings }, false, "setSettings");
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
+ );
+ },
+
+ async setLanguage(languageId: string) {
+ const { settings } = get();
+ if (languageId === settings.languageId) {
+ // No need to update language if language is the same.
+ // MakeCode does not reload.
+ return;
+ }
+ const updatedSettings = {
+ ...settings,
+ languageId,
+ };
+ set(
+ {
+ settings: updatedSettings,
+ editorPromises: {
+ editorReadyPromise: createPromise(),
+ editorContentLoadedPromise: createPromise(),
},
- false,
- "newSession"
- );
- },
-
- setEditorOpen(open: boolean) {
- set(
- ({ download }) => ({
- isEditorOpen: open,
- download: {
- ...download,
- usbDevice: undefined,
- },
- }),
- false,
- "setEditorOpen"
- );
- },
-
- recordingStarted() {
- set({ isRecording: true }, false, "recordingStarted");
- },
- recordingStopped() {
- set({ isRecording: false }, false, "recordingStopped");
- },
-
- addNewAction() {
- return set(({ project, projectEdited, actions, dataWindow }) => {
- const newActions = [
- ...actions,
- {
- icon: actionIcon({
- isFirstAction: actions.length === 0,
- existingActions: actions,
- }),
- ID: Date.now(),
- name: "",
- recordings: [],
- },
- ];
- return {
- actions: newActions,
- model: undefined,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- undefined,
- dataWindow
- ),
- };
- });
- },
-
- addActionRecordings(id: ActionData["ID"], recs: RecordingData[]) {
- return set(({ actions, dataWindow, project, projectEdited }) => {
- const updatedActions = actions.map((action) => {
- if (action.ID === id) {
- return {
- ...action,
- recordings: [...recs, ...action.recordings],
- };
- }
- return action;
- });
- return {
- actions: updatedActions,
- model: undefined,
- ...updateProject(
- project,
- projectEdited,
- updatedActions,
- undefined,
- dataWindow
- ),
- };
- });
- },
-
- deleteAction(id: ActionData["ID"]) {
- return set(({ project, projectEdited, actions, dataWindow }) => {
- const newActions = actions.filter((a) => a.ID !== id);
- const newDataWindow =
- newActions.length === 0 ? currentDataWindow : dataWindow;
- return {
- actions:
- newActions.length === 0 ? [createFirstAction()] : newActions,
- dataWindow: newDataWindow,
- model: undefined,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- undefined,
- newDataWindow
- ),
- };
- });
- },
-
- setActionName(id: ActionData["ID"], name: string) {
- return set(
- ({ project, projectEdited, actions, model, dataWindow }) => {
- const newActions = actions.map((action) =>
- id !== action.ID ? action : { ...action, name }
- );
- return {
- actions: newActions,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- model,
- dataWindow
- ),
- };
- }
- );
- },
-
- setActionIcon(id: ActionData["ID"], icon: MakeCodeIcon) {
- return set(
- ({ project, projectEdited, actions, model, dataWindow }) => {
- // If we're changing the action to use an icon that's already in use
- // then we update the action that's using the icon to use the action's current icon
- const currentIcon = actions.find((a) => a.ID === id)?.icon;
- const newActions = actions.map((action) => {
- if (action.ID === id) {
- return { ...action, icon };
- } else if (
- action.ID !== id &&
- action.icon === icon &&
- currentIcon
- ) {
- return { ...action, icon: currentIcon };
- }
- return action;
- });
- return {
- actions: newActions,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- model,
- dataWindow
- ),
- };
- }
- );
- },
-
- setRequiredConfidence(id: ActionData["ID"], value: number) {
- return set(
- ({ project, projectEdited, actions, model, dataWindow }) => {
- const newActions = actions.map((a) =>
- id !== a.ID ? a : { ...a, requiredConfidence: value }
- );
- return {
- actions: newActions,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- model,
- dataWindow
- ),
- };
- }
- );
- },
-
- deleteActionRecording(id: ActionData["ID"], recordingIdx: number) {
- return set(({ project, projectEdited, actions, dataWindow }) => {
- const newActions = actions.map((action) => {
- if (id !== action.ID) {
- return action;
- }
- const recordings = action.recordings.filter(
- (_r, i) => i !== recordingIdx
- );
- return { ...action, recordings };
- });
- const numRecordings = newActions.reduce(
- (acc, curr) => acc + curr.recordings.length,
- 0
- );
- const newDataWindow =
- numRecordings === 0 ? currentDataWindow : dataWindow;
- return {
- actions: newActions,
- dataWindow: newDataWindow,
- model: undefined,
- ...updateProject(
- project,
- projectEdited,
- newActions,
- undefined,
- newDataWindow
- ),
- };
- });
- },
-
- deleteAllActions() {
- return set(({ project, projectEdited }) => ({
- actions: [createFirstAction()],
+ isEditorReady: false,
+ editorStartUp: "in-progress",
+ editorStartUpTimestamp: Date.now(),
+ langChanged: true,
+ },
+ false,
+ "setLanguage"
+ );
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
+ );
+ },
+
+ async newSession(projectName?: string) {
+ const untitledProject = createUntitledProject();
+ const timestamp = Date.now();
+ const projectEdited = false;
+ const newProject = projectName
+ ? renameProject(untitledProject, projectName)
+ : untitledProject;
+ set(
+ {
+ actions: [],
dataWindow: currentDataWindow,
model: undefined,
- ...updateProject(
- project,
+ project: newProject,
+ projectEdited,
+ appEditNeedsFlushToEditor: true,
+ timestamp,
+ },
+ false,
+ "newSession"
+ );
+ await storageWithErrHandling(() =>
+ storage.newSession(
+ {
+ project: newProject,
projectEdited,
- [],
- undefined,
- currentDataWindow
- ),
- }));
- },
-
- downloadDataset() {
- const { actions, project } = get();
- const a = document.createElement("a");
- a.setAttribute(
- "href",
- "data:application/json;charset=utf-8," +
- encodeURIComponent(JSON.stringify(actions, null, 2))
- );
- a.setAttribute(
- "download",
- `${project.header?.name ?? untitledProjectName}-data-samples.json`
- );
- a.style.display = "none";
- a.click();
- },
-
- loadDataset(newActions: ActionData[]) {
- set(({ project, projectEdited, settings }) => {
- const dataWindow = getDataWindowFromActions(newActions);
- return {
- settings: {
- ...settings,
- toursCompleted: Array.from(
- new Set([...settings.toursCompleted, "DataSamplesRecorded"])
- ),
- },
- actions: (() => {
- const copy = newActions.map((a) => ({ ...a }));
- for (const a of copy) {
- if (!a.icon) {
- a.icon = actionIcon({
- isFirstAction: false,
- existingActions: copy,
- });
- }
- }
- return copy;
- })(),
- dataWindow,
- model: undefined,
- timestamp: Date.now(),
- ...updateProject(
- project,
- projectEdited,
- newActions,
- undefined,
- dataWindow
- ),
- };
- });
- },
-
- /**
- * Generally project loads go via MakeCode as it reads the hex but when we open projects
- * from microbit.org we have the JSON already and use this route.
- */
- loadProject(project: MakeCodeProject, name: string) {
- const newActions = getActionsFromProject(project);
- set(({ settings, project: prevProject }) => {
- project = renameProject(project, name);
- project = {
- ...project,
- header: {
- ...project.header!,
- // .org projects have a partial header with no id which causes MakeCode sadness
- id: project.header?.id ?? prevProject.header!.id,
- },
- };
- const timestamp = Date.now();
- return {
- settings: {
- ...settings,
- toursCompleted: Array.from(
- new Set([...settings.toursCompleted, "DataSamplesRecorded"])
- ),
- },
- actions: newActions,
- dataWindow: getDataWindowFromActions(newActions),
- model: undefined,
- project,
- projectEdited: true,
- appEditNeedsFlushToEditor: true,
- timestamp,
- // We don't update projectLoadTimestamp here as we don't want a toast notification for .org import
+ },
+ { timestamp }
+ )
+ );
+ },
+
+ setEditorOpen(open: boolean) {
+ set(
+ ({ download }) => ({
+ isEditorOpen: open,
+ download: {
+ ...download,
+ usbDevice: undefined,
+ },
+ }),
+ false,
+ "setEditorOpen"
+ );
+ },
+
+ recordingStarted() {
+ set({ isRecording: true }, false, "recordingStarted");
+ },
+ recordingStopped() {
+ set({ isRecording: false }, false, "recordingStopped");
+ },
+
+ async loadProjectFromStorage(id: string) {
+ const persistedData = await storage.loadProject(id);
+ set({
+ // Get data window from actions on app load.
+ dataWindow: getDataWindowFromActions(persistedData.actions),
+ ...persistedData,
+ });
+ },
+
+ async addNewAction() {
+ const { actions, dataWindow, project, projectEdited } = get();
+ const newAction: ActionData = {
+ icon: actionIcon({
+ isFirstAction: actions.length === 0,
+ existingActions: actions,
+ }),
+ id: uuid(),
+ name: "",
+ recordings: [],
+ createdAt: Date.now(),
+ };
+ const updatedActions = [...actions, newAction];
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ updatedActions,
+ undefined,
+ dataWindow
+ );
+ set({
+ actions: updatedActions,
+ model: undefined,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.addAction(newAction, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async addActionRecording(id: string, recording: RecordingData) {
+ const { actions, dataWindow, project, projectEdited } = get();
+ let updatedAction: ActionData;
+ const updatedActions = actions.map((action) => {
+ if (action.id === id) {
+ updatedAction = {
+ ...action,
+ recordings: [recording, ...action.recordings],
};
- });
- },
-
- closeTrainModelDialogs() {
- set({
- trainModelDialogStage: TrainModelDialogStage.Closed,
- });
- },
-
- async trainModelFlowStart(callback?: () => void) {
- const {
- settings: { showPreTrainHelp },
- actions,
- trainModel,
- } = get();
- if (!hasSufficientDataForTraining(actions)) {
- set({
- trainModelDialogStage: TrainModelDialogStage.InsufficientData,
- });
- } else if (showPreTrainHelp) {
- set({
- trainModelDialogStage: TrainModelDialogStage.Help,
+ return updatedAction;
+ }
+ return action;
+ });
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ updatedActions,
+ undefined,
+ dataWindow
+ );
+ set({
+ actions: updatedActions,
+ model: undefined,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.addRecording(recording, updatedAction, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async deleteAction(action: ActionData) {
+ const { actions, dataWindow, project, projectEdited } = get();
+ const newActions = actions.filter((a) => a.id !== action.id);
+ const newDataWindow =
+ newActions.length === 0 ? currentDataWindow : dataWindow;
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ newActions,
+ undefined,
+ newDataWindow
+ );
+ set({
+ actions:
+ newActions.length === 0 ? [createFirstAction()] : newActions,
+ dataWindow: newDataWindow,
+ model: undefined,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.deleteAction(action, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async setActionName(id: string, name: string) {
+ const { actions, dataWindow, project, projectEdited, model } = get();
+ let updatedAction: ActionData;
+ const newActions = actions.map((action) => {
+ if (id === action.id) {
+ updatedAction = { ...action, name };
+ return updatedAction;
+ }
+ return action;
+ });
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ newActions,
+ model,
+ dataWindow
+ );
+ set({
+ actions: newActions,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateAction(updatedAction, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async setActionIcon(id: string, icon: MakeCodeIcon) {
+ const { actions, dataWindow, project, projectEdited, model } = get();
+ const updatedActions: ActionData[] = [];
+ // If we're changing the action to use an icon that's already in use
+ // then we update the action that's using the icon to use the action's current icon
+ const currentIcon = actions.find((a) => a.id === id)?.icon;
+ const newActions = actions.map((action) => {
+ if (action.id === id) {
+ const updatedAction = { ...action, icon };
+ updatedActions.push(updatedAction);
+ return updatedAction;
+ } else if (
+ action.id !== id &&
+ action.icon === icon &&
+ currentIcon
+ ) {
+ const updatedAction = { ...action, icon: currentIcon };
+ updatedActions.push(updatedAction);
+ return updatedAction;
+ }
+ return action;
+ });
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ newActions,
+ model,
+ dataWindow
+ );
+ set({
+ actions: newActions,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateActions(updatedActions, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async setRequiredConfidence(id: string, value: number) {
+ const { actions, dataWindow, project, projectEdited, model } = get();
+ let updatedAction: ActionData;
+ const newActions = actions.map((action) => {
+ if (id === action.id) {
+ updatedAction = { ...action, requiredConfidence: value };
+ return updatedAction;
+ }
+ return action;
+ });
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ newActions,
+ model,
+ dataWindow
+ );
+ set({
+ actions: newActions,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateAction(updatedAction, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async deleteActionRecording(id: string, recordingId: string) {
+ const { actions, dataWindow, project, projectEdited } = get();
+ let updatedAction: ActionData;
+ const updatedActions = actions.map((action) => {
+ if (id !== action.id) {
+ return action;
+ }
+ const recordings = action.recordings.filter(
+ (recording) => recording.id !== recordingId
+ );
+ updatedAction = { ...action, recordings };
+ return updatedAction;
+ });
+ const numRecordings = updatedActions.reduce(
+ (acc, curr) => acc + curr.recordings.length,
+ 0
+ );
+ const newDataWindow =
+ numRecordings === 0 ? currentDataWindow : dataWindow;
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ updatedActions,
+ undefined,
+ newDataWindow
+ );
+ set({
+ actions: updatedActions,
+ dataWindow: newDataWindow,
+ model: undefined,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.deleteRecording(recordingId.toString(), updatedAction, {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ async deleteAllActions() {
+ const { project, projectEdited } = get();
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ [],
+ undefined,
+ currentDataWindow
+ );
+ set({
+ actions: [createFirstAction()],
+ dataWindow: currentDataWindow,
+ model: undefined,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.deleteAllActions({
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ },
+
+ downloadDataset() {
+ const { actions, project } = get();
+ const a = document.createElement("a");
+ a.setAttribute(
+ "href",
+ "data:application/json;charset=utf-8," +
+ encodeURIComponent(JSON.stringify(actions, null, 2))
+ );
+ a.setAttribute(
+ "download",
+ `${project.header?.name ?? untitledProjectName}-data-samples.json`
+ );
+ a.style.display = "none";
+ a.click();
+ },
+
+ async loadDataset(newActions: ActionData[]) {
+ const { settings, project, projectEdited } = get();
+ const updatedSettings: Settings = {
+ ...settings,
+ toursCompleted: Array.from(
+ new Set([...settings.toursCompleted, "DataSamplesRecorded"])
+ ),
+ };
+ const newActionsWithIcons = migrateLegacyActionData(newActions);
+ // Older datasets did not have icons. Add icons to actions where these are missing.
+ newActionsWithIcons.forEach((a) => {
+ if (!a.icon) {
+ a.icon = actionIcon({
+ isFirstAction: false,
+ existingActions: newActionsWithIcons,
});
- } else {
- await trainModel();
- callback?.();
}
- },
-
- async trainModel() {
- const { actions, dataWindow } = get();
- logging.event({
- type: "model-train",
- detail: {
- actions: actions.length,
- samples: getTotalNumSamples(actions),
+ });
+ const timestamp = Date.now();
+ const dataWindow = getDataWindowFromActions(newActionsWithIcons);
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ newActionsWithIcons,
+ undefined,
+ dataWindow
+ );
+ set({
+ settings: updatedSettings,
+ actions: newActionsWithIcons,
+ dataWindow,
+ model: undefined,
+ timestamp,
+ ...updatedProject,
+ });
+ await storageWithErrHandling(() =>
+ storage.importProject(
+ newActionsWithIcons,
+ {
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
},
+ {
+ timestamp,
+ },
+ updatedSettings
+ )
+ );
+ },
+
+ /**
+ * Generally project loads go via MakeCode as it reads the hex but when we open projects
+ * from microbit.org we have the JSON already and use this route.
+ */
+ async loadProject(project: MakeCodeProject, name: string) {
+ const { settings } = get();
+ const updatedSettings: Settings = {
+ ...settings,
+ toursCompleted: Array.from(
+ new Set([...settings.toursCompleted, "DataSamplesRecorded"])
+ ),
+ };
+ const newActions = getActionsFromProject(project);
+ const timestamp = Date.now();
+ const projectEdited = true;
+ set(({ project: prevProject }) => {
+ project = renameProject(project, name);
+ project = {
+ ...project,
+ header: {
+ ...project.header!,
+ // .org projects have a partial header with no id which causes MakeCode sadness
+ id: project.header?.id ?? prevProject.header!.id,
+ },
+ };
+ return {
+ settings: updatedSettings,
+ actions: newActions,
+ dataWindow: getDataWindowFromActions(newActions),
+ model: undefined,
+ project,
+ projectEdited,
+ appEditNeedsFlushToEditor: true,
+ timestamp,
+ // We don't update projectLoadTimestamp here as we don't want a toast notification for .org import
+ };
+ });
+ await storageWithErrHandling(() =>
+ storage.importProject(
+ newActions,
+ { project, projectEdited },
+ { timestamp },
+ updatedSettings
+ )
+ );
+ },
+
+ closeTrainModelDialogs() {
+ set({
+ trainModelDialogStage: TrainModelDialogStage.Closed,
+ });
+ },
+
+ async trainModelFlowStart(callback?: () => void) {
+ const {
+ settings: { showPreTrainHelp },
+ actions,
+ trainModel,
+ } = get();
+ if (!hasSufficientDataForTraining(actions)) {
+ set({
+ trainModelDialogStage: TrainModelDialogStage.InsufficientData,
});
- const actionName = "trainModel";
+ } else if (showPreTrainHelp) {
set({
- trainModelDialogStage: TrainModelDialogStage.TrainingInProgress,
- trainModelProgress: 0,
+ trainModelDialogStage: TrainModelDialogStage.Help,
});
- // Delay so we get UI change before training starts. The initial part of training
- // can block the UI. 50 ms is not sufficient, so use 100 for now.
- await new Promise((res) => setTimeout(res, 100));
- const trainingResult = await trainModel(
- actions,
- dataWindow,
- (trainModelProgress) =>
- set({ trainModelProgress }, false, "trainModelProgress")
- );
- const model = trainingResult.error
- ? undefined
- : trainingResult.model;
- set(
- ({ project, projectEdited }) => ({
- model,
- trainModelDialogStage: model
- ? TrainModelDialogStage.Closed
- : TrainModelDialogStage.TrainingError,
- ...updateProject(
- project,
- projectEdited,
- actions,
- model,
- dataWindow
- ),
- }),
- false,
- actionName
- );
- return !trainingResult.error;
- },
-
- resetProject(): void {
- const {
- project: previousProject,
- actions,
+ } else {
+ await trainModel();
+ callback?.();
+ }
+ },
+
+ async trainModel() {
+ const { actions, dataWindow, project, projectEdited } = get();
+ logging.event({
+ type: "model-train",
+ detail: {
+ actions: actions.length,
+ samples: getTotalNumSamples(actions),
+ },
+ });
+ const actionName = "trainModel";
+ set({
+ trainModelDialogStage: TrainModelDialogStage.TrainingInProgress,
+ trainModelProgress: 0,
+ });
+ // Delay so we get UI change before training starts. The initial part of training
+ // can block the UI. 50 ms is not sufficient, so use 100 for now.
+ await new Promise((res) => setTimeout(res, 100));
+ const trainingResult = await trainModel(
+ actions,
+ dataWindow,
+ (trainModelProgress) =>
+ set({ trainModelProgress }, false, "trainModelProgress")
+ );
+ const model = trainingResult.error ? undefined : trainingResult.model;
+ const updatedProject = updateProject(
+ project,
+ projectEdited,
+ actions,
+ model,
+ dataWindow
+ );
+ set(
+ {
model,
- dataWindow,
- } = get();
- const newProject = {
- ...previousProject,
- text: {
- ...previousProject.text,
- ...generateProject(
- previousProject.header?.name ?? untitledProjectName,
- { data: actions },
- model,
- dataWindow
- ).text,
- },
- };
- set(
- {
- project: newProject,
- projectEdited: false,
- appEditNeedsFlushToEditor: true,
- },
- false,
- "resetProject"
- );
- },
-
- setProjectName(name: string): void {
- return set(
- ({ project }) => {
- return {
- appEditNeedsFlushToEditor: true,
- project: renameProject(project, name),
- };
- },
- false,
- "setProjectName"
- );
- },
-
- checkIfProjectNeedsFlush() {
- return get().appEditNeedsFlushToEditor;
- },
-
- checkIfLangChanged() {
- return get().langChanged;
- },
-
- getCurrentProject() {
- return get().project;
- },
-
- editorReady() {
- set(
- { isEditorReady: true, editorStartUp: "done" },
- false,
- "editorReady"
- );
- },
-
- editorTimedOut() {
- set({ editorStartUp: "timed out" }, false, "editorTimedOut");
- },
-
- getEditorStartUp() {
- return get().editorStartUp;
- },
-
- setIsEditorTimedOutDialogOpen(isOpen: boolean) {
- set(
- { isEditorTimedOutDialogOpen: isOpen },
- false,
- "setIsEditorTimedOutDialogOpen"
- );
- },
-
- editorChange(newProject: MakeCodeProject) {
- // Notes on past issues with the MakeCode integration:
- //
- // We update MakeCode only as needed. However, it loads in the
- // background because we need it to be ready. This means it will
- // have the initial project from the state open. So we must be sure
- // to update MakeCode before "Edit in MakeCode" and "Save" actions.
- //
- // MakeCode has a visibility listener that will cause it to re-run
- // its initialization when its tab becomes hidden/visible. We aim to
- // ignore this when MakeCode is closed. When MakeCode is open we'll
- // have up-to-date state to reinit MakeCode with. In the past this
- // has caused us to update app state with old data from MakeCode.
- //
- // It's too slow/async from a UI perspective to rely on only
- // understanding project contents via editorChange as they're
- // delayed by MakeCode load and then the async nature of loading a
- // project.
- //
- // We have no choice but to write to MakeCode and wait for the
- // project data in editorChange when loading a hex file.
-
- const actionName = "editorChange";
- set(
- (state) => {
- const {
- project: prevProject,
- isEditorOpen,
- isEditorImportingState,
- isEditorLoadingFile,
- settings,
- } = state;
- const newProjectHeader = newProject.header!.id;
- const previousProjectHeader = prevProject.header!.id;
- if (
- (isEditorLoadingFile ||
- isEditorOpen ||
- isEditorImportingState) &&
- newProjectHeader !== previousProjectHeader
- ) {
- if (isEditorImportingState) {
- // It's a change but we originated it so state is in sync.
- logging.log(
- `[MakeCode] Ignored header change due to us syncing state. ID change: ${prevProject.header?.id} -> ${newProject.header?.id}`
- );
- return {
- isEditorImportingState: false,
- // Still need to update this for the new header id.
- project: newProject,
- };
- } else {
- // It's a change that originated in MakeCode, e.g. a hex load, so update our state.
- logging.log(
- `[MakeCode] Updating state from MakeCode header change. ID change: ${prevProject.header?.id} -> ${newProject.header?.id}`
- );
- const timestamp = Date.now();
- const newActions = getActionsFromProject(newProject);
- return {
- settings: {
- ...settings,
- toursCompleted: Array.from(
- new Set([
- ...settings.toursCompleted,
- "DataSamplesRecorded",
- ])
- ),
- },
- project: newProject,
- projectLoadTimestamp: timestamp,
- timestamp,
- // New project loaded externally so we can't know whether its edited.
- projectEdited: true,
- actions: newActions,
- dataWindow: getDataWindowFromActions(newActions),
- model: undefined,
- isEditorOpen: false,
- isEditorLoadingFile: false,
- };
- }
- } else if (isEditorOpen) {
+ trainModelDialogStage: model
+ ? TrainModelDialogStage.Closed
+ : TrainModelDialogStage.TrainingError,
+ ...updatedProject,
+ },
+ false,
+ actionName
+ );
+ await storageWithErrHandling(() =>
+ storage.updateMakeCodeProject({
+ project: updatedProject.project,
+ projectEdited: updatedProject.projectEdited,
+ })
+ );
+ return !trainingResult.error;
+ },
+
+ removeModel(): void {
+ set({
+ model: undefined,
+ });
+ },
+
+ async resetProject(): Promise {
+ const {
+ project: previousProject,
+ actions,
+ model,
+ dataWindow,
+ } = get();
+ const newProject = {
+ ...previousProject,
+ text: {
+ ...previousProject.text,
+ ...generateProject(
+ previousProject.header?.name ?? untitledProjectName,
+ { data: actions },
+ model,
+ dataWindow
+ ).text,
+ },
+ };
+ set(
+ {
+ project: newProject,
+ projectEdited: false,
+ appEditNeedsFlushToEditor: true,
+ },
+ false,
+ "resetProject"
+ );
+ await storageWithErrHandling(() =>
+ storage.updateMakeCodeProject({
+ project: newProject,
+ projectEdited: false,
+ })
+ );
+ },
+
+ async setProjectName(name: string): Promise {
+ const { project, projectEdited } = get();
+ const updatedProject = renameProject(project, name);
+ set(
+ {
+ appEditNeedsFlushToEditor: true,
+ project: updatedProject,
+ },
+ false,
+ "setProjectName"
+ );
+ await storageWithErrHandling(() =>
+ storage.updateMakeCodeProject({
+ project: updatedProject,
+ projectEdited,
+ })
+ );
+ },
+
+ checkIfProjectNeedsFlush() {
+ return get().appEditNeedsFlushToEditor;
+ },
+
+ checkIfLangChanged() {
+ return get().langChanged;
+ },
+
+ getCurrentProject() {
+ return get().project;
+ },
+
+ editorReady() {
+ set(
+ { isEditorReady: true, editorStartUp: "done" },
+ false,
+ "editorReady"
+ );
+ },
+
+ editorTimedOut() {
+ set({ editorStartUp: "timed out" }, false, "editorTimedOut");
+ },
+
+ getEditorStartUp() {
+ return get().editorStartUp;
+ },
+
+ setIsEditorTimedOutDialogOpen(isOpen: boolean) {
+ set(
+ { isEditorTimedOutDialogOpen: isOpen },
+ false,
+ "setIsEditorTimedOutDialogOpen"
+ );
+ },
+
+ async editorChange(newProject: MakeCodeProject) {
+ // Notes on past issues with the MakeCode integration:
+ //
+ // We update MakeCode only as needed. However, it loads in the
+ // background because we need it to be ready. This means it will
+ // have the initial project from the state open. So we must be sure
+ // to update MakeCode before "Edit in MakeCode" and "Save" actions.
+ //
+ // MakeCode has a visibility listener that will cause it to re-run
+ // its initialization when its tab becomes hidden/visible. We aim to
+ // ignore this when MakeCode is closed. When MakeCode is open we'll
+ // have up-to-date state to reinit MakeCode with. In the past this
+ // has caused us to update app state with old data from MakeCode.
+ //
+ // It's too slow/async from a UI perspective to rely on only
+ // understanding project contents via editorChange as they're
+ // delayed by MakeCode load and then the async nature of loading a
+ // project.
+ //
+ // We have no choice but to write to MakeCode and wait for the
+ // project data in editorChange when loading a hex file.
+
+ const actionName = "editorChange";
+ const { settings, timestamp, projectEdited } = get();
+ const updatedSettings: Settings = {
+ ...settings,
+ toursCompleted: Array.from(
+ new Set([...settings.toursCompleted, "DataSamplesRecorded"])
+ ),
+ };
+ let updatedTimestamp = timestamp;
+ let updatedProjectEdited = projectEdited;
+ let newActions: ActionData[] | undefined;
+ let importProject = false;
+ let updateMakeCodeProject = false;
+ set(
+ (state) => {
+ const {
+ project: prevProject,
+ isEditorOpen,
+ isEditorImportingState,
+ isEditorLoadingFile,
+ } = state;
+ const newProjectHeader = newProject.header!.id;
+ const previousProjectHeader = prevProject.header!.id;
+ if (
+ (isEditorLoadingFile ||
+ isEditorOpen ||
+ isEditorImportingState) &&
+ newProjectHeader !== previousProjectHeader
+ ) {
+ if (isEditorImportingState) {
+ // It's a change but we originated it so state is in sync.
logging.log(
- `[MakeCode] Edit copied to project. ID ${newProject.header?.id}`
+ `[MakeCode] Ignored header change due to us syncing state. ID change: ${prevProject.header?.id} -> ${newProject.header?.id}`
);
+ updateMakeCodeProject = true;
return {
+ isEditorImportingState: false,
+ // Still need to update this for the new header id.
project: newProject,
- // We just assume its been edited as spurious changes from MakeCode happen that we can't identify
- projectEdited: true,
};
} else {
- // This lets us skip more pointless init-time edits.
+ // It's a change that originated in MakeCode, e.g. a hex load, so update our state.
logging.log(
- `[MakeCode] Edit ignored when closed. ID ${newProject.header?.id}`
+ `[MakeCode] Updating state from MakeCode header change. ID change: ${prevProject.header?.id} -> ${newProject.header?.id}`
);
+ newActions = getActionsFromProject(newProject);
+ updatedTimestamp = Date.now();
+ updatedProjectEdited = true;
+ importProject = true;
+ return {
+ settings: updatedSettings,
+ project: newProject,
+ projectLoadTimestamp: updatedTimestamp,
+ timestamp: updatedTimestamp,
+ // New project loaded externally so we can't know whether its edited.
+ projectEdited: updatedProjectEdited,
+ actions: newActions,
+ dataWindow: getDataWindowFromActions(newActions),
+ model: undefined,
+ isEditorOpen: false,
+ isEditorLoadingFile: false,
+ };
}
- return state;
- },
- false,
- actionName
- );
- },
- setDownload(download: DownloadState) {
- set(
- { download, downloadFlashingProgress: 0 },
- false,
- "setDownload"
- );
- },
- setDownloadFlashingProgress(value) {
- set({ downloadFlashingProgress: value });
- },
- setSave(save: SaveState) {
- set({ save }, false, "setSave");
- },
- setEditorLoadingFile() {
- set({ isEditorLoadingFile: true }, false, "setEditorLoadingFile");
- },
- setEditorImportingState() {
- set(
- { isEditorImportingState: true },
- false,
- "setEditorImportingState"
- );
- },
- langChangeFlushedToEditor() {
- set(
- {
- langChanged: false,
- },
- false,
- "langChangeFlushedToEditor"
- );
- },
- projectFlushedToEditor() {
- set(
- {
- appEditNeedsFlushToEditor: false,
- },
- false,
- "projectFlushedToEditor"
- );
- },
- setPostConnectTourTrigger(trigger: TourTrigger | undefined) {
- set(
- { postConnectTourTrigger: trigger },
- false,
- "setPostConnectTourId"
- );
- },
- dataCollectionMicrobitConnectionStart(options) {
- set(
- { postConnectTourTrigger: options?.postConnectTourTrigger },
- false,
- "dataCollectionMicrobitConnectionStart"
- );
- },
- dataCollectionMicrobitConnected() {
- set(
- ({ actions, tourState, postConnectTourTrigger }) => {
+ } else if (isEditorOpen) {
+ logging.log(
+ `[MakeCode] Edit copied to project. ID ${newProject.header?.id}`
+ );
+ updatedProjectEdited = true;
+ updateMakeCodeProject = true;
return {
- actions:
- actions.length === 0 ? [createFirstAction()] : actions,
-
- // If a tour has been explicitly requested, do that.
- // Other tours are triggered by callbacks or effects on the relevant page so they run only on the correct screen.
- tourState: postConnectTourTrigger
- ? {
- index: 0,
- ...getTourSpec(postConnectTourTrigger, actions),
- }
- : tourState,
- postConnectTourTrigger: undefined,
- };
- },
- false,
- "dataCollectionMicrobitConnected"
- );
- },
-
- tourStart(trigger: TourTrigger, manual: boolean = false) {
- set((state) => {
- if (
- manual ||
- (!state.tourState &&
- !state.settings.toursCompleted.includes(trigger.name))
- ) {
- const tourSpec = getTourSpec(trigger, state.actions);
- const result = {
- tourState: {
- ...tourSpec,
- index: 0,
- },
- // If manually triggered, filter out subsequent tours as they should run again too when reached
- settings: manual
- ? {
- ...state.settings,
- toursCompleted: state.settings.toursCompleted.filter(
- (t) =>
- tourSequence.indexOf(t) <=
- tourSequence.indexOf(trigger.name)
- ),
- }
- : state.settings,
+ project: newProject,
+ // We just assume its been edited as spurious changes from MakeCode happen that we can't identify
+ projectEdited: updatedProjectEdited,
};
- return result;
+ } else {
+ // This lets us skip more pointless init-time edits.
+ logging.log(
+ `[MakeCode] Edit ignored when closed. ID ${newProject.header?.id}`
+ );
}
return state;
- });
- },
- tourNext() {
- set(({ tourState }) => {
- if (!tourState) {
- throw new Error("No tour");
- }
- return {
- tourState: { ...tourState, index: tourState.index + 1 },
- };
- });
- },
- tourBack() {
- set(({ tourState }) => {
- if (!tourState) {
- throw new Error("No tour");
- }
+ },
+ false,
+ actionName
+ );
+ if (importProject) {
+ await storageWithErrHandling(() =>
+ storage.importProject(
+ newActions as ActionData[],
+ {
+ project: newProject,
+ projectEdited: updatedProjectEdited,
+ },
+ { timestamp: updatedTimestamp },
+ updatedSettings
+ )
+ );
+ } else if (updateMakeCodeProject) {
+ await storageWithErrHandling(() =>
+ storage.updateMakeCodeProject({
+ project: newProject,
+ projectEdited: updatedProjectEdited,
+ })
+ );
+ }
+ },
+ setDownload(download: DownloadState) {
+ set({ download, downloadFlashingProgress: 0 }, false, "setDownload");
+ },
+ setDownloadFlashingProgress(value) {
+ set({ downloadFlashingProgress: value });
+ },
+ setSave(save: SaveState) {
+ set({ save }, false, "setSave");
+ },
+ setEditorLoadingFile() {
+ set({ isEditorLoadingFile: true }, false, "setEditorLoadingFile");
+ },
+ setEditorImportingState() {
+ set(
+ { isEditorImportingState: true },
+ false,
+ "setEditorImportingState"
+ );
+ },
+ langChangeFlushedToEditor() {
+ set(
+ {
+ langChanged: false,
+ },
+ false,
+ "langChangeFlushedToEditor"
+ );
+ },
+ projectFlushedToEditor() {
+ set(
+ {
+ appEditNeedsFlushToEditor: false,
+ },
+ false,
+ "projectFlushedToEditor"
+ );
+ },
+ setPostConnectTourTrigger(trigger: TourTrigger | undefined) {
+ set(
+ { postConnectTourTrigger: trigger },
+ false,
+ "setPostConnectTourId"
+ );
+ },
+ dataCollectionMicrobitConnectionStart(options) {
+ set(
+ { postConnectTourTrigger: options?.postConnectTourTrigger },
+ false,
+ "dataCollectionMicrobitConnectionStart"
+ );
+ },
+ dataCollectionMicrobitConnected() {
+ set(
+ ({ actions, tourState, postConnectTourTrigger }) => {
return {
- tourState: { ...tourState, index: tourState.index - 1 },
- };
- });
- },
- tourComplete(triggers: TourTriggerName[]) {
- set(({ settings }) => ({
- tourState: undefined,
- settings: {
- ...settings,
- toursCompleted: Array.from(
- new Set([...settings.toursCompleted, ...triggers])
- ),
- },
- }));
- },
-
- setDataSamplesView(view: DataSamplesView) {
- set(({ settings }) => ({
- settings: {
- ...settings,
- dataSamplesView: view,
- },
- }));
- },
- setShowGraphs(show: boolean) {
- set(({ settings }) => ({
- settings: {
- ...settings,
- showGraphs: show,
- },
- }));
- },
-
- setPostImportDialogState(state: PostImportDialogState) {
- set({ postImportDialogState: state });
- },
-
- startPredicting(buffer: BufferedData) {
- const { actions, model, predictionInterval, dataWindow } = get();
- if (!model || predictionInterval) {
- return;
- }
- const newPredictionInterval = setInterval(() => {
- const startTime = Date.now() - dataWindow.duration;
- const input = {
- model,
- data: buffer.getSamples(startTime),
- classificationIds: actions.map((a) => a.ID),
+ actions: actions.length === 0 ? [createFirstAction()] : actions,
+
+ // If a tour has been explicitly requested, do that.
+ // Other tours are triggered by callbacks or effects on the relevant page so they run only on the correct screen.
+ tourState: postConnectTourTrigger
+ ? {
+ index: 0,
+ ...getTourSpec(postConnectTourTrigger, actions),
+ }
+ : tourState,
+ postConnectTourTrigger: undefined,
};
- if (input.data.x.length > dataWindow.minSamples) {
- const result = predict(input, dataWindow);
- if (result.error) {
- logging.error(result.detail);
- } else {
- const { confidences } = result;
- const detected = getDetectedAction(
- // Get latest actions from store so that changes to
- // recognition point are realised.
- get().actions,
- result.confidences
- );
- set({
- predictionResult: {
- detected,
- confidences,
- },
- });
+ },
+ false,
+ "dataCollectionMicrobitConnected"
+ );
+ },
+
+ async tourStart(trigger: TourTrigger, manual: boolean = false) {
+ const { actions, settings, tourState } = get();
+ if (
+ manual ||
+ (!tourState && !settings.toursCompleted.includes(trigger.name))
+ ) {
+ const tourSpec = getTourSpec(trigger, actions);
+ // If manually triggered, filter out subsequent tours as they should run again too when reached
+ const updatedSettings = manual
+ ? {
+ ...settings,
+ toursCompleted: settings.toursCompleted.filter(
+ (t) =>
+ tourSequence.indexOf(t) <=
+ tourSequence.indexOf(trigger.name)
+ ),
}
- }
- }, 1000 / mlSettings.updatesPrSecond);
- set({ predictionInterval: newPredictionInterval });
- },
-
- getPrediction() {
- return get().predictionResult;
- },
-
- stopPredicting() {
- const { predictionInterval } = get();
- if (predictionInterval) {
- clearInterval(predictionInterval);
- set({ predictionInterval: undefined });
- }
- },
-
- languageDialogOnOpen() {
- set({ isLanguageDialogOpen: true });
- },
- settingsDialogOnOpen() {
- set({ isSettingsDialogOpen: true });
- },
- connectFirstDialogOnOpen() {
- set({ isConnectFirstDialogOpen: true });
- },
- aboutDialogOnOpen() {
- set({ isAboutDialogOpen: true });
- },
- feedbackFormOnOpen() {
- set({ isFeedbackFormOpen: true });
- },
- deleteAllActionsDialogOnOpen() {
- set({ isDeleteAllActionsDialogOpen: true });
- },
- nameProjectDialogOnOpen() {
- set({ isNameProjectDialogOpen: true });
- },
- recordingDialogOnOpen() {
- set({ isRecordingDialogOpen: true });
- },
- connectToRecordDialogOnOpen() {
- set({ isConnectToRecordDialogOpen: true });
- },
- deleteActionDialogOnOpen() {
- set({ isDeleteActionDialogOpen: true });
- },
- incompatibleEditorDeviceDialogOnOpen() {
- set({ isIncompatibleEditorDeviceDialogOpen: true });
- },
- closeDialog() {
- set({
- isLanguageDialogOpen: false,
- isSettingsDialogOpen: false,
- isConnectFirstDialogOpen: false,
- isAboutDialogOpen: false,
- isFeedbackFormOpen: false,
- isDeleteAllActionsDialogOpen: false,
- isNameProjectDialogOpen: false,
- isRecordingDialogOpen: false,
- isConnectToRecordDialogOpen: false,
- isDeleteActionDialogOpen: false,
- isIncompatibleEditorDeviceDialogOpen: false,
- });
- },
-
- isNonConnectionDialogOpen() {
- const {
- isAboutDialogOpen,
- isSettingsDialogOpen,
- isConnectFirstDialogOpen,
- isLanguageDialogOpen,
- isFeedbackFormOpen,
- postImportDialogState,
- isEditorOpen,
- tourState,
- trainModelDialogStage,
- isEditorTimedOutDialogOpen,
- isDeleteAllActionsDialogOpen,
- isRecordingDialogOpen,
- isConnectToRecordDialogOpen,
- isDeleteActionDialogOpen,
- isIncompatibleEditorDeviceDialogOpen,
- save,
- } = get();
- return (
- isAboutDialogOpen ||
- isSettingsDialogOpen ||
- isConnectFirstDialogOpen ||
- isLanguageDialogOpen ||
- isFeedbackFormOpen ||
- isDeleteAllActionsDialogOpen ||
- isRecordingDialogOpen ||
- isConnectToRecordDialogOpen ||
- isDeleteActionDialogOpen ||
- isIncompatibleEditorDeviceDialogOpen ||
- postImportDialogState !== PostImportDialogState.None ||
- isEditorOpen ||
- tourState !== undefined ||
- trainModelDialogStage !== TrainModelDialogStage.Closed ||
- isEditorTimedOutDialogOpen ||
- save.step !== SaveStep.None
+ : settings;
+ const updatedState = {
+ tourState: {
+ ...tourSpec,
+ index: 0,
+ },
+ settings: updatedSettings,
+ };
+ set(updatedState);
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
);
- },
- }),
-
- {
- version: 1,
- name: "ml",
- partialize: ({
- actions,
- project,
- projectEdited,
- settings,
- timestamp,
- }) => ({
- actions,
- project,
- projectEdited,
- settings,
- timestamp,
- // The model itself is in IndexDB
- }),
- migrate(persistedStateUnknown, version) {
- switch (version) {
- case 0: {
- // We need to rename the "gestures" field to "actions"
- interface StateV0 extends Omit {
- gestures?: ActionData[];
- }
- const stateV0 = persistedStateUnknown as StateV0;
- const { gestures, ...rest } = stateV0;
- return { actions: gestures, ...rest } as State;
- }
- default:
- return persistedStateUnknown;
+ }
+ },
+ tourNext() {
+ set(({ tourState }) => {
+ if (!tourState) {
+ throw new Error("No tour");
}
- },
- merge(persistedStateUnknown, currentState) {
- // The zustand default merge does no validation either.
- const persistedState = persistedStateUnknown as State;
return {
- ...currentState,
- ...persistedState,
- settings: {
- // Make sure we have any new settings defaulted
- ...defaultSettings,
- ...currentState.settings,
- ...persistedState.settings,
- },
+ tourState: { ...tourState, index: tourState.index + 1 },
+ };
+ });
+ },
+ tourBack() {
+ set(({ tourState }) => {
+ if (!tourState) {
+ throw new Error("No tour");
+ }
+ return {
+ tourState: { ...tourState, index: tourState.index - 1 },
};
- },
- }
- ),
+ });
+ },
+ async tourComplete(triggers: TourTriggerName[]) {
+ const { settings } = get();
+ const updatedSettings = {
+ ...settings,
+ toursCompleted: Array.from(
+ new Set([...settings.toursCompleted, ...triggers])
+ ),
+ };
+ set({
+ tourState: undefined,
+ settings: updatedSettings,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
+ );
+ },
+
+ async setDataSamplesView(view: DataSamplesView) {
+ const { settings } = get();
+ const updatedSettings = {
+ ...settings,
+ dataSamplesView: view,
+ };
+ set({
+ settings: updatedSettings,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
+ );
+ },
+ async setShowGraphs(show: boolean) {
+ const { settings } = get();
+ const updatedSettings = {
+ ...settings,
+ showGraphs: show,
+ };
+ set({
+ settings: updatedSettings,
+ });
+ await storageWithErrHandling(() =>
+ storage.updateSettings(updatedSettings)
+ );
+ },
+
+ setPostImportDialogState(state: PostImportDialogState) {
+ set({ postImportDialogState: state });
+ },
+
+ startPredicting(buffer: BufferedData) {
+ const { actions, model, predictionInterval, dataWindow } = get();
+ if (!model || predictionInterval) {
+ return;
+ }
+ const newPredictionInterval = setInterval(() => {
+ const startTime = Date.now() - dataWindow.duration;
+ const input = {
+ model,
+ data: buffer.getSamples(startTime),
+ classificationIds: actions.map((a) => a.id),
+ };
+ if (input.data.x.length > dataWindow.minSamples) {
+ const result = predict(input, dataWindow);
+ if (result.error) {
+ logging.error(result.detail);
+ } else {
+ const { confidences } = result;
+ const detected = getDetectedAction(
+ // Get latest actions from store so that changes to
+ // recognition point are realised.
+ get().actions,
+ result.confidences
+ );
+ set({
+ predictionResult: {
+ detected,
+ confidences,
+ },
+ });
+ }
+ }
+ }, 1000 / mlSettings.updatesPrSecond);
+ set({ predictionInterval: newPredictionInterval });
+ },
+
+ getPrediction() {
+ return get().predictionResult;
+ },
+
+ stopPredicting() {
+ const { predictionInterval } = get();
+ if (predictionInterval) {
+ clearInterval(predictionInterval);
+ set({ predictionInterval: undefined });
+ }
+ },
+
+ languageDialogOnOpen() {
+ set({ isLanguageDialogOpen: true });
+ },
+ settingsDialogOnOpen() {
+ set({ isSettingsDialogOpen: true });
+ },
+ connectFirstDialogOnOpen() {
+ set({ isConnectFirstDialogOpen: true });
+ },
+ aboutDialogOnOpen() {
+ set({ isAboutDialogOpen: true });
+ },
+ feedbackFormOnOpen() {
+ set({ isFeedbackFormOpen: true });
+ },
+ deleteAllActionsDialogOnOpen() {
+ set({ isDeleteAllActionsDialogOpen: true });
+ },
+ nameProjectDialogOnOpen() {
+ set({ isNameProjectDialogOpen: true });
+ },
+ recordingDialogOnOpen() {
+ set({ isRecordingDialogOpen: true });
+ },
+ connectToRecordDialogOnOpen() {
+ set({ isConnectToRecordDialogOpen: true });
+ },
+ deleteActionDialogOnOpen() {
+ set({ isDeleteActionDialogOpen: true });
+ },
+ incompatibleEditorDeviceDialogOnOpen() {
+ set({ isIncompatibleEditorDeviceDialogOpen: true });
+ },
+ closeDialog() {
+ set({
+ isLanguageDialogOpen: false,
+ isSettingsDialogOpen: false,
+ isConnectFirstDialogOpen: false,
+ isAboutDialogOpen: false,
+ isFeedbackFormOpen: false,
+ isDeleteAllActionsDialogOpen: false,
+ isNameProjectDialogOpen: false,
+ isRecordingDialogOpen: false,
+ isConnectToRecordDialogOpen: false,
+ isDeleteActionDialogOpen: false,
+ isIncompatibleEditorDeviceDialogOpen: false,
+ });
+ },
+
+ isNonConnectionDialogOpen() {
+ const {
+ isAboutDialogOpen,
+ isSettingsDialogOpen,
+ isConnectFirstDialogOpen,
+ isLanguageDialogOpen,
+ isFeedbackFormOpen,
+ postImportDialogState,
+ isEditorOpen,
+ tourState,
+ trainModelDialogStage,
+ isEditorTimedOutDialogOpen,
+ isDeleteAllActionsDialogOpen,
+ isRecordingDialogOpen,
+ isConnectToRecordDialogOpen,
+ isDeleteActionDialogOpen,
+ isIncompatibleEditorDeviceDialogOpen,
+ save,
+ } = get();
+ return (
+ isAboutDialogOpen ||
+ isSettingsDialogOpen ||
+ isConnectFirstDialogOpen ||
+ isLanguageDialogOpen ||
+ isFeedbackFormOpen ||
+ isDeleteAllActionsDialogOpen ||
+ isRecordingDialogOpen ||
+ isConnectToRecordDialogOpen ||
+ isDeleteActionDialogOpen ||
+ isIncompatibleEditorDeviceDialogOpen ||
+ postImportDialogState !== PostImportDialogState.None ||
+ isEditorOpen ||
+ tourState !== undefined ||
+ trainModelDialogStage !== TrainModelDialogStage.Closed ||
+ isEditorTimedOutDialogOpen ||
+ save.step !== SaveStep.None
+ );
+ },
+ }),
{ enabled: flags.devtools }
)
);
@@ -1335,36 +1426,34 @@ const getDataWindowFromActions = (actions: ActionData[]): DataWindow => {
: currentDataWindow;
};
-// Get data window from actions on app load.
-const { actions } = useStore.getState();
-useStore.setState(
- { dataWindow: getDataWindowFromActions(actions) },
- false,
- "setDataWindow"
-);
-
-tf.loadLayersModel(modelUrl)
- .then((model) => {
+const loadModelFromStorage = async () => {
+ try {
+ const model = await tf.loadLayersModel(modelUrl);
if (model) {
useStore.setState({ model }, false, "loadModel");
}
- })
- .catch(() => {
+ } catch (err) {
// This happens if there's no model.
- });
+ }
+};
-useStore.subscribe((state, prevState) => {
+useStore.subscribe(async (state, prevState) => {
const { model: newModel } = state;
const { model: previousModel } = prevState;
if (newModel !== previousModel) {
if (!newModel) {
- tf.io.removeModel(modelUrl).catch(() => {
- // No IndexedDB/no model.
- });
+ try {
+ await tf.io.removeModel(modelUrl);
+ broadcastChannel.postMessage(BroadcastChannelMessages.REMOVE_MODEL);
+ } catch (err) {
+ // IndexedDB not available?
+ }
} else {
- newModel.save(modelUrl).catch(() => {
+ try {
+ await newModel.save(modelUrl);
+ } catch (err) {
// IndexedDB not available?
- });
+ }
}
}
});
@@ -1440,7 +1529,9 @@ const getActionsFromProject = (project: MakeCodeProject): ActionData[] => {
if (typeof dataset !== "object" || !("data" in dataset)) {
return [];
}
- return dataset.data as ActionData[];
+ return migrateLegacyActionData(
+ dataset.data as OldActionData[] | ActionData[]
+ );
};
const renameProject = (
@@ -1465,3 +1556,42 @@ const renameProject = (
},
};
};
+
+const storageWithErrHandling = async (callback: () => Promise) => {
+ try {
+ await callback();
+ broadcastChannel.postMessage(BroadcastChannelMessages.RELOAD_PROJECT);
+ } catch (err) {
+ if (err instanceof DOMException && err.name === "QuotaExceededError") {
+ console.error("Storage quota exceeded!", err);
+ } else if (err instanceof StorageError) {
+ // We have failed to load an expected value from storage.
+ console.error(err);
+ } else {
+ console.error(err);
+ }
+ // We can in theory set error state here with useStore.setState.
+ }
+};
+
+export const loadProjectFromStorage = async () => {
+ // When multiple projects are supported, the latest project should only be
+ // fetched when not on the homepage / projects page.
+ const lastestProjectId = await storage.getLatestProjectId();
+ await useStore.getState().loadProjectFromStorage(lastestProjectId);
+ await loadModelFromStorage();
+ return true;
+};
+
+broadcastChannel.onmessage = async (event) => {
+ switch (event.data) {
+ case BroadcastChannelMessages.RELOAD_PROJECT: {
+ await loadProjectFromStorage();
+ break;
+ }
+ case BroadcastChannelMessages.REMOVE_MODEL: {
+ useStore.getState().removeModel();
+ break;
+ }
+ }
+};
diff --git a/src/test-fixtures/activity-timer-data-log-data-samples.json b/src/test-fixtures/activity-timer-data-log-data-samples.json
index f44a63ae5..b9ea1665c 100644
--- a/src/test-fixtures/activity-timer-data-log-data-samples.json
+++ b/src/test-fixtures/activity-timer-data-log-data-samples.json
@@ -1,11 +1,13 @@
[
{
"icon": "Rollerskate",
- "ID": 1729612325284,
+ "id": "1729612325284",
+ "createdAt": 1729612325284,
"name": "Walking",
"recordings": [
{
- "ID": 1729673727812,
+ "id": "1729673727812",
+ "createdAt": 1729673727812,
"data": {
"x": [
-1.672, -1.668, -2.024, -2.04, -1.832, -1.136, -0.712, 0.052,
@@ -34,7 +36,8 @@
}
},
{
- "ID": 1729673721119,
+ "id": "1729673721119",
+ "createdAt": 1729673721119,
"data": {
"x": [
-1.136, -1.12, -1.028, -1.036, -0.984, -1.044, -1.076, -1.04,
@@ -63,7 +66,8 @@
}
},
{
- "ID": 1729673711705,
+ "id": "1729673711705",
+ "createdAt": 1729673711705,
"data": {
"x": [
-1.184, -1.248, -1.26, -1.384, -1.58, -1.568, -1.84, -2.04, -2.04,
@@ -92,7 +96,8 @@
}
},
{
- "ID": 1729673451114,
+ "id": "1729673451114",
+ "createdAt": 1729673451114,
"data": {
"x": [
-1.496, -1.148, -0.66, -1.052, -1.136, -1.092, -1.112, -1.1, -1.108,
@@ -121,7 +126,8 @@
}
},
{
- "ID": 1729673436748,
+ "id": "1729673436748",
+ "createdAt": 1729673436748,
"data": {
"x": [
-1.584, -1.324, -1.236, -1.1, -1.08, -0.788, -1.176, -1.164, -2.04,
@@ -149,7 +155,8 @@
}
},
{
- "ID": 1729673425222,
+ "id": "1729673425222",
+ "createdAt": 1729673425222,
"data": {
"x": [
-1.512, -1.3, -1.108, -1.088, -1.104, -0.952, -0.884, -1.12, -1.064,
@@ -177,7 +184,8 @@
}
},
{
- "ID": 1729673415459,
+ "id": "1729673415459",
+ "createdAt": 1729673415459,
"data": {
"x": [
-1.128, -0.896, -1.132, -1.068, -1.1, -1.084, -1.156, -1.152,
@@ -205,7 +213,8 @@
}
},
{
- "ID": 1729673404782,
+ "id": "1729673404782",
+ "createdAt": 1729673404782,
"data": {
"x": [
-1.068, -0.92, -0.812, -1.776, -2.04, -1.272, -0.944, -0.816,
@@ -234,7 +243,8 @@
}
},
{
- "ID": 1729673391690,
+ "id": "1729673391690",
+ "createdAt": 1729673391690,
"data": {
"x": [
-0.616, -0.796, -1.112, -1.332, -1.496, -1.748, -1.948, -2.008,
@@ -266,11 +276,13 @@
},
{
"icon": "StickFigure",
- "ID": 1729612383565,
+ "id": "1729612383565",
+ "createdAt": 1729612383565,
"name": "Jumping up&down",
"recordings": [
{
- "ID": 1729673745713,
+ "id": "1729673745713",
+ "createdAt": 1729673745713,
"data": {
"x": [
-2.04, -1.792, -0.644, -0.772, -0.768, -0.28, -0.488, -0.408,
@@ -299,7 +311,8 @@
}
},
{
- "ID": 1729673739656,
+ "id": "1729673739656",
+ "createdAt": 1729673739656,
"data": {
"x": [
-0.516, -0.256, -0.056, 0.024, -0.112, -0.104, 0.396, -0.376, -2.04,
@@ -328,7 +341,8 @@
}
},
{
- "ID": 1729673496948,
+ "id": "1729673496948",
+ "createdAt": 1729673496948,
"data": {
"x": [
-0.644, -0.3, -0.276, -0.208, -0.232, -0.196, 0.032, 0.076, -0.352,
@@ -357,7 +371,8 @@
}
},
{
- "ID": 1729673492272,
+ "id": "1729673492272",
+ "createdAt": 1729673492272,
"data": {
"x": [
-0.42, -0.248, -0.104, -0.18, -0.172, -0.152, -0.032, 0.672, -2,
@@ -386,7 +401,8 @@
}
},
{
- "ID": 1729673487113,
+ "id": "1729673487113",
+ "createdAt": 1729673487113,
"data": {
"x": [
-0.236, -0.132, -0.116, -0.196, -0.252, -0.176, -0.08, 0.404, -2.04,
@@ -415,7 +431,8 @@
}
},
{
- "ID": 1729673481599,
+ "id": "1729673481599",
+ "createdAt": 1729673481599,
"data": {
"x": [
-0.316, -0.596, -0.612, -0.456, -0.26, -0.168, -1.896, -2.04, -1.36,
@@ -444,7 +461,8 @@
}
},
{
- "ID": 1729673476563,
+ "id": "1729673476563",
+ "createdAt": 1729673476563,
"data": {
"x": [
-2.04, -2.04, -1.012, -1.46, -1.364, -2.04, -1.78, -2.04, -2.04,
@@ -473,7 +491,8 @@
}
},
{
- "ID": 1729673470692,
+ "id": "1729673470692",
+ "createdAt": 1729673470692,
"data": {
"x": [
-0.12, 0.028, -0.108, -0.132, -0.232, 0.112, -0.38, -2.04, -2.04,
@@ -505,11 +524,13 @@
},
{
"icon": "Asleep",
- "ID": 1729612436971,
+ "id": "1729612436971",
+ "createdAt": 1729612436971,
"name": "Being still",
"recordings": [
{
- "ID": 1729673556262,
+ "id": "1729673556262",
+ "createdAt": 1729673556262,
"data": {
"x": [
-1.076, -1.084, -1.08, -1.084, -1.08, -1.084, -1.076, -1.08, -1.092,
@@ -537,7 +558,8 @@
}
},
{
- "ID": 1729673551465,
+ "id": "1729673551465",
+ "createdAt": 1729673551465,
"data": {
"x": [
-1.064, -1.06, -1.064, -1.068, -1.056, -1.068, -1.076, -1.068,
@@ -564,7 +586,8 @@
}
},
{
- "ID": 1729673546660,
+ "id": "1729673546660",
+ "createdAt": 1729673546660,
"data": {
"x": [
-1.08, -1.184, -1.048, -1.068, -1.088, -1.072, -1.044, -1.072,
@@ -592,7 +615,8 @@
}
},
{
- "ID": 1729673541916,
+ "id": "1729673541916",
+ "createdAt": 1729673541916,
"data": {
"x": [
-1.072, -1.092, -1.092, -1.076, -1.084, -1.076, -1.072, -1.076,
@@ -620,7 +644,8 @@
}
},
{
- "ID": 1729673537247,
+ "id": "1729673537247",
+ "createdAt": 1729673537247,
"data": {
"x": [
-1.088, -1.076, -1.088, -1.088, -1.088, -1.084, -1.08, -1.08,
@@ -648,7 +673,8 @@
}
},
{
- "ID": 1729673531741,
+ "id": "1729673531741",
+ "createdAt": 1729673531741,
"data": {
"x": [
-1.084, -1.08, -1.084, -1.08, -1.084, -1.08, -1.092, -1.08, -1.084,
diff --git a/src/test-fixtures/wand-data-samples.json b/src/test-fixtures/wand-data-samples.json
index ad5825a57..7bca69e6a 100644
--- a/src/test-fixtures/wand-data-samples.json
+++ b/src/test-fixtures/wand-data-samples.json
@@ -1,1572 +1,1638 @@
[
{
- "icon": "Heart",
- "ID": 1729159323639,
+ "id": "a847ac69-2c80-49cd-bee2-f7fe430b7c4c",
"name": "Not a spell",
+ "icon": "No",
+ "createdAt": 1730110768152,
"recordings": [
{
- "ID": 1729159669573,
+ "id": "a7045ed7-4629-4d46-9e34-843919413bd9",
"data": {
"x": [
- -0.984, -1.06, -1.156, -1.236, -1.256, -1.16, -1.128, -1.148,
- -1.104, -1.016, -0.924, -0.856, -0.804, -0.736, -0.756, -0.816,
- -0.776, -0.692, -0.688, -0.668, -0.604, -0.568, -0.592, -0.6,
- -0.552, -0.516, -0.452, -0.304, -0.192, -0.132, -0.032, 0.076,
- 0.148, 0.156, 0.076, -0.024, -0.092, -0.156, -0.272, -0.404, -0.472,
- -0.468, -0.456, -0.632
+ 0.788, 0.76, 0.828, 0.928, 0.948, 0.932, 0.956, 1.012, 0.968, 1.032,
+ 1.208, 1.1, 1.016, 0.968, 0.884, 0.748, 0.596, 0.48, 0.248, 0.204,
+ 0.108, -0.176, -0.132, -0.08, -0.148, -0.1, -0.096, -0.304, -0.332,
+ -0.24, -0.248, -0.268, -0.332, -0.344, -0.424, -0.544, -0.572,
+ -0.54, -0.568, -0.668, -0.748, -0.672, -0.616, -0.768, -0.892,
+ -0.824, -0.74, -0.896
],
"y": [
- -0.388, -0.372, -0.316, -0.316, -0.32, -0.316, -0.332, -0.352,
- -0.388, -0.396, -0.436, -0.496, -0.472, -0.432, -0.452, -0.508,
- -0.512, -0.508, -0.512, -0.532, -0.52, -0.5, -0.52, -0.56, -0.572,
- -0.604, -0.588, -0.552, -0.516, -0.636, -0.632, -0.5, -0.46, -0.404,
- -0.36, -0.356, -0.352, -0.376, -0.388, -0.416, -0.46, -0.432,
- -0.416, -0.504
+ 0.152, 0.084, 0.068, 0.06, 0.012, -0.064, -0.076, -0.044, -0.04,
+ -0.036, 0.024, 0.096, 0.044, -0.032, 0.008, 0.076, 0.268, 0.312,
+ 0.356, 0.4, 0.42, 0.484, 0.488, 0.532, 0.544, 0.592, 0.584, 0.588,
+ 0.648, 0.66, 0.66, 0.652, 0.64, 0.612, 0.56, 0.54, 0.52, 0.496,
+ 0.46, 0.424, 0.444, 0.404, 0.36, 0.328, 0.316, 0.268, 0.248, 0.204
],
"z": [
- -0.144, -0.088, 0.036, 0.156, 0.18, 0.032, -0.044, -0.056, -0.12,
- -0.228, -0.32, -0.368, -0.396, -0.46, -0.448, -0.404, -0.464,
- -0.556, -0.536, -0.544, -0.612, -0.68, -0.7, -0.72, -0.792, -0.856,
- -0.948, -1.056, -1.028, -1.224, -1.28, -1.368, -1.352, -1.288,
- -1.188, -1.06, -1, -0.972, -0.904, -0.82, -0.788, -0.776, -0.772,
- -0.608
+ -0.52, -0.548, -0.656, -0.748, -0.752, -0.744, -0.752, -0.796,
+ -0.684, -0.656, -0.804, -0.896, -0.976, -0.972, -0.908, -0.88,
+ -0.744, -0.656, -0.816, -0.956, -0.576, -0.692, -0.788, -0.828,
+ -0.78, -0.804, -0.8, -0.548, -0.536, -0.68, -0.672, -0.652, -0.572,
+ -0.608, -0.628, -0.604, -0.616, -0.656, -0.644, -0.568, -0.516,
+ -0.652, -0.816, -0.648, -0.452, -0.48, -0.624, -0.488
]
- }
+ },
+ "createdAt": 1730110843600
},
{
- "ID": 1729159665397,
+ "id": "08ca8fa0-86f2-4980-916f-6a3c80373828",
"data": {
"x": [
- 0.204, 0.184, 0.188, 0.196, 0.188, 0.176, 0.172, 0.156, 0.168,
- 0.188, 0.168, 0.184, 0.18, 0.176, 0.176, 0.176, 0.2, 0.192, 0.188,
- 0.18, 0.188, 0.192, 0.204, 0.208, 0.184, 0.168, 0.18, 0.192, 0.196,
- 0.192, 0.172, 0.172, 0.196, 0.188, 0.18, 0.192, 0.204, 0.208, 0.208,
- 0.216, 0.18, 0.136, 0.168, 0.208, 0.2
+ -0.104, -0.124, -0.128, -0.112, -0.096, -0.108, -0.104, -0.108,
+ -0.084, -0.108, -0.128, -0.116, -0.108, -0.096, -0.096, -0.104,
+ -0.084, -0.092, -0.108, -0.104, -0.088, -0.108, -0.116, -0.14,
+ -0.156, -0.132, -0.132, -0.14, -0.132, -0.136, -0.12, -0.068,
+ -0.052, -0.052, -0.08, -0.132, -0.192, -0.204, -0.176, -0.164,
+ -0.164, -0.16, -0.152, -0.124, -0.088, -0.076, -0.1, -0.104, -0.128
],
"y": [
- -0.284, -0.292, -0.304, -0.292, -0.292, -0.288, -0.276, -0.272,
- -0.272, -0.276, -0.276, -0.276, -0.28, -0.276, -0.284, -0.288,
- -0.288, -0.28, -0.284, -0.284, -0.276, -0.28, -0.276, -0.26, -0.276,
- -0.272, -0.284, -0.284, -0.288, -0.268, -0.264, -0.264, -0.276,
- -0.288, -0.296, -0.296, -0.296, -0.296, -0.296, -0.284, -0.272,
- -0.276, -0.272, -0.276, -0.28
+ 0.936, 0.936, 0.932, 0.936, 0.924, 0.932, 0.928, 0.928, 0.936,
+ 0.932, 0.932, 0.924, 0.932, 0.936, 0.932, 0.94, 0.94, 0.932, 0.936,
+ 0.948, 0.948, 0.932, 0.932, 0.92, 0.916, 0.908, 0.916, 0.884, 0.892,
+ 0.88, 0.896, 0.924, 0.972, 1, 0.976, 0.928, 0.884, 0.832, 0.812,
+ 0.82, 0.816, 0.848, 0.9, 0.98, 1.032, 1.032, 1.012, 0.964, 0.904
],
"z": [
- -0.988, -0.96, -0.964, -0.984, -0.984, -0.972, -0.972, -0.96,
- -0.976, -0.988, -0.984, -0.976, -0.972, -0.976, -0.98, -0.972,
- -0.98, -0.976, -0.988, -0.98, -0.972, -0.984, -0.972, -0.98, -0.96,
- -0.976, -0.984, -0.984, -0.984, -0.972, -0.96, -0.944, -0.976,
- -0.976, -0.984, -0.984, -0.968, -0.972, -0.98, -0.98, -0.964, -0.96,
- -0.976, -1.004, -0.98
+ -0.5, -0.488, -0.484, -0.496, -0.5, -0.508, -0.504, -0.492, -0.504,
+ -0.504, -0.492, -0.488, -0.488, -0.492, -0.492, -0.48, -0.5, -0.5,
+ -0.484, -0.48, -0.48, -0.496, -0.504, -0.512, -0.528, -0.54, -0.544,
+ -0.504, -0.544, -0.532, -0.504, -0.504, -0.496, -0.504, -0.532,
+ -0.532, -0.536, -0.56, -0.6, -0.612, -0.616, -0.628, -0.568, -0.488,
+ -0.416, -0.396, -0.412, -0.456, -0.464
]
- }
+ },
+ "createdAt": 1730110838090
},
{
- "ID": 1729159661282,
+ "id": "62d25bc6-ffe7-4188-9488-0038f1fcfb4b",
"data": {
"x": [
- 0.188, 0.2, 0.188, 0.172, 0.16, 0.156, 0.164, 0.176, 0.184, 0.184,
- 0.176, 0.172, 0.176, 0.172, 0.184, 0.18, 0.168, 0.164, 0.164, 0.172,
- 0.192, 0.184, 0.18, 0.18, 0.192, 0.168, 0.176, 0.18, 0.172, 0.18,
- 0.168, 0.18, 0.184, 0.184, 0.2, 0.188, 0.176, 0.168, 0.176, 0.176,
- 0.172, 0.16, 0.172, 0.168, 0.172
+ -0.012, -0.02, -0.016, -0.036, -0.052, -0.036, -0.032, -0.04,
+ -0.044, -0.036, -0.04, -0.028, -0.008, -0.004, -0.008, -0.012,
+ -0.028, -0.032, -0.036, -0.04, -0.016, -0.024, -0.052, -0.048,
+ -0.032, -0.068, -0.056, -0.036, -0.024, -0.036, -0.052, -0.032,
+ -0.028, -0.02, -0.012, -0.036, -0.028, -0.032, -0.06, -0.036, -0.04,
+ -0.056, -0.032, -0.02, -0.024, -0.024, -0.024, -0.044, -0.032
],
"y": [
- -0.28, -0.264, -0.26, -0.256, -0.268, -0.264, -0.272, -0.276,
- -0.268, -0.268, -0.268, -0.272, -0.264, -0.268, -0.276, -0.276,
- -0.268, -0.272, -0.272, -0.272, -0.272, -0.272, -0.264, -0.264,
- -0.272, -0.268, -0.268, -0.26, -0.26, -0.272, -0.268, -0.284, -0.28,
- -0.28, -0.264, -0.276, -0.272, -0.28, -0.28, -0.272, -0.268, -0.256,
- -0.26, -0.268, -0.26
+ -0.952, -0.952, -0.948, -0.976, -0.972, -0.98, -0.992, -0.992,
+ -0.976, -0.968, -0.968, -0.964, -0.96, -0.968, -0.968, -0.964,
+ -0.976, -0.968, -0.988, -0.992, -0.976, -0.976, -0.992, -0.976,
+ -0.964, -0.98, -0.992, -0.98, -0.972, -0.98, -0.984, -0.98, -0.98,
+ -0.98, -0.984, -0.988, -0.98, -0.98, -0.984, -0.98, -0.972, -0.972,
+ -0.968, -0.968, -0.968, -0.964, -0.984, -0.976, -0.98
],
"z": [
- -0.964, -0.98, -0.964, -0.968, -0.988, -0.996, -0.992, -0.968,
- -0.96, -0.984, -0.98, -0.976, -0.976, -0.964, -0.976, -0.988,
- -0.984, -0.984, -0.98, -0.984, -0.988, -0.976, -0.964, -0.972,
- -0.984, -0.968, -0.984, -0.988, -0.988, -0.992, -0.984, -0.988,
- -0.98, -0.976, -0.976, -0.96, -0.964, -0.972, -0.988, -0.992,
- -0.992, -0.976, -0.976, -0.972, -0.972
+ -0.368, -0.368, -0.364, -0.34, -0.348, -0.384, -0.376, -0.364,
+ -0.372, -0.364, -0.352, -0.348, -0.36, -0.348, -0.352, -0.352,
+ -0.352, -0.352, -0.348, -0.356, -0.384, -0.356, -0.32, -0.348,
+ -0.364, -0.348, -0.352, -0.36, -0.38, -0.36, -0.344, -0.348, -0.34,
+ -0.348, -0.364, -0.356, -0.356, -0.356, -0.344, -0.36, -0.38,
+ -0.356, -0.368, -0.36, -0.364, -0.364, -0.356, -0.36, -0.36
]
- }
+ },
+ "createdAt": 1730110833013
},
{
- "ID": 1729159657150,
+ "id": "3db7f567-460a-478f-803d-b823bf6a4582",
"data": {
"x": [
- 0.052, 0.048, 0.016, -0.004, 0.02, 0.044, 0.036, 0.048, 0.02, 0.028,
- 0.044, 0.028, 0.024, 0.016, 0.028, 0.044, 0.02, 0.004, 0.024, 0.032,
- 0.052, 0.036, 0.032, 0.016, 0.024, 0.044, 0.044, 0.04, 0.024, 0.004,
- 0.028, 0.064, 0.048, 0.028, 0.008, 0.04, 0.036, 0.024, 0.04, 0.036,
- 0.02, 0.028, 0.052, 0.092
+ 0.66, 0.64, 0.648, 0.668, 0.676, 0.656, 0.632, 0.648, 0.656, 0.636,
+ 0.624, 0.648, 0.652, 0.648, 0.636, 0.648, 0.672, 0.668, 0.656,
+ 0.668, 0.668, 0.64, 0.636, 0.64, 0.64, 0.66, 0.66, 0.66, 0.664,
+ 0.668, 0.652, 0.648, 0.652, 0.64, 0.64, 0.632, 0.648, 0.684, 0.716,
+ 0.708, 0.7, 0.684, 0.688, 0.696, 0.692, 0.708, 0.692
],
"y": [
- 0.084, 0.084, 0.08, 0.08, 0.092, 0.1, 0.108, 0.108, 0.08, 0.06,
- 0.064, 0.064, 0.08, 0.08, 0.072, 0.072, 0.084, 0.08, 0.088, 0.108,
- 0.096, 0.084, 0.08, 0.064, 0.06, 0.068, 0.076, 0.092, 0.1, 0.096,
- 0.092, 0.092, 0.092, 0.092, 0.072, 0.072, 0.064, 0.06, 0.084, 0.084,
- 0.068, 0.048, 0.04, 0.068
+ 0.18, 0.164, 0.156, 0.164, 0.16, 0.156, 0.16, 0.156, 0.176, 0.176,
+ 0.18, 0.184, 0.192, 0.18, 0.168, 0.168, 0.172, 0.172, 0.172, 0.168,
+ 0.172, 0.176, 0.184, 0.176, 0.172, 0.168, 0.16, 0.16, 0.152, 0.152,
+ 0.144, 0.16, 0.176, 0.168, 0.176, 0.18, 0.16, 0.16, 0.172, 0.168,
+ 0.144, 0.164, 0.172, 0.164, 0.168, 0.164, 0.176
],
"z": [
- -1.04, -1.056, -1.032, -1.024, -1.024, -1.028, -1.012, -1.008,
- -1.004, -1.048, -1.068, -1.048, -1.02, -1.016, -1.024, -1.072,
- -1.044, -1, -1.02, -1.032, -1.024, -1.024, -1.036, -1.044, -1.036,
- -1.048, -1.052, -1.04, -1.036, -1.028, -1.032, -1.028, -1.008,
- -1.028, -1.016, -1.048, -1.052, -1.032, -1.052, -1.028, -1.036,
- -1.028, -1.048, -1.052
+ -0.772, -0.784, -0.784, -0.808, -0.796, -0.784, -0.784, -0.8, -0.8,
+ -0.788, -0.772, -0.772, -0.768, -0.772, -0.776, -0.78, -0.772,
+ -0.764, -0.76, -0.788, -0.788, -0.772, -0.768, -0.776, -0.784,
+ -0.784, -0.772, -0.764, -0.772, -0.792, -0.792, -0.78, -0.776,
+ -0.756, -0.764, -0.764, -0.756, -0.76, -0.772, -0.74, -0.752,
+ -0.752, -0.744, -0.728, -0.724, -0.74, -0.74
]
- }
+ },
+ "createdAt": 1730110828469
},
{
- "ID": 1729159653154,
+ "id": "99ca2691-cd53-4eac-b32a-dcb291fcb74b",
"data": {
"x": [
- 0.02, 0.028, 0.016, 0.008, 0.032, 0.044, 0.052, 0.044, 0.036, 0.012,
- 0.012, 0.008, 0.02, 0.028, 0.024, 0.012, 0.004, 0, 0.024, 0.048,
- 0.068, 0.06, 0.036, 0.052, 0.044, 0.02, 0.028, 0.036, 0.04, 0.036,
- 0.012, 0.016, 0.048, 0.048, 0.044, 0.028, 0.012, 0.032, 0.024,
- 0.016, 0.04, 0.044, 0, 0.04, 0.068
+ 0.972, 0.964, 0.988, 0.976, 0.952, 0.944, 0.964, 0.976, 0.956,
+ 0.952, 0.96, 0.972, 0.984, 0.984, 0.972, 0.968, 0.956, 0.964, 0.972,
+ 0.976, 0.964, 0.976, 0.984, 0.968, 0.968, 0.952, 0.96, 0.972, 0.976,
+ 0.956, 0.964, 0.968, 0.96, 0.98, 0.984, 0.964, 0.948, 0.952, 0.976,
+ 0.98, 0.972, 0.98, 0.972, 0.968, 0.968, 0.96, 0.984, 0.976
],
"y": [
- 0.084, 0.088, 0.08, 0.08, 0.076, 0.064, 0.048, 0.052, 0.06, 0.052,
- 0.064, 0.084, 0.1, 0.1, 0.084, 0.108, 0.112, 0.112, 0.108, 0.08,
- 0.084, 0.092, 0.084, 0.084, 0.076, 0.068, 0.064, 0.06, 0.076, 0.108,
- 0.112, 0.12, 0.132, 0.136, 0.132, 0.128, 0.124, 0.132, 0.12, 0.108,
- 0.096, 0.064, 0.04, 0.04, 0.028
+ 0.112, 0.112, 0.116, 0.116, 0.12, 0.112, 0.128, 0.124, 0.12, 0.124,
+ 0.12, 0.124, 0.124, 0.128, 0.124, 0.12, 0.12, 0.12, 0.112, 0.1,
+ 0.104, 0.108, 0.116, 0.124, 0.128, 0.132, 0.136, 0.136, 0.136,
+ 0.128, 0.124, 0.116, 0.108, 0.108, 0.12, 0.116, 0.112, 0.108, 0.112,
+ 0.112, 0.116, 0.116, 0.116, 0.116, 0.116, 0.116, 0.124, 0.108
],
"z": [
- -1.032, -1.04, -1.024, -1.036, -1.044, -1.04, -1.044, -1.048,
- -1.048, -1.024, -1.044, -1.04, -1.02, -1.02, -1.024, -1.032, -1.024,
- -1.02, -1.012, -1.016, -1.032, -1.04, -1.012, -1.032, -1.032,
- -1.036, -1.048, -1.048, -1.04, -1.044, -1.028, -1.016, -1.02,
- -1.008, -1.012, -1.004, -1.004, -1.04, -1.032, -1.02, -1.032,
- -1.044, -1.012, -1.068, -1.076
+ -0.344, -0.324, -0.328, -0.316, -0.312, -0.32, -0.312, -0.328,
+ -0.332, -0.328, -0.324, -0.328, -0.308, -0.308, -0.304, -0.324,
+ -0.32, -0.312, -0.328, -0.336, -0.336, -0.34, -0.34, -0.332, -0.34,
+ -0.324, -0.308, -0.296, -0.292, -0.3, -0.312, -0.32, -0.32, -0.328,
+ -0.316, -0.336, -0.344, -0.332, -0.344, -0.332, -0.324, -0.308,
+ -0.316, -0.324, -0.316, -0.288, -0.316, -0.328
]
- }
+ },
+ "createdAt": 1730110823337
},
{
- "ID": 1729159648983,
+ "id": "2ae996d3-b806-468b-b60a-529dadc24877",
"data": {
"x": [
- 0.256, 0.256, 0.26, 0.272, 0.308, 0.312, 0.288, 0.3, 0.284, 0.232,
- 0.236, 0.276, 0.292, 0.288, 0.284, 0.344, 0.368, 0.34, 0.268, 0.24,
- 0.272, 0.28, 0.292, 0.288, 0.256, 0.208, 0.216, 0.192, 0.212, 0.244,
- 0.256, 0.248, 0.26, 0.248, 0.256, 0.296, 0.3, 0.264, 0.248, 0.24,
- 0.236, 0.256, 0.244, 0.216
+ -0.512, -0.504, -0.492, -0.468, -0.468, -0.484, -0.5, -0.496,
+ -0.484, -0.484, -0.496, -0.492, -0.472, -0.48, -0.476, -0.448,
+ -0.448, -0.464, -0.468, -0.484, -0.476, -0.472, -0.464, -0.472,
+ -0.484, -0.48, -0.48, -0.48, -0.468, -0.48, -0.484, -0.492, -0.476,
+ -0.468, -0.496, -0.468, -0.46, -0.456, -0.476, -0.492, -0.5, -0.492,
+ -0.488, -0.492, -0.488, -0.496, -0.5, -0.464
],
"y": [
- 0.256, 0.272, 0.288, 0.284, 0.232, 0.184, 0.124, 0.136, 0.168,
- 0.188, 0.188, 0.204, 0.236, 0.224, 0.188, 0.176, 0.184, 0.172,
- 0.156, 0.168, 0.172, 0.184, 0.16, 0.168, 0.168, 0.184, 0.192, 0.184,
- 0.188, 0.172, 0.156, 0.16, 0.16, 0.152, 0.148, 0.152, 0.132, 0.116,
- 0.12, 0.136, 0.168, 0.204, 0.2, 0.196
+ 0.116, 0.12, 0.128, 0.128, 0.128, 0.116, 0.132, 0.144, 0.136, 0.14,
+ 0.136, 0.16, 0.14, 0.144, 0.14, 0.136, 0.128, 0.132, 0.132, 0.132,
+ 0.136, 0.136, 0.132, 0.128, 0.14, 0.152, 0.14, 0.124, 0.112, 0.104,
+ 0.136, 0.144, 0.14, 0.128, 0.128, 0.144, 0.136, 0.128, 0.116, 0.108,
+ 0.108, 0.124, 0.128, 0.128, 0.124, 0.136, 0.132, 0.128
],
"z": [
- -0.98, -1.004, -1.04, -1.068, -1.08, -1.04, -0.976, -0.968, -0.956,
- -0.92, -0.904, -0.94, -0.984, -0.996, -0.972, -1.012, -1.036,
- -1.028, -0.992, -0.964, -0.984, -0.96, -0.932, -0.932, -0.944,
- -0.956, -0.976, -0.972, -1.004, -1.016, -1.02, -0.996, -0.984,
- -0.976, -0.972, -0.996, -1.004, -0.996, -1.008, -1.004, -0.996,
- -0.988, -0.976, -0.98
+ -0.936, -0.932, -0.928, -0.936, -0.928, -0.92, -0.92, -0.92, -0.916,
+ -0.916, -0.912, -0.912, -0.92, -0.908, -0.932, -0.936, -0.924,
+ -0.932, -0.948, -0.928, -0.928, -0.912, -0.936, -0.924, -0.92,
+ -0.924, -0.916, -0.904, -0.94, -0.936, -0.916, -0.896, -0.936,
+ -0.936, -0.928, -0.932, -0.9, -0.916, -0.936, -0.94, -0.928, -0.924,
+ -0.94, -0.924, -0.92, -0.916, -0.9, -0.908
]
- }
+ },
+ "createdAt": 1730110818555
},
{
- "ID": 1729159397874,
+ "id": "a435a2c9-c26d-4436-b405-d0e659a7f677",
"data": {
"x": [
- -0.848, -0.928, -0.944, -0.948, -0.924, -0.852, -0.856, -0.884,
- -0.88, -0.876, -0.84, -0.832, -0.872, -0.888, -0.868, -0.872,
- -0.852, -0.864, -0.848, -0.86, -0.872, -0.88, -0.868, -0.876,
- -0.844, -0.832, -0.876, -0.88, -0.852, -0.848, -0.868, -0.856,
- -0.844, -0.86, -0.872, -0.844, -0.848, -0.84, -0.844, -0.864,
- -0.884, -0.864, -0.852, -0.856
+ 0.292, 0.228, -0.012, -0.12, -0.172, -0.252, -0.356, -0.404, -0.384,
+ -0.352, -0.308, -0.332, -0.364, -0.38, -0.42, -0.388, -0.244,
+ -0.172, -0.176, -0.176, -0.172, -0.196, -0.2, -0.156, -0.08, -0.068,
+ -0.052, -0.008, 0, 0.068, -0.048, -0.148, -0.128, -0.132, -0.176,
+ -0.208, -0.244, -0.224, -0.136, -0.128, -0.152, -0.132, -0.132,
+ -0.176, -0.188, -0.176, -0.152, -0.108
],
"y": [
- 0.076, 0.064, 0.084, 0.072, 0.092, 0.088, 0.08, 0.084, 0.08, 0.1,
- 0.136, 0.128, 0.112, 0.108, 0.104, 0.108, 0.12, 0.116, 0.116, 0.116,
- 0.088, 0.1, 0.088, 0.1, 0.096, 0.092, 0.096, 0.116, 0.116, 0.116,
- 0.104, 0.116, 0.112, 0.096, 0.12, 0.112, 0.12, 0.136, 0.124, 0.108,
- 0.108, 0.116, 0.112, 0.1
+ 0.188, 0.088, 0.072, 0.168, 0.184, 0.18, 0.108, 0.1, 0.096, 0.124,
+ 0.164, 0.212, 0.212, 0.18, 0.136, 0.168, 0.196, 0.224, 0.212, 0.188,
+ 0.188, 0.196, 0.192, 0.164, 0.164, 0.148, 0.132, 0.164, 0.168, 0.12,
+ 0.152, 0.124, 0.06, 0.04, 0.016, 0, 0.008, 0.004, 0.004, -0.004,
+ -0.028, -0.02, -0.004, 0.024, 0.02, 0.04, 0.044, 0.04
],
"z": [
- -0.6, -0.472, -0.572, -0.58, -0.556, -0.536, -0.576, -0.544, -0.596,
- -0.56, -0.568, -0.572, -0.556, -0.568, -0.572, -0.576, -0.576,
- -0.548, -0.564, -0.584, -0.6, -0.58, -0.6, -0.596, -0.608, -0.6,
- -0.568, -0.584, -0.576, -0.588, -0.616, -0.62, -0.612, -0.616,
- -0.592, -0.616, -0.608, -0.592, -0.592, -0.592, -0.576, -0.568,
- -0.564, -0.572
+ -0.944, -1.032, -1.056, -1.024, -1.1, -1.088, -1.036, -1.012,
+ -0.976, -0.94, -0.96, -0.984, -1.012, -1.028, -0.988, -0.952,
+ -0.988, -0.98, -1.016, -1.032, -1, -0.988, -1.024, -1.084, -1.088,
+ -1.008, -0.948, -0.964, -0.996, -0.944, -0.924, -0.94, -1.032,
+ -1.088, -1.064, -1.056, -1.028, -1.032, -1.068, -1.044, -1.052,
+ -1.084, -1.096, -1.024, -1.024, -1.032, -1.024, -1.076
]
- }
+ },
+ "createdAt": 1730110814258
},
{
- "ID": 1729159392725,
+ "id": "146782de-b559-462a-b122-098afb637033",
"data": {
"x": [
- 0.636, 0.612, 0.644, 0.7, 0.764, 0.832, 0.832, 0.764, 0.772, 0.88,
- 1.016, 1.06, 1.14, 1.26, 1.32, 1.172, 1.044, 0.86, 0.672, 0.572,
- 0.424, 0.172, 0.036, 0.04, -0.02, -0.148, -0.296, -0.432, -0.652,
- -0.732, -0.708, -0.652, -1.136, -1.196, -0.972, -0.796, -0.776,
- -0.6, -0.556, -0.52, -0.464, -0.392, -0.308, -0.192
+ -0.052, 0.084, 0.104, 0.048, 0.012, -0.016, -0.068, -0.092, -0.084,
+ 0, 0.044, -0.204, -0.336, -0.308, -0.428, -0.544, -0.552, -0.504,
+ -0.512, -0.532, -0.492, -0.452, -0.456, -0.404, -0.4, -0.42, -0.368,
+ -0.344, -0.312, -0.224, -0.184, -0.148, -0.104, -0.116, -0.188,
+ -0.18, -0.144, -0.152, 0.008, 0.136, 0.152, 0.176, 0.184, 0.212,
+ 0.244, 0.276, 0.324, 0.332, 0.352
],
"y": [
- 1.2, 1.272, 1.288, 1.244, 1.116, 0.944, 0.76, 0.596, 0.484, 0.416,
- 0.316, 0.228, 0.032, -0.116, -0.144, -0.056, -0.088, -0.232, -0.384,
- -0.496, -0.544, -0.556, -0.5, -0.504, -0.508, -0.508, -0.692,
- -0.808, -0.808, -0.68, -0.76, -1.156, -0.72, -1.132, -1.008, -0.984,
- -0.904, -0.84, -0.824, -0.808, -0.776, -0.756, -0.72, -0.7
+ 0.336, 0.316, 0.24, 0.132, 0.028, -0.016, -0.064, -0.14, -0.144,
+ -0.132, -0.156, -0.164, -0.172, -0.168, -0.124, -0.072, -0.032,
+ -0.008, 0.064, 0.116, 0.172, 0.232, 0.268, 0.356, 0.412, 0.428,
+ 0.492, 0.556, 0.56, 0.552, 0.524, 0.524, 0.508, 0.48, 0.456, 0.444,
+ 0.46, 0.46, 0.464, 0.492, 0.484, 0.46, 0.44, 0.4, 0.368, 0.372,
+ 0.38, 0.332, 0.256
],
"z": [
- -0.376, -0.288, -0.224, -0.176, -0.176, -0.256, -0.344, -0.46,
- -0.56, -0.62, -0.688, -0.756, -0.832, -0.908, -0.912, -0.764,
- -0.728, -0.7, -0.736, -0.824, -0.82, -0.768, -0.776, -0.82, -0.792,
- -0.736, -0.772, -0.756, -0.62, -0.636, -0.688, -0.364, -0.552,
- -0.324, -0.724, -0.84, -0.736, -0.796, -0.736, -0.7, -0.744, -0.844,
- -0.888, -0.9
+ -0.84, -0.904, -0.964, -1.004, -1.064, -1.116, -1.156, -1.224,
+ -1.252, -1.256, -1.348, -1.24, -1.188, -1.252, -1.22, -1.14, -1.096,
+ -1.108, -1.056, -1.02, -0.988, -0.96, -0.9, -0.876, -0.828, -0.76,
+ -0.8, -0.752, -0.72, -0.74, -0.796, -0.824, -0.864, -0.9, -0.908,
+ -0.916, -0.928, -0.836, -0.86, -0.864, -0.824, -0.828, -0.82,
+ -0.852, -0.888, -0.888, -0.864, -0.852, -0.892
]
- }
+ },
+ "createdAt": 1730110809909
},
{
- "ID": 1729159387146,
+ "id": "4fe7a9df-3232-4ac5-9a28-71dedbab518c",
"data": {
"x": [
- 0.332, 0.356, 0.384, 0.356, 0.376, 0.312, 0.224, 0.292, 0.388,
- 0.344, 0.26, 0.232, 0.212, 0.22, 0.188, 0.112, 0.036, 0.004, 0.008,
- 0, -0.092, -0.136, -0.124, -0.144, -0.12, -0.008, 0.048, 0.076,
- 0.124, 0.136, 0.156, 0.24, 0.28, 0.248, 0.168, 0.116, 0.136, 0.176,
- 0.144, 0.152, 0.2, 0.084, 0.036, 0.1
+ 0.184, 0.172, 0.156, 0.168, 0.16, 0.18, 0.128, 0.168, 0.212, 0.128,
+ 0.096, 0.108, 0.112, 0.044, 0.036, 0.084, 0.14, 0.068, 0.056, 0.144,
+ 0.204, 0.16, 0.152, 0.16, 0.136, 0.136, 0.156, 0.192, 0.208, 0.156,
+ 0.124, 0.104, 0.088, 0.06, 0.068, 0.104, 0.056, 0.032, 0.076, 0.04,
+ 0.024, 0.016, -0.004, -0.012, -0.016, 0.012, 0.036, 0.024, 0.004
],
"y": [
- -0.036, -0.092, -0.128, -0.168, -0.18, -0.164, -0.176, -0.168,
- -0.208, -0.288, -0.344, -0.384, -0.384, -0.412, -0.352, -0.324,
- -0.264, -0.188, -0.112, -0.044, 0.02, 0.12, 0.2, 0.26, 0.368, 0.468,
- 0.552, 0.668, 0.796, 0.88, 0.924, 0.964, 0.968, 0.972, 1.02, 1.06,
- 1.092, 1.06, 0.976, 0.884, 0.752, 0.652, 0.556, 0.432
+ 0.376, 0.296, 0.248, 0.212, 0.212, 0.204, 0.188, 0.172, 0.132,
+ 0.124, 0.1, 0.084, -0.008, -0.112, -0.172, -0.16, -0.184, -0.292,
+ -0.392, -0.42, -0.424, -0.424, -0.408, -0.412, -0.46, -0.472,
+ -0.448, -0.42, -0.416, -0.408, -0.384, -0.36, -0.324, -0.296,
+ -0.256, -0.2, -0.196, -0.144, -0.096, -0.02, 0.02, 0.104, 0.172,
+ 0.248, 0.304, 0.372, 0.448, 0.5, 0.52
],
"z": [
- -1.252, -1.36, -1.396, -1.328, -1.368, -1.376, -1.36, -1.412,
- -1.456, -1.508, -1.548, -1.572, -1.548, -1.52, -1.432, -1.284,
- -1.112, -1.012, -0.944, -0.896, -0.8, -0.732, -0.688, -0.588, -0.46,
- -0.432, -0.4, -0.34, -0.332, -0.3, -0.292, -0.34, -0.388, -0.344,
- -0.268, -0.176, -0.164, -0.208, -0.184, -0.208, -0.38, -0.408, -0.4,
- -0.548
+ -0.912, -0.948, -0.956, -0.976, -0.92, -0.984, -0.936, -0.896,
+ -0.94, -0.924, -0.888, -0.864, -0.92, -0.996, -1.064, -1.072, -1.08,
+ -1.06, -1.068, -1.112, -1.12, -1.124, -1.124, -1.196, -1.196,
+ -1.168, -1.132, -1.116, -1.12, -1.092, -1.092, -1.096, -1.108,
+ -1.116, -1.1, -1.104, -1.08, -1.048, -1.068, -1.024, -1.016, -0.984,
+ -0.956, -0.948, -0.924, -0.876, -0.832, -0.796, -0.756
]
- }
+ },
+ "createdAt": 1730110805536
},
{
- "ID": 1729159381480,
+ "id": "140b3468-1bfa-4868-9ce8-e68bda104eab",
"data": {
"x": [
- 0.456, 0.536, 0.612, 0.696, 0.728, 0.628, 0.396, 0.164, 0.032,
- -0.056, -0.108, -0.044, -0.012, -0.148, -0.2, -0.136, -0.152,
- -0.296, -0.252, -0.06, -0.02, -0.1, -0.208, -0.276, -0.348, -0.304,
- -0.3, -0.428, -0.444, -0.42, -0.492, -0.508, -0.424, -0.3, -0.268,
- -0.272, -0.292, -0.328, -0.28, -0.212, -0.192, -0.184, -0.156, -0.06
+ 0.016, -0.06, -0.096, -0.096, -0.052, 0.052, 0.148, 0.256, 0.38,
+ 0.452, 0.524, 0.476, 0.44, 0.412, 0.356, 0.34, 0.332, 0.256, 0.256,
+ 0.28, 0.244, 0.204, 0.196, 0.196, 0.156, 0.136, 0.164, 0.188, 0.244,
+ 0.176, 0.072, -0.024, 0.012, 0.1, 0.168, 0.104, 0.076, 0.108, 0,
+ -0.112, -0.092, 0, 0.004, -0.096, -0.06, 0.008, -0.052, -0.196,
+ -0.192
],
"y": [
- 0.408, 0.448, 0.504, 0.548, 0.548, 0.456, 0.332, 0.22, 0.104, 0.024,
- -0.004, -0.016, -0.084, -0.132, -0.124, -0.088, -0.112, -0.108,
- -0.02, 0.02, -0.02, -0.112, -0.144, -0.132, -0.152, -0.136, -0.108,
- -0.148, -0.176, -0.172, -0.196, -0.288, -0.188, -0.196, -0.236,
- -0.264, -0.292, -0.304, -0.296, -0.26, -0.188, -0.1, -0.008, 0.1
+ 0.18, 0.092, 0.028, -0.076, -0.212, -0.264, -0.32, -0.376, -0.444,
+ -0.48, -0.436, -0.4, -0.372, -0.308, -0.212, -0.088, -0.032, 0.064,
+ 0.18, 0.212, 0.264, 0.356, 0.42, 0.464, 0.516, 0.572, 0.584, 0.656,
+ 0.668, 0.712, 0.708, 0.708, 0.74, 0.792, 0.812, 0.844, 0.9, 0.852,
+ 0.756, 0.692, 0.648, 0.636, 0.604, 0.588, 0.496, 0.504, 0.476,
+ 0.404, 0.36
],
"z": [
- -0.944, -0.884, -0.816, -0.808, -0.856, -0.924, -0.964, -0.956,
- -1.036, -1.076, -1.076, -1.12, -1.148, -1.06, -1.028, -1.056,
- -1.108, -1.016, -1.016, -1.08, -1.048, -1.036, -1.056, -1.064,
- -1.008, -1.024, -0.968, -0.868, -0.908, -0.968, -0.944, -0.928,
- -0.98, -1.036, -1.024, -1.084, -1.176, -1.24, -1.288, -1.288,
- -1.208, -1.084, -0.98, -0.944
+ -0.868, -0.94, -0.996, -1.004, -1.012, -1.108, -1.26, -1.384,
+ -1.544, -1.636, -1.688, -1.468, -1.276, -1.116, -0.948, -0.872,
+ -0.88, -0.86, -0.86, -0.9, -0.892, -0.856, -0.836, -0.844, -0.8,
+ -0.724, -0.68, -0.6, -0.652, -0.64, -0.7, -0.64, -0.648, -0.556,
+ -0.556, -0.492, -0.388, -0.456, -0.548, -0.604, -0.676, -0.768,
+ -0.848, -0.744, -0.764, -0.872, -0.904, -0.816, -0.832
]
- }
+ },
+ "createdAt": 1730110801292
},
{
- "ID": 1729159377294,
+ "id": "deda7d69-97dc-43b4-84bd-55afb661c7db",
"data": {
"x": [
- -1.008, -0.912, -0.884, -0.856, -0.792, -0.728, -0.616, -0.44,
- -0.264, -0.208, -0.22, -0.208, -0.236, -0.324, -0.356, -0.404,
- -0.476, -0.564, -0.584, -0.652, -0.8, -0.78, -0.676, -0.604, -0.516,
- -0.5, -0.508, -0.496, -0.408, -0.24, -0.124, 0.04, 0.48, 0.64,
- 0.108, -0.404, -0.256, -0.12, -0.064, 0.076, 0.192, 0.396, 0.516,
- 0.436, 0.308
+ -0.62, -0.552, -0.42, -0.316, -0.284, -0.212, -0.104, 0, 0.172,
+ 0.392, 0.536, 0.58, 0.572, 0.532, 0.456, 0.36, 0.408, 0.528, 0.54,
+ 0.548, 0.616, 0.624, 0.632, 0.652, 0.7, 0.7, 0.644, 0.528, 0.4,
+ 0.332, 0.396, 0.396, 0.348, 0.34, 0.308, 0.208, 0.1, 0.068, 0.104,
+ 0.1, 0.024, -0.028, -0.024, -0.068, -0.244, -0.424, -0.392
],
"y": [
- 0.508, 0.524, 0.52, 0.524, 0.512, 0.508, 0.512, 0.492, 0.484, 0.46,
- 0.448, 0.452, 0.516, 0.484, 0.364, 0.272, 0.24, 0.184, 0.124, 0.076,
- 0.132, 0.076, 0.008, -0.028, -0.028, 0.008, 0.012, 0.012, 0.024,
- 0.044, 0.04, 0.092, 0.328, 0.632, 0.66, 0.644, 0.676, 0.676, 0.72,
- 0.868, 0.996, 1.072, 1.008, 0.832, 0.68
+ -0.268, -0.144, -0.12, -0.048, 0.044, 0.124, 0.192, 0.236, 0.272,
+ 0.28, 0.3, 0.312, 0.304, 0.264, 0.168, 0.092, 0.052, 0.004, -0.052,
+ -0.084, -0.116, -0.188, -0.264, -0.384, -0.436, -0.408, -0.408,
+ -0.408, -0.416, -0.356, -0.296, -0.236, -0.16, -0.076, 0, 0.064,
+ 0.136, 0.228, 0.324, 0.388, 0.4, 0.396, 0.388, 0.38, 0.3, 0.236,
+ 0.188
],
"z": [
- 0.284, 0.356, 0.384, 0.328, 0.22, 0.184, 0.14, 0.044, -0.064,
- -0.164, -0.196, -0.208, -0.212, -0.196, -0.256, -0.432, -0.616,
- -0.752, -1.024, -1.192, -1.196, -1.368, -1.58, -1.816, -1.912,
- -1.828, -1.712, -1.66, -1.592, -1.536, -1.408, -1.092, -0.732,
- -0.848, -0.724, -0.52, -0.732, -0.62, -0.436, -0.364, -0.148, -0.14,
- -0.276, -0.32, -0.396
+ -0.972, -0.956, -0.964, -0.94, -0.856, -0.752, -0.704, -0.668,
+ -0.664, -0.76, -0.784, -0.756, -0.712, -0.724, -0.756, -0.772,
+ -0.812, -0.896, -0.908, -0.896, -0.932, -0.94, -0.996, -1.064,
+ -1.148, -1.24, -1.276, -1.248, -1.168, -1.088, -1.072, -1.044,
+ -1.008, -1.024, -1.052, -0.996, -0.9, -0.8, -0.704, -0.672, -0.664,
+ -0.66, -0.72, -0.76, -0.78, -0.672, -0.716
]
- }
+ },
+ "createdAt": 1730110797072
},
{
- "ID": 1729159373130,
+ "id": "a23ad509-a7af-4140-aa42-dba9a936bd0e",
"data": {
"x": [
- 1.004, 1.408, 1.528, 1.192, 0.94, 0.636, 0.584, 0.5, 0.168, -0.004,
- 0.1, -0.024, -0.292, -0.56, -0.6, -0.42, -0.488, -0.7, -0.784,
- -0.772, -0.84, -1.012, -1.184, -1.352, -1.552, -1.784, -1.788,
- -1.596, -1.412, -1.148, -0.928, -0.716, -0.532, -0.332, -0.24,
- -0.212, -0.124, -0.08, -0.036, -0.004, 0.004, -0.06, -0.092, 0.008
+ -0.536, -0.568, -0.628, -0.78, -0.856, -0.792, -0.7, -0.636, -0.54,
+ -0.456, -0.444, -0.396, -0.296, -0.288, -0.256, -0.056, -0.18,
+ -0.328, -0.252, -0.128, -0.112, -0.02, 0.008, -0.076, -0.06, -0.036,
+ 0.008, 0.172, 0.284, 0.34, 0.412, 0.444, 0.508, 0.576, 0.56, 0.66,
+ 0.66, 0.356, 0.168, 0.28, 0.46, 0.512, 0.524, 0.424, 0.288, 0.248,
+ 0.08, -0.08, -0.036
],
"y": [
- 0.304, 0.356, 0.496, 0.452, 0.344, 0.448, 0.596, 0.644, 0.632,
- 0.604, 0.656, 0.732, 0.5, 0.368, 0.28, 0.216, -0.012, -0.324,
- -0.472, -0.596, -0.892, -1.24, -1.492, -1.644, -1.808, -1.844,
- -1.572, -1.244, -0.856, -0.596, -0.344, -0.192, -0.06, 0.068, 0.288,
- 0.528, 0.612, 0.648, 0.672, 0.644, 0.668, 0.6, 0.536, 0.452
+ 0.028, 0.06, 0.036, -0.02, 0.044, 0.148, 0.18, 0.236, 0.26, 0.292,
+ 0.268, 0.26, 0.244, 0.244, 0.264, 0.18, 0.244, 0.252, 0.252, 0.228,
+ 0.168, 0.196, 0.264, 0.264, 0.26, 0.288, 0.256, 0.184, 0.184, 0.236,
+ 0.144, 0.04, 0.092, 0.136, 0.124, 0.056, -0.012, -0.084, -0.088,
+ -0.112, -0.216, -0.316, -0.424, -0.52, -0.54, -0.528, -0.492,
+ -0.384, -0.284
],
"z": [
- -2.032, -2.04, -1.648, -1.392, -1.248, -0.984, -0.756, -0.524,
- -0.048, 0.16, 0.1, 0.268, 0.488, 0.332, 0.124, -0.208, -0.32,
- -0.512, -0.784, -0.988, -1.116, -1.232, -1.368, -1.48, -1.456,
- -1.26, -1.048, -0.808, -0.56, -0.468, -0.384, -0.332, -0.304,
- -0.216, -0.016, 0.152, 0.112, 0.012, -0.152, -0.316, -0.508, -0.596,
- -0.672, -0.856
+ -0.968, -0.928, -0.96, -0.908, -0.892, -0.92, -0.932, -0.92, -0.932,
+ -0.904, -0.852, -0.892, -0.968, -0.96, -0.94, -1.096, -1.088,
+ -0.988, -1.032, -1.044, -1.012, -1.016, -1.012, -0.9, -0.844, -0.86,
+ -0.884, -0.996, -0.988, -0.908, -0.904, -0.884, -0.896, -0.924,
+ -0.844, -0.884, -1.052, -0.908, -0.848, -0.96, -1.092, -1.16,
+ -1.196, -1.172, -1.176, -1.304, -1.296, -1.156, -1.08
]
- }
- },
- {
- "ID": 1729159368840,
- "data": {
- "x": [
- -0.412, -0.416, -0.44, -0.388, -0.26, -0.152, -0.072, -0.048, -0.1,
- -0.076, 0.004, 0.012, -0.008, -0.024, -0.024, -0.004, 0.032, 0.044,
- -0.016, -0.132, -0.192, -0.264, -0.316, -0.38, -0.34, -0.28, -0.404,
- -0.612, -0.644, -0.576, -0.584, -0.568, -0.624, -0.748, -0.772,
- -0.668, -0.556, -0.512, -0.6, -0.7, -0.688, -0.632, -0.604, -0.648
- ],
- "y": [
- 0.284, 0.296, 0.312, 0.32, 0.352, 0.36, 0.38, 0.416, 0.472, 0.492,
- 0.48, 0.432, 0.428, 0.368, 0.348, 0.38, 0.38, 0.32, 0.26, 0.216,
- 0.232, 0.216, 0.096, 0.068, 0.152, 0.148, 0.024, -0.016, -0.008,
- 0.004, 0.028, -0.072, -0.028, 0.02, 0.156, 0.316, 0.42, 0.5, 0.488,
- 0.444, 0.504, 0.572, 0.648, 0.632
- ],
- "z": [
- -0.872, -0.884, -0.868, -0.888, -0.932, -0.952, -0.996, -1.036,
- -0.976, -0.908, -0.984, -0.992, -0.96, -0.976, -1.072, -1.008,
- -0.972, -1, -1.116, -1.068, -1.02, -0.928, -1.148, -1.216, -1.004,
- -0.98, -1.172, -1.196, -1.092, -1.04, -1.008, -1.144, -1.14, -0.972,
- -0.824, -0.66, -0.476, -0.368, -0.188, -0.068, -0.012, 0.052, 0.112,
- 0.176
- ]
- }
- },
- {
- "ID": 1729159364771,
- "data": {
- "x": [
- -0.828, -0.828, -0.792, -0.788, -0.804, -0.792, -0.768, -0.724,
- -0.692, -0.704, -0.7, -0.656, -0.6, -0.576, -0.58, -0.604, -0.604,
- -0.604, -0.58, -0.564, -0.584, -0.624, -0.648, -0.652, -0.648,
- -0.656, -0.664, -0.66, -0.668, -0.688, -0.704, -0.776, -0.868,
- -0.86, -0.976, -1, -0.84, -0.696, -0.704, -0.716, -0.628, -0.512,
- -0.488, -0.476, -0.476, -0.472
- ],
- "y": [
- -0.232, -0.212, -0.204, -0.22, -0.236, -0.236, -0.236, -0.236,
- -0.228, -0.232, -0.208, -0.2, -0.18, -0.16, -0.16, -0.184, -0.188,
- -0.18, -0.188, -0.188, -0.184, -0.22, -0.24, -0.256, -0.256, -0.264,
- -0.264, -0.272, -0.26, -0.264, -0.272, -0.296, -0.328, -0.348,
- -0.32, -0.292, -0.256, -0.228, -0.244, -0.224, -0.172, -0.148,
- -0.12, -0.064, 0.016, 0.096
- ],
- "z": [
- -0.676, -0.676, -0.708, -0.728, -0.732, -0.736, -0.748, -0.756,
- -0.784, -0.756, -0.748, -0.764, -0.752, -0.764, -0.756, -0.764,
- -0.772, -0.776, -0.756, -0.772, -0.792, -0.8, -0.832, -0.848,
- -0.864, -0.868, -0.832, -0.844, -0.836, -0.828, -0.816, -0.792,
- -0.764, -0.828, -0.74, -0.644, -0.704, -0.764, -0.776, -0.784,
- -0.864, -0.94, -0.916, -0.876, -0.82, -0.764
- ]
- }
- },
- {
- "ID": 1729159360601,
- "data": {
- "x": [
- -0.008, 0.04, 0.036, -0.032, -0.12, -0.196, -0.172, -0.064, 0,
- -0.004, -0.036, -0.076, -0.092, -0.052, -0.016, -0.044, -0.104,
- -0.1, -0.12, -0.132, -0.068, -0.036, -0.048, -0.064, -0.068, -0.072,
- -0.056, -0.016, -0.004, -0.024, -0.06, -0.1, -0.156, -0.188, -0.14,
- -0.1, -0.076, -0.04, -0.024, -0.004, -0.016, -0.028, -0.064, -0.092
- ],
- "y": [
- -1.048, -1.06, -1.072, -1.104, -1.136, -1.14, -1.1, -1.084, -1.064,
- -1.048, -1.048, -1.044, -1.024, -1.008, -0.984, -0.964, -0.952,
- -0.972, -0.98, -0.988, -0.992, -0.976, -0.972, -0.988, -0.992,
- -1.004, -0.996, -0.988, -0.976, -0.98, -0.992, -0.976, -0.976,
- -0.96, -0.968, -0.972, -0.984, -0.98, -0.996, -1.024, -1.04, -1.056,
- -1.08, -1.08
- ],
- "z": [
- 0.18, 0.136, 0.156, 0.188, 0.212, 0.244, 0.236, 0.212, 0.224, 0.3,
- 0.344, 0.34, 0.288, 0.264, 0.304, 0.36, 0.376, 0.312, 0.296, 0.288,
- 0.26, 0.292, 0.36, 0.376, 0.348, 0.324, 0.292, 0.28, 0.256, 0.248,
- 0.228, 0.224, 0.244, 0.24, 0.216, 0.208, 0.204, 0.196, 0.18, 0.176,
- 0.16, 0.156, 0.148, 0.12
- ]
- }
- },
+ },
+ "createdAt": 1730110792926
+ }
+ ]
+ },
+ {
+ "id": "931f1732-5bdc-4baf-b560-beecf1333439",
+ "name": "poke",
+ "icon": "Sword",
+ "createdAt": 1730110845881,
+ "recordings": [
{
- "ID": 1729159356485,
+ "id": "adef518e-1296-4f10-a412-44e8c02b50a4",
"data": {
"x": [
- -0.476, -0.472, -0.46, -0.468, -0.492, -0.476, -0.512, -0.492,
- -0.516, -0.5, -0.46, -0.464, -0.464, -0.484, -0.492, -0.488, -0.468,
- -0.456, -0.448, -0.444, -0.468, -0.472, -0.48, -0.484, -0.476,
- -0.472, -0.464, -0.444, -0.448, -0.468, -0.456, -0.448, -0.452,
- -0.46, -0.448, -0.444, -0.452, -0.472, -0.472, -0.492, -0.464,
- -0.456, -0.452, -0.456
+ -0.024, -0.02, -0.052, -0.04, -0.036, -0.048, -0.016, -0.012,
+ -0.056, -0.052, -0.072, -0.056, -0.056, -0.084, -0.096, -0.048,
+ -0.02, -0.008, -0.104, -0.072, 0.084, 0.332, 0.46, -0.584, -1.532,
+ -0.956, -1.552, -0.62, 0.392, -0.08, -0.36, -0.28, -0.156, 0.016,
+ -0.184, -0.28, -0.38, -0.412, -0.252, -0.164, -0.112, -0.088,
+ -0.168, -0.144, -0.112, -0.092, -0.14, -0.16
],
"y": [
- 0.316, 0.332, 0.328, 0.328, 0.312, 0.312, 0.324, 0.328, 0.324, 0.34,
- 0.36, 0.34, 0.308, 0.292, 0.304, 0.288, 0.292, 0.308, 0.308, 0.328,
- 0.324, 0.312, 0.304, 0.3, 0.308, 0.312, 0.328, 0.336, 0.332, 0.328,
- 0.328, 0.344, 0.344, 0.332, 0.32, 0.312, 0.312, 0.32, 0.312, 0.32,
- 0.308, 0.288, 0.284, 0.28
+ 0.1, 0.1, 0.108, 0.088, 0.1, 0.112, 0.128, 0.112, 0.088, 0.072,
+ 0.056, 0.08, 0.128, 0.2, 0.288, 0.412, 0.672, 1.068, 1.572, 2.04,
+ 2.04, 2.04, 0.356, -2.04, -2.04, -2.04, -1.544, -1.164, -0.436,
+ -0.104, 0.18, 0.3, 0.3, 0.212, 0.092, -0.028, -0.076, -0.04, 0.04,
+ 0.128, 0.196, 0.212, 0.204, 0.156, 0.168, 0.156, 0.092, 0.052
],
"z": [
- -0.88, -0.884, -0.884, -0.86, -0.876, -0.884, -0.848, -0.856,
- -0.844, -0.864, -0.88, -0.868, -0.868, -0.884, -0.912, -0.904,
- -0.908, -0.908, -0.904, -0.884, -0.872, -0.896, -0.888, -0.88,
- -0.884, -0.868, -0.856, -0.884, -0.88, -0.888, -0.888, -0.88,
- -0.884, -0.892, -0.884, -0.904, -0.912, -0.9, -0.904, -0.9, -0.928,
- -0.924, -0.92, -0.904
+ -1.064, -1.024, -1.008, -1.032, -1.032, -1.02, -1.004, -1.004,
+ -1.012, -1.056, -1.048, -1.072, -1.06, -1.012, -0.96, -0.956,
+ -0.888, -0.832, -0.72, -0.816, -0.72, -0.352, -0.624, -0.152, -1.94,
+ -1.412, -1.24, -1.896, -2.04, -1.38, -0.78, -0.544, -0.544, -0.928,
+ -0.98, -1.108, -1.188, -1.188, -1.212, -1.1, -0.996, -0.964, -0.94,
+ -0.98, -1.012, -1.052, -1.036, -1.04
]
- }
+ },
+ "createdAt": 1730110894817
},
{
- "ID": 1729159352516,
+ "id": "fcfbd9e4-9f40-4a4a-9361-b7035d767446",
"data": {
"x": [
- 0.032, 0.02, 0.04, 0.052, 0.088, 0.072, 0.076, 0.084, 0.088, 0.104,
- 0.116, 0.144, 0.136, 0.148, 0.124, 0.084, 0.084, 0.088, 0.1, 0.104,
- 0.092, 0.132, 0.168, 0.124, 0.084, 0.076, 0.124, 0.128, 0.08, 0.064,
- 0.092, 0.088, 0.088, 0.104, 0.064, 0.028, 0.048, 0.076, 0.072, 0.08,
- 0.064, 0.08, 0.12, 0.12
+ -0.068, -0.056, -0.032, -0.036, -0.068, -0.048, -0.028, -0.032,
+ -0.028, -0.056, -0.108, -0.096, -0.084, -0.1, -0.056, -0.032, -0.02,
+ -0.02, 0.004, -0.004, 0.2, 0, -0.328, -0.068, 0.276, -0.52, -0.812,
+ -1.22, -1.088, 0.184, -0.032, -0.34, -0.34, -0.3, -0.044, -0.108,
+ -0.256, -0.3, -0.316, -0.252, -0.164, -0.12, -0.116, -0.116, -0.076,
+ -0.028, -0.048, -0.036, -0.004
],
"y": [
- 0.3, 0.316, 0.312, 0.308, 0.324, 0.336, 0.34, 0.348, 0.344, 0.332,
- 0.332, 0.34, 0.336, 0.324, 0.288, 0.268, 0.288, 0.312, 0.328, 0.344,
- 0.348, 0.36, 0.372, 0.376, 0.34, 0.312, 0.312, 0.312, 0.316, 0.312,
- 0.3, 0.288, 0.284, 0.3, 0.3, 0.296, 0.316, 0.308, 0.324, 0.316,
- 0.324, 0.28, 0.268, 0.276
+ -0.012, -0.04, -0.024, -0.02, -0.02, -0.012, -0.004, 0.04, 0.096,
+ 0.116, 0.108, 0.1, 0.048, -0.012, -0.008, -0.004, 0.068, 0.196,
+ 0.472, 0.98, 1.824, 2.04, 2.04, 2.04, -0.368, -2.04, -2.04, -2.04,
+ -2.04, -1.196, -0.504, -0.056, 0.168, 0.22, 0.14, 0.064, 0.036,
+ -0.028, -0.064, -0.06, 0.024, 0.044, 0.068, 0.088, 0.08, 0.076,
+ 0.092, 0.096, 0.08
],
"z": [
- -0.992, -0.988, -0.972, -0.976, -0.988, -0.972, -0.96, -0.964,
- -0.964, -0.988, -0.984, -0.992, -0.96, -0.96, -0.984, -1.008,
- -1.028, -1.012, -0.996, -0.984, -0.964, -0.972, -0.976, -0.972,
- -0.984, -0.988, -1, -0.992, -0.968, -0.964, -0.984, -0.98, -0.988,
- -1.004, -0.992, -0.996, -1.016, -1.024, -0.984, -0.988, -0.988,
- -0.988, -0.996, -0.984
+ -1.048, -1.056, -1.064, -1.056, -1.036, -1.052, -1.064, -1.044,
+ -1.024, -0.988, -0.992, -1.036, -1.048, -1.024, -1.06, -1.056,
+ -1.04, -1.004, -0.944, -0.832, -0.972, -0.744, -0.176, -0.132,
+ -0.592, -0.576, -1.284, -1.46, -1.492, -2.04, -1.612, -0.908,
+ -0.608, -0.488, -0.828, -0.984, -1.016, -1.088, -1.14, -1.092,
+ -1.08, -1.008, -0.988, -0.996, -1.004, -1.044, -1.024, -1.004,
+ -1.012
]
- }
+ },
+ "createdAt": 1730110890482
},
{
- "ID": 1729159347563,
+ "id": "39081e43-edbe-4878-b92d-f9f10873eb60",
"data": {
"x": [
- 0.508, 0.716, 1.004, 1.18, 1.256, 1.196, 1.136, 1.172, 1.252, 1.304,
- 1.288, 1.312, 1.316, 1.22, 1.108, 0.88, 0.52, 0.216, -0.104, -0.3,
- -0.336, -0.4, -0.468, -0.528, -0.516, -0.572, -0.672, -0.704,
- -0.572, -0.372, -0.316, -0.392, -0.5, -0.6, -0.72, -0.812, -0.792,
- -0.688, -0.86, -1.224, -1.372, -1.344
+ -0.068, -0.072, -0.072, -0.084, -0.06, -0.084, -0.068, -0.048,
+ -0.06, -0.04, -0.012, -0.024, -0.064, -0.068, -0.084, -0.096, -0.08,
+ -0.056, -0.048, -0.056, -0.044, -0.048, -0.036, -0.084, -0.212,
+ -0.152, -0.064, 0.152, 0.16, 0.328, 0.652, 0.56, -0.504, -1.552,
+ -1.284, -1.016, 0.228, 0.132, -0.528, -0.364, -0.124, 0.128, 0.132,
+ -0.14, -0.244, -0.252, -0.196, -0.116, -0.076, -0.092
],
"y": [
- 0.368, 0.436, 0.472, 0.444, 0.396, 0.38, 0.376, 0.332, 0.412, 0.384,
- 0.5, 0.508, 0.524, 0.756, 0.484, 0.468, 0.68, 0.52, 0.588, 0.62,
- 0.564, 0.544, 0.544, 0.584, 0.604, 0.612, 0.608, 0.612, 0.648, 0.7,
- 0.692, 0.66, 0.588, 0.524, 0.472, 0.396, 0.316, 0.236, -0.104, -0.1,
- -0.368, -0.328
+ 0.08, 0.084, 0.08, 0.1, 0.088, 0.076, 0.064, 0.052, 0.076, 0.096,
+ 0.1, 0.092, 0.072, 0.068, 0.064, 0.064, 0.072, 0.08, 0.076, 0.068,
+ 0.076, 0.136, 0.204, 0.312, 0.448, 0.804, 1.42, 2.04, 2.04, 2.04,
+ 1.156, -0.52, -2.04, -2.04, -2.04, -2.04, -1.288, -0.556, -0.152,
+ 0.108, 0.228, 0.2, 0.148, 0.1, 0.048, 0, 0.004, -0.004, 0.016, 0.02
],
"z": [
- 0.532, 0.288, 0.224, 0.328, 0.344, 0.32, 0.356, 0.372, 0.304, 0.196,
- 0.076, -0.124, -0.236, -0.164, -0.24, -0.192, -0.168, -0.14, -0.292,
- -0.388, -0.564, -0.632, -0.584, -0.548, -0.524, -0.392, -0.284,
- -0.228, -0.36, -0.552, -0.584, -0.476, -0.432, -0.368, -0.364,
- -0.504, -0.652, -0.796, -0.792, -0.6, -0.312, -0.44
+ -1.056, -1.032, -1.04, -1.02, -1.032, -1.016, -1.028, -1.052,
+ -1.032, -1.016, -1.016, -1.024, -1.032, -1.068, -1.06, -1.06,
+ -1.044, -1.036, -1.032, -1.032, -1.036, -1.036, -1, -0.944, -0.796,
+ -0.812, -0.856, -0.92, -0.504, -0.316, -0.68, -1.008, -0.52, -0.176,
+ -1.304, -1.704, -2.04, -1.968, -0.92, -0.632, -0.556, -0.792, -0.98,
+ -0.912, -0.972, -1.024, -1.072, -1.132, -1.1, -1.06
]
- }
+ },
+ "createdAt": 1730110885869
},
{
- "ID": 1729159343095,
+ "id": "098069b5-7da6-4008-8421-a63b5112a03a",
"data": {
"x": [
- 0.064, 0.256, 0.348, 0.284, 0.224, 0.096, -0.212, -0.74, -0.888,
- -1.032, -0.808, -0.508, -0.536, -0.556, -0.44, -0.336, -0.288,
- -0.28, -0.208, -0.064, 0.036, 0.032, -0.02, -0.092, -0.104, -0.048,
- -0.036, -0.092, -0.292, -0.464, -0.488, -0.436, -0.428, -0.48,
- -0.584, -0.612, -0.704, -0.816, -0.868, -0.792, -0.676, -0.636,
- -0.572, -0.488
+ -0.14, -0.12, -0.116, -0.16, -0.132, -0.092, -0.088, -0.08, -0.092,
+ -0.08, -0.08, -0.08, -0.032, -0.02, -0.052, -0.064, -0.092, -0.072,
+ -0.08, -0.04, 0.02, 0.052, 0.136, 0.096, -0.08, 0.148, 0.352,
+ -1.196, -0.96, -1.156, -0.864, 0.556, 0.052, -0.284, -0.38, -0.216,
+ 0.184, 0.136, -0.204, -0.268, -0.28, -0.216, -0.06, -0.004, 0.044,
+ 0.068, 0.024, 0.02, 0.02
],
"y": [
- 0.568, 0.6, 0.616, 0.644, 0.64, 0.6, 0.432, 0.352, 0.308, 0.376,
- 0.404, 0.424, 0.36, 0.3, 0.3, 0.304, 0.32, 0.3, 0.316, 0.388, 0.432,
- 0.448, 0.448, 0.476, 0.544, 0.608, 0.64, 0.604, 0.508, 0.368, 0.396,
- 0.34, 0.304, 0.136, 0.196, 0.184, 0.16, 0.104, 0.08, 0.104, 0.132,
- 0.128, 0.112, 0.112
+ 0.084, 0.112, 0.112, 0.116, 0.152, 0.148, 0.14, 0.152, 0.128, 0.1,
+ 0.072, 0.068, 0.096, 0.088, 0.068, 0.092, 0.14, 0.196, 0.268, 0.384,
+ 0.648, 1.076, 1.668, 2.04, 2.04, 2.04, -0.184, -2.04, -2.04, -2.04,
+ -2.04, -1.272, -0.564, -0.044, 0.208, 0.28, 0.256, 0.124, -0.064,
+ -0.192, -0.164, -0.108, -0.048, 0.028, 0.1, 0.148, 0.136, 0.136,
+ 0.124
],
"z": [
- -0.76, -0.884, -0.908, -1.028, -1.196, -1.412, -1.312, -1.088,
- -1.108, -0.96, -1.008, -1.148, -1.092, -1.12, -1.16, -1.176, -1.128,
- -1.04, -0.944, -0.892, -0.84, -0.784, -0.728, -0.632, -0.536,
- -0.508, -0.52, -0.544, -0.512, -0.584, -0.72, -0.84, -0.928, -0.916,
- -0.904, -0.932, -0.856, -0.824, -0.84, -0.9, -0.912, -0.864, -0.9,
- -0.94
+ -1.02, -0.996, -0.98, -0.972, -0.992, -0.992, -0.988, -1, -1.024,
+ -1.032, -1.044, -1.056, -1.076, -1.06, -1.04, -1.048, -1.008,
+ -1.008, -0.92, -0.884, -0.84, -0.74, -0.788, -0.896, -0.72, -0.472,
+ -0.208, 0.768, -0.756, -1.86, -2.04, -2.04, -2.04, -1.144, -0.388,
+ -0.152, -0.56, -0.888, -0.964, -1.196, -1.284, -1.24, -1.208,
+ -1.076, -1.02, -0.988, -0.964, -1.012, -1.06
]
- }
- }
- ],
- "requiredConfidence": 0.35000000000000003
- },
- {
- "icon": "Tortoise",
- "ID": 1729160762766,
- "name": "flick-and-wait",
- "recordings": [
- {
- "ID": 1729160809521,
- "data": {
- "x": [
- 0.156, 0.18, 0.172, 0.148, 0.16, 0.168, 0.192, 0.212, 0.204, 0.18,
- 0.168, 0.192, 0.192, 0.164, 0.156, 0.22, 0.288, 0.356, -0.06, -2.04,
- -2.04, 1.052, 2.04, 2.04, 2.04, 2.04, 1.164, 0.616, 0.356, -0.524,
- -0.268, -0.164, -0.328, -0.36, -0.212, -0.084, -0.048, -0.14,
- -0.088, -0.1, -0.216, -0.272, -0.244, -0.216
- ],
- "y": [
- -0.336, -0.348, -0.348, -0.36, -0.36, -0.352, -0.356, -0.352,
- -0.348, -0.372, -0.356, -0.328, -0.328, -0.34, -0.348, -0.336,
- -0.288, -0.216, -0.684, -2.04, -2.04, -2.04, -2.04, -2.04, -1.212,
- 1.616, 1.028, 1.12, 1.032, 1.008, 0.916, 0.856, 0.78, 0.796, 0.768,
- 0.752, 0.74, 0.688, 0.708, 0.704, 0.708, 0.68, 0.676, 0.696
- ],
- "z": [
- -0.944, -0.98, -0.988, -0.964, -0.948, -0.96, -0.948, -0.96, -0.964,
- -0.94, -0.948, -0.952, -0.944, -0.928, -0.904, -0.952, -0.936,
- -1.068, -2.04, -2.04, -2.04, -2.04, -0.616, 1.604, 2.04, 2.04, 0.44,
- 0.012, -1.248, -0.944, -0.848, -0.484, -0.476, -0.608, -0.668,
- -0.748, -0.764, -0.808, -0.8, -0.756, -0.804, -0.856, -0.868, -0.868
- ]
- }
+ },
+ "createdAt": 1730110881733
},
{
- "ID": 1729160804665,
+ "id": "37992398-b615-466e-ac1c-be4d4a685d14",
"data": {
"x": [
- 0.168, 0.14, 0.124, 0.14, 0.168, 0.192, 0.212, 0.2, 0.156, 0.148,
- 0.156, 0.156, 0.132, 0.124, 0.128, 0.14, 0.12, -0.112, -1.276,
- -2.04, -0.532, 2.04, 2.04, 2.04, 1.596, -0.12, 0.292, 0.996, -0.544,
- -0.188, 0.116, -0.38, -0.436, -0.064, -0.052, -0.208, -0.04, 0.016,
- -0.04, -0.052, -0.076, -0.156, -0.18, -0.124, -0.096
+ 0.004, -0.024, -0.016, 0, 0.008, 0.04, 0.032, 0.024, 0.016, -0.004,
+ -0.02, 0.016, 0.068, 0.044, -0.012, -0.124, -0.044, 0.02, 0.124,
+ 0.268, 0.324, 0.568, 0.26, -1.384, -1.488, -1.232, -0.288, 0.484,
+ -0.392, -0.516, -0.344, -0.132, 0.224, 0.06, -0.136, -0.084, -0.1,
+ -0.056, -0.008, -0.072, -0.012, -0.02, -0.052, -0.064, -0.072,
+ -0.116, -0.164, -0.212, -0.148
],
"y": [
- -0.464, -0.496, -0.512, -0.524, -0.528, -0.516, -0.508, -0.48,
- -0.476, -0.468, -0.48, -0.504, -0.5, -0.488, -0.488, -0.468, -0.428,
- -0.516, -1.616, -2.04, -2.04, -2.04, -2.04, 0.032, 1.556, -0.016,
- 0.648, 0.464, 0.216, 0.416, 0.74, 0.68, 0.584, 0.604, 0.536, 0.408,
- 0.436, 0.46, 0.464, 0.484, 0.464, 0.436, 0.428, 0.46, 0.456
+ -0.004, -0.028, -0.02, -0.004, 0.016, 0.044, 0.036, 0.032, 0.02,
+ 0.008, 0.016, 0.108, 0.252, 0.492, 0.76, 0.876, 0.916, 0.976, 1.304,
+ 2.04, 2.04, 1.752, -2.032, -2.04, -2.04, -2.04, -2.04, -1.184,
+ -0.548, -0.188, 0.056, 0.012, -0.084, -0.168, -0.252, -0.276, -0.28,
+ -0.192, -0.152, -0.144, -0.116, -0.084, -0.024, -0.032, -0.04,
+ -0.096, -0.02, 0.056, 0.164
],
"z": [
- -0.904, -0.884, -0.892, -0.912, -0.92, -0.904, -0.896, -0.876,
- -0.828, -0.86, -0.892, -0.904, -0.904, -0.896, -0.884, -0.872,
- -0.912, -1.26, -2.04, -2.04, -2.04, -2.04, 0.912, 2.04, 2.04, 2.04,
- -0.828, -2.04, -1.38, -1.572, -1.048, -0.544, -0.688, -0.952, -1,
- -0.928, -1.02, -0.98, -0.912, -0.912, -0.972, -1, -1.044, -0.976,
- -0.94
+ -1.056, -1.06, -1.068, -1.068, -1.036, -1.02, -1.016, -1.032,
+ -1.012, -1.016, -1, -0.98, -0.932, -0.94, -1, -0.872, -0.768,
+ -0.716, -0.812, -1.176, -1.296, -1.096, -0.188, 1.08, -0.38, -1.516,
+ -2.04, -2.04, -1.452, -0.856, -0.524, -0.48, -0.92, -1.036, -1.076,
+ -1.208, -1.168, -1.096, -1, -0.9, -0.904, -0.888, -0.88, -0.872,
+ -0.9, -0.912, -0.916, -0.98, -1.076
]
- }
+ },
+ "createdAt": 1730110877571
},
{
- "ID": 1729160799654,
+ "id": "e2b2d824-4b57-4f1a-9ddf-7c689f02d912",
"data": {
"x": [
- 0.224, 0.224, 0.204, 0.228, 0.212, 0.2, 0.228, 0.216, 0.216, 0.212,
- 0.22, 0.212, 0.204, 0.204, 0.216, 0.18, 0.212, 0.228, 0.24, 0.26,
- 0.248, 0.264, 0.34, 0.476, 0.328, -1.06, -2.04, -0.62, 2.04, 2.04,
- 2.04, 2.04, -1.156, -0.936, 1.196, 0.236, -0.748, -0.004, -0.052,
- -0.348, -0.364, -0.288, -0.272, -0.184, -0.116
+ -0.056, -0.036, 0, 0.008, 0.016, 0, -0.06, -0.072, 0.08, 0.204,
+ 0.184, 0.408, 0.58, 0.592, 0.604, 0.528, 0.356, 0.208, -1.8, -0.908,
+ -1.808, -1.252, 0.58, -0.26, -0.356, -0.136, -0.072, 0.104, -0.184,
+ -0.256, -0.204, -0.108, 0.012, 0.024, -0.02, -0.08, -0.068, -0.06,
+ -0.068, 0.004, 0.024, 0.004, 0.016, 0.024, 0.008, -0.008, -0.012,
+ -0.032, 0
],
"y": [
- -0.52, -0.508, -0.52, -0.516, -0.508, -0.512, -0.5, -0.512, -0.52,
- -0.52, -0.512, -0.508, -0.52, -0.52, -0.516, -0.52, -0.512, -0.516,
- -0.516, -0.512, -0.508, -0.476, -0.432, -0.3, -0.532, -1.708, -2.04,
- -2.04, -2.04, -2.04, -0.568, 0.108, 0.876, -1.144, -0.144, 0.164,
- -0.004, 0.696, 0.792, 0.584, 0.472, 0.444, 0.476, 0.54, 0.568
+ 0.2, 0.24, 0.192, 0.104, 0.144, 0.232, 0.22, 0.228, 0.448, 0.424,
+ 0.324, 0.264, 0.544, 1.344, 2.04, 2.04, 2.04, -1.78, -2.04, -2.04,
+ -2.04, -1.92, -0.796, -0.172, 0.172, 0.276, 0.252, 0.148, 0.032,
+ -0.148, -0.2, -0.132, -0.052, 0.008, 0.092, 0.148, 0.164, 0.108,
+ 0.076, 0.06, 0.048, 0.02, -0.02, -0.06, -0.1, -0.1, -0.096, -0.092,
+ -0.06
],
"z": [
- -0.896, -0.888, -0.836, -0.864, -0.844, -0.852, -0.864, -0.868,
- -0.856, -0.856, -0.86, -0.864, -0.852, -0.864, -0.88, -0.848,
- -0.852, -0.872, -0.864, -0.872, -0.832, -0.816, -0.752, -0.744,
- -1.088, -2.04, -2.04, -2.04, -1.912, 0.884, 2.04, 1.86, 2.04, 0.836,
- -2.04, -2.04, -0.876, -0.772, -0.5, -0.74, -0.904, -1.06, -1.036,
- -0.896, -0.748
+ -0.988, -0.952, -0.908, -0.888, -0.904, -0.964, -1.004, -1.036,
+ -1.136, -1.068, -0.912, -1.06, -1.148, -1.22, -1.168, -0.476, 0.676,
+ 0.304, 0.672, -1.616, -1.608, -1.98, -2.04, -1.304, -0.728, -0.504,
+ -0.548, -1.036, -1.064, -1.188, -1.256, -1.252, -1.176, -1.04,
+ -0.96, -0.928, -0.932, -0.968, -0.992, -1.072, -1.1, -1.068, -1.068,
+ -1.072, -1.088, -1.108, -1.128, -1.104, -1.088
]
- }
+ },
+ "createdAt": 1730110873321
},
{
- "ID": 1729160795515,
+ "id": "c6754c6b-44a5-4b8e-ada4-c7f6c3b9cc62",
"data": {
"x": [
- 0.144, 0.132, 0.144, 0.168, 0.152, 0.144, 0.136, 0.124, 0.12, 0.12,
- 0.14, 0.164, 0.128, -0.016, 0, -0.636, -2.04, -2.04, 1.692, 2.04,
- 2.04, 2.04, 0.308, 0.156, 1.524, 1.024, -0.56, -0.296, 0.216, -0.32,
- -0.324, -0.096, -0.112, -0.176, 0.012, 0.06, -0.032, -0.14, -0.128,
- -0.112, -0.1, -0.116, -0.096, -0.144
+ -0.128, -0.072, -0.092, -0.108, -0.052, -0.084, -0.108, -0.108,
+ -0.084, -0.012, -0.004, -0.004, -0.052, -0.096, -0.048, -0.02,
+ -0.044, -0.148, -0.32, -0.004, 0.236, 0.2, -0.428, -1.52, -0.408,
+ 0.868, -0.12, -0.672, -0.556, -0.32, -0.08, -0.236, -0.332, -0.356,
+ -0.316, -0.18, -0.008, 0.124, 0.136, 0.2, 0.204, 0.164, 0.136,
+ 0.156, 0.016, -0.008, 0, 0
],
"y": [
- -0.384, -0.4, -0.4, -0.384, -0.388, -0.388, -0.396, -0.4, -0.388,
- -0.408, -0.404, -0.392, -0.34, -0.264, -0.316, -0.892, -2.04, -2.04,
- -2.04, -2.04, -1.388, -0.348, 1.376, 0.148, 0.376, 0.548, 0.34,
- 0.516, 0.816, 0.808, 0.772, 0.796, 0.7, 0.64, 0.664, 0.724, 0.708,
- 0.664, 0.628, 0.612, 0.624, 0.628, 0.608, 0.612
+ 0.004, 0.012, 0.04, -0.008, -0.012, -0.004, 0.064, 0.064, 0.04,
+ 0.028, 0, -0.02, -0.036, 0.064, 0.404, 1.116, 1.98, 2.04, 2.04,
+ 2.04, -1.044, -2.04, -2.04, -2.04, -2.04, -1.584, -0.932, -0.492,
+ -0.252, -0.236, -0.268, -0.26, -0.292, -0.272, -0.168, -0.08, 0.048,
+ 0.22, 0.44, 0.48, 0.432, 0.132, 0.012, 0.076, 0.128, 0.04, -0.068,
+ -0.06
],
"z": [
- -0.936, -0.92, -0.936, -0.964, -0.944, -0.948, -0.936, -0.936,
- -0.936, -0.944, -0.948, -0.964, -0.956, -0.98, -1.252, -2.008,
- -2.04, -2.04, -2.04, -0.416, 1.512, 2.04, 2.04, 1.616, -1.084,
- -1.76, -1.092, -1.068, -1.016, -0.396, -0.544, -0.712, -0.916,
- -0.832, -0.876, -0.788, -0.776, -0.76, -0.872, -0.912, -0.896,
- -0.828, -0.844, -0.88
+ -1.08, -1.056, -0.976, -0.96, -1.06, -1.06, -1.064, -1.044, -1.04,
+ -1.064, -1.068, -1.084, -1.048, -1.056, -1.08, -1.04, -0.832,
+ -0.632, -0.588, -0.76, -1.02, -0.044, -0.224, -0.136, -1.712, -2.04,
+ -1.712, -0.92, -0.72, -0.656, -0.86, -0.864, -0.892, -0.976, -1.116,
+ -1.196, -1.164, -1.056, -0.852, -0.924, -0.928, -0.916, -0.952,
+ -1.14, -1.112, -1.044, -1.02, -1.016
]
- }
+ },
+ "createdAt": 1730110869055
},
{
- "ID": 1729160791306,
+ "id": "9ef250cc-b57c-4dbd-a4c3-06532c093dce",
"data": {
"x": [
- 0.212, 0.208, 0.216, 0.248, 0.232, 0.196, 0.236, 0.24, 0.256, 0.252,
- 0.24, 0.276, 0.268, 0.28, 0.36, 0.3, 0.3, 0.056, -1.724, -2.04,
- 0.76, 2.04, 2.04, 2.04, 1.652, 1.108, 0.304, 0.72, 0.796, -0.136,
- -0.328, -0.216, -0.28, -0.352, -0.296, -0.104, -0.112, -0.048, 0.02,
- -0.1, -0.212, -0.2, -0.132, -0.144
+ -0.004, 0, 0, -0.028, -0.04, -0.036, -0.04, -0.028, -0.028, -0.024,
+ -0.004, 0.028, 0.028, 0.016, 0.016, 0.016, 0.028, 0.012, 0.032,
+ 0.028, 0, -0.088, -0.216, -0.344, -0.28, 0.156, 0.288, 0.076,
+ -0.512, -0.868, -1.284, 0.384, 0.42, -0.48, -0.196, 0.032, 0.22,
+ 0.068, -0.164, -0.252, -0.184, -0.088, -0.076, -0.004, 0.016, 0.016,
+ 0.016, 0.02, 0.064
],
"y": [
- -0.396, -0.396, -0.404, -0.412, -0.428, -0.432, -0.42, -0.428,
- -0.408, -0.404, -0.392, -0.38, -0.38, -0.368, -0.288, -0.312,
- -0.332, -0.648, -2.04, -2.04, -2.04, -2.04, -1.34, -0.84, 0.52,
- 1.044, 0.172, 0.128, 0.428, 0.424, 0.56, 0.76, 0.792, 0.804, 0.76,
- 0.748, 0.744, 0.748, 0.804, 0.756, 0.716, 0.692, 0.684, 0.7
+ -0.004, -0.004, 0, 0, -0.008, 0, -0.008, -0.012, -0.004, -0.028,
+ -0.064, -0.06, -0.064, -0.056, -0.028, -0.028, 0.008, 0.064, 0.164,
+ 0.268, 0.544, 0.972, 1.52, 2.04, 2.04, 2.04, 0.704, -2.04, -2.04,
+ -2.04, -2.04, -1.552, -0.672, -0.2, 0.048, 0.168, 0.084, 0.016,
+ -0.076, -0.196, -0.168, -0.108, -0.056, 0, 0.06, 0.108, 0.124,
+ 0.112, 0.08
],
"z": [
- -0.888, -0.896, -0.92, -0.924, -0.932, -0.916, -0.944, -0.908, -0.9,
- -0.92, -0.88, -0.896, -0.872, -0.864, -0.896, -0.868, -1.084, -1.84,
- -2.04, -2.04, -2.04, -1.032, 0.36, 2.04, 2.04, 2.04, 1.088, -0.396,
- -1.548, -1.292, -1.212, -0.94, -0.624, -0.628, -0.7, -0.872, -0.824,
- -0.728, -0.692, -0.628, -0.728, -0.828, -0.86, -0.868
+ -1, -1.032, -1.06, -1.036, -1.012, -0.988, -1, -1.016, -1.036,
+ -1.048, -1.072, -1.088, -1.096, -1.056, -1.068, -1.052, -1.06,
+ -1.032, -0.992, -0.92, -0.888, -0.824, -0.756, -0.604, -0.544,
+ -0.772, -0.48, -0.476, -0.32, -1.204, -1.32, -2.04, -2.04, -0.872,
+ -0.736, -0.696, -0.912, -1.008, -1.08, -1.132, -1.176, -1.128,
+ -1.036, -1.012, -0.98, -0.968, -0.976, -0.996, -1.056
]
- }
+ },
+ "createdAt": 1730110864664
},
{
- "ID": 1729160786788,
+ "id": "549aaca8-3e49-481d-bdad-d9a9025df75f",
"data": {
"x": [
- -0.212, -0.108, 0.056, 0.372, 0.712, 1.1, 1.304, 0.768, 0.416, 0.46,
- 0.648, 0.92, 1.076, 0.2, 0.172, 0.532, 0.54, 0.544, 0.556, 0.432,
- 0.324, 0.384, 0.444, 0.504, 0.5, 0.504, 0.588, 0.628, 0.284, -0.444,
- -2.04, 0.92, 2.04, 2.04, 2.04, 2.04, 1.672, -0.608, 1.46, 0.556,
- -1.116, 0.1, 0.02, -0.604
+ -0.02, -0.012, 0.02, 0, 0, -0.008, -0.008, -0.024, -0.04, -0.02, 0,
+ 0, -0.02, -0.004, 0.024, 0.016, 0.036, 0.032, 0.064, 0.144, 0.2,
+ 0.052, -0.176, -0.308, -0.368, -0.756, -0.268, -0.984, -0.704,
+ 0.092, -0.256, -0.32, -0.288, -0.116, -0.084, -0.212, -0.172,
+ -0.148, -0.096, -0.052, -0.068, -0.08, -0.04, 0, 0.004, -0.024,
+ -0.028, -0.06
],
"y": [
- 0.888, 0.868, 0.88, 0.848, 0.74, 0.368, -0.124, -0.752, -1.364,
- -1.816, -1.676, -1.236, -1.116, -1.244, -0.956, -0.652, -0.472,
- -0.348, -0.364, -0.404, -0.52, -0.532, -0.496, -0.508, -0.5, -0.492,
- -0.46, -0.484, -0.68, -1.752, -2.04, -2.04, -2.04, -2.04, -2.04,
- -1.884, 2.04, -2.04, -2.04, -0.084, 0.456, 0.784, 0.752, 0.356
+ -0.044, -0.052, -0.032, -0.02, -0.028, -0.028, -0.012, -0.008,
+ -0.016, 0, 0.008, 0.012, 0.004, 0.012, 0.032, 0.06, 0.104, 0.172,
+ 0.308, 0.624, 1.24, 2.04, 2.04, 2.04, -1.032, -2.04, -2.04, -1.472,
+ -1.312, -0.552, -0.032, 0.208, 0.372, 0.36, 0.248, 0.092, -0.036,
+ -0.044, -0.02, 0.04, 0.076, 0.104, 0.14, 0.164, 0.172, 0.14, 0.124,
+ 0.112
],
"z": [
- -0.46, -0.32, -0.04, 0.276, 0.384, 0.324, 0.056, -0.144, -0.404,
- -1.084, -1.956, -2.04, -2.04, -1.676, -1.124, -0.824, -0.616,
- -0.616, -0.704, -0.776, -0.808, -0.936, -0.86, -0.732, -0.68,
- -0.716, -0.672, -0.736, -0.864, -2.04, -2.04, -2.04, -2.04, 0.344,
- 2.04, 2.04, 2.04, 1.424, -0.836, -1.96, 0.96, 0.132, -0.188, -0.336
+ -1.064, -1.072, -1.088, -1.024, -1.032, -1.052, -1.06, -1.056,
+ -1.024, -1.036, -1.048, -1.02, -1.004, -1.012, -1.012, -1.008,
+ -1.008, -0.968, -0.912, -0.804, -0.712, -0.688, -0.7, -0.444,
+ -0.328, -0.18, -1.696, -2.004, -2.04, -2.04, -1.1, -0.688, -0.468,
+ -0.612, -0.828, -0.924, -1.092, -1.176, -1.144, -1.076, -0.988,
+ -0.944, -1, -1.016, -1.024, -1.016, -1.04, -1.032
]
- }
+ },
+ "createdAt": 1730110859709
},
{
- "ID": 1729160782525,
+ "id": "b292c503-4942-4f2c-8b05-631eebc7ece7",
"data": {
"x": [
- 2.04, 2.04, 2.04, 0.74, -0.904, 0.236, 0.944, -0.288, -0.404, 0.076,
- -0.06, -0.356, -0.36, -0.26, -0.248, -0.172, -0.308, -0.236, -0.236,
- -0.252, -0.272, -0.248, -0.32, -0.308, -0.296, -0.268, -0.224,
- -0.26, -0.344, -0.296, -0.232, -0.304, -0.24, -0.248, -0.312,
- -0.276, -0.228, -0.264, -0.264, -0.26, -0.308, -0.236, -0.292,
- -0.308
+ -0.168, -0.164, -0.148, -0.14, -0.136, -0.152, -0.128, -0.112,
+ -0.108, -0.128, -0.132, -0.132, -0.12, -0.116, -0.108, -0.124,
+ -0.132, -0.108, -0.088, -0.028, 0.052, -0.088, -0.196, -0.088,
+ -0.092, -0.372, -0.772, -0.452, -0.448, -0.428, -0.356, -0.12, 0.04,
+ -0.052, -0.28, -0.228, -0.104, -0.092, -0.112, -0.148, -0.208,
+ -0.196, -0.144, -0.152, -0.128, -0.132, -0.152, -0.124, -0.136
],
"y": [
- -2.04, -2.008, 0.952, 1.488, 0.132, 0.084, 0.088, 0.452, 0.784,
- 1.124, 0.944, 0.732, 0.736, 0.836, 0.924, 0.932, 0.78, 0.752, 0.76,
- 0.756, 0.8, 0.78, 0.72, 0.704, 0.728, 0.768, 0.788, 0.772, 0.716,
- 0.736, 0.768, 0.768, 0.768, 0.756, 0.74, 0.736, 0.768, 0.76, 0.736,
- 0.748, 0.752, 0.768, 0.752, 0.72
+ 0.176, 0.168, 0.14, 0.144, 0.136, 0.124, 0.112, 0.088, 0.076, 0.084,
+ 0.092, 0.116, 0.136, 0.16, 0.196, 0.228, 0.256, 0.22, 0.256, 0.424,
+ 0.72, 1.14, 1.924, 2.04, 2.04, 0.644, -1.536, -2.04, -2.04, -1.584,
+ -1.336, -1, -0.572, -0.264, -0.1, 0.024, 0.012, -0.032, -0.064,
+ -0.088, -0.068, -0.068, -0.04, 0, 0.02, 0.028, 0.032, 0.012, -0.008
],
"z": [
- -1.236, 1.516, 2.04, 2.04, 1.956, -1.944, -2.04, -0.812, 0.12,
- -0.204, -0.588, -0.568, -0.796, -0.696, -0.42, -0.528, -0.568, -0.8,
- -0.748, -0.672, -0.624, -0.664, -0.648, -0.76, -0.772, -0.688,
- -0.676, -0.676, -0.668, -0.72, -0.72, -0.652, -0.68, -0.688, -0.656,
- -0.688, -0.724, -0.664, -0.668, -0.7, -0.636, -0.716, -0.672, -0.724
+ -0.992, -0.956, -0.964, -1.016, -1.024, -1.02, -1.008, -1.016,
+ -1.036, -1.04, -1.032, -1.024, -1.044, -1.048, -1.032, -1.032,
+ -0.992, -0.976, -1, -1.024, -1.024, -0.792, -0.716, -0.78, -0.696,
+ -0.196, -0.04, -0.856, -0.816, -1.136, -1.508, -1.764, -1.744,
+ -1.392, -0.976, -0.9, -0.888, -0.928, -0.996, -1.032, -1.016,
+ -1.048, -1.072, -1.044, -1.04, -1.004, -0.98, -0.984, -0.98
]
- }
+ },
+ "createdAt": 1730110855284
}
- ],
- "requiredConfidence": 0.37
+ ]
},
{
- "icon": "StickFigure",
- "ID": 1729160875428,
+ "id": "24764089-67ac-4bfa-877d-f8ad35605b84",
"name": "waggle",
+ "icon": "Confused",
+ "createdAt": 1730110896681,
"recordings": [
{
- "ID": 1729161027028,
+ "id": "111929b3-697d-4267-a310-fe637d3564fc",
"data": {
"x": [
- 0.464, 0.604, 0.352, -0.308, -0.544, 0.044, 0.388, 0.496, 0.476,
- 0.272, -0.268, -0.436, -0.172, 0.38, 0.492, 0.444, 0.264, -0.028,
- -0.276, -0.236, 0, 0.216, 0.22, 0.2, 0.116, -0.044, 0.132, 0.236,
- 0.208, 0.172, 0.08, -0.004, 0.048, 0.072, 0.104, 0.132, 0.192, 0.1,
- -0.008, 0.056, 0.048, 0.072, 0.164, 0.168, 0.128, 0.036
+ 1.872, 1.088, 0.208, -0.06, -1.748, -1.112, 1.548, 1.96, 1.464,
+ 0.276, -0.244, -1.136, -1.012, 1.236, 1.956, 1.168, -0.424, -1.508,
+ -0.592, 1.488, 1.864, 1.016, -0.092, -0.688, -1.744, 0.256, 1.94,
+ 2.04, 1.124, -0.032, -0.772, -1.692, 0.332, 2.04, 2.04, 0.604,
+ -0.564, -1.812, -0.348, 2.04, 2.024, 0.648, -0.648, -1.572, -0.312,
+ 1.912, 1.716, -0.032, -0.52
],
"y": [
- -0.072, -0.716, -0.804, -0.688, -0.52, 0.052, 0.752, 0.204, -0.756,
- -1, -0.772, -0.784, -0.312, 0.216, 0.82, -0.22, -0.644, -0.512,
- -0.588, -0.448, -0.112, 0.008, -0.108, -0.052, -0.072, -0.036,
- 0.188, 0.188, 0.08, 0.06, -0.04, -0.072, -0.076, -0.052, -0.064,
- -0.016, 0.048, 0.008, -0.008, -0.04, -0.04, -0.044, -0.052, -0.044,
- 0, 0.032
+ 1.008, 0.784, -0.216, -1.064, -1.356, -0.988, -0.4, 0.66, 0.932,
+ 0.14, -0.736, -1.16, -0.804, -0.176, 0.86, 0.632, -0.448, -1.076,
+ -0.808, -0.196, 0.864, 0.816, -0.172, -1.316, -1.272, -0.82, 0.112,
+ 1.096, 0.52, -0.572, -1.488, -1.276, -0.808, 0.324, 1.104, 0.348,
+ -1.124, -1.368, -0.976, 0.016, 1.196, 0.42, -1.116, -1.16, -0.62,
+ 0.732, 1.344, 0.096, -1.572
],
"z": [
- 0.444, -1.308, -2.04, -2.04, -1.336, 0.096, 1.236, 0.908, -0.728,
- -2.04, -2.04, -2.04, -0.552, 0.808, 1.144, 0.26, -1.336, -2.04,
- -2.04, -1.568, -0.512, -0.184, -0.544, -1.204, -1.34, -0.98, -0.72,
- -0.564, -0.688, -1.016, -1.244, -1.252, -1.276, -1.116, -1.028,
- -0.984, -0.964, -0.948, -0.908, -1, -1.036, -1.024, -1.064, -1.068,
- -1.108, -1.096
+ 0.712, 0.472, -0.384, -2.04, -2.04, -1.808, -0.936, 0.336, 0.42,
+ -0.08, -1.584, -2.04, -1.86, -0.888, 0.292, 0.356, -0.684, -2.04,
+ -2.04, -1.036, 0.528, 0.644, -0.348, -2.04, -2.04, -1.744, 0.052,
+ 0.904, 0.432, -0.62, -2.04, -2.04, -1.388, 0.112, 0.72, 0.404,
+ -1.612, -2.04, -2.04, -0.224, 1.012, 0.396, -1.716, -2.04, -1.684,
+ 0.216, 0.996, 0.248, -2.04
]
- }
+ },
+ "createdAt": 1730110968106
},
{
- "ID": 1729161023128,
+ "id": "41eda2c4-605b-4347-8958-c67528560919",
"data": {
"x": [
- 0.448, 0.688, 0.592, 0.248, -0.596, -0.708, -0.54, -0.208, 0.248,
- 0.556, 0.608, 0.396, -0.076, -0.824, -0.484, -0.444, -0.064, 0.304,
- 0.516, 0.416, 0.308, -0.088, -0.352, -0.46, -0.296, 0.092, 0.44,
- 0.468, 0.132, 0.084, -0.132, -0.26, -0.38, -0.272, 0.048, 0.352,
- 0.404, 0.18, 0.18, 0.1, 0.028, -0.44, -0.356, 0, 0.32
+ 0.056, 0.532, 0.44, 0, 0.004, 0.164, -0.216, -0.36, -0.136, 0.34,
+ 0.396, 0.18, -0.016, 0.256, 0.072, -0.4, -0.436, -0.056, 0.456,
+ 0.392, 0.172, 0.008, 0.244, 0.196, -0.26, -0.46, -0.052, 0.444,
+ 0.204, 0.08, 0.244, 0.288, 0.192, -0.24, -0.516, -0.2, 0.412, 0.416,
+ 0.24, 0.068, 0.26, 0.012, -0.652, -0.504, 0.132, 0.608, 0.416,
+ 0.064, 0.176
],
"y": [
- 0.852, 0.16, -0.54, -1.096, -1.184, -0.968, -0.576, -0.024, 0.584,
- 0.96, -0.08, -0.688, -1.144, -1.228, -1.076, -0.66, 0.084, 0.776,
- 1.072, -0.096, -0.988, -1.264, -1.316, -1.032, -0.424, 0.304, 0.868,
- 1.004, -0.06, -0.972, -1.184, -1.228, -0.928, -0.344, 0.252, 0.908,
- 0.956, -0.192, -1.2, -1.304, -1.38, -1.116, -0.484, 0.268, 1.064
+ -0.164, 0.624, 1.168, 1.144, 0.172, -0.82, -0.868, -0.608, -0.164,
+ 0.26, 0.864, 1.184, 0.764, -0.28, -1.048, -1.136, -0.812, -0.316,
+ 0.248, 0.904, 1.332, 0.904, -0.188, -1.068, -1.268, -0.888, -0.352,
+ 0.2, 0.784, 1.312, 1.216, 0.136, -1.012, -1.2, -0.872, -0.264,
+ 0.256, 1.016, 1.484, 1.028, -0.148, -1.204, -1.196, -0.692, 0,
+ 0.724, 1.372, 1.468, 0.156
],
"z": [
- 0.964, 0.24, -1, -2.04, -2.04, -2.04, -0.78, 0.348, 1, 0.76, 0.028,
- -1.408, -2.04, -2.04, -2.04, -0.66, 0.356, 1.128, 0.788, -0.152,
- -2.04, -2.04, -2.04, -1.336, -0.068, 0.6, 0.772, 0.376, -0.3, -2.04,
- -2.04, -2.04, -1.436, -0.288, 0.528, 0.956, 0.74, 0.012, -2.012,
- -2.04, -2.04, -1.512, -0.256, 0.76, 1.296
+ -0.528, -0.344, 0.128, 0.464, -0.324, -2.028, -2.04, -1.804, -0.692,
+ -0.648, -0.304, 0.272, 0.38, -0.88, -2.04, -2.04, -1.68, -0.78,
+ -0.764, -0.22, 0.5, 0.44, -0.836, -2.04, -2.04, -1.644, -0.816,
+ -0.848, -0.284, 0.464, 0.528, -0.504, -2.04, -2.04, -1.996, -0.904,
+ -0.772, -0.116, 0.608, 0.588, -0.804, -2.04, -2.04, -1.588, -0.688,
+ -0.38, 0.46, 1.06, 0.136
]
- }
+ },
+ "createdAt": 1730110963698
},
{
- "ID": 1729161018855,
+ "id": "64f636c1-2a19-43f1-aad2-0585efabfdf1",
"data": {
"x": [
- -0.044, -0.248, 0.048, 0.124, -0.164, -0.28, 0.172, 0.996, 1, 0.032,
- 0.088, 0.496, 0.444, 0.28, 0.016, 0.104, 0.552, 0.924, 0.264,
- -0.196, 0.2, 0.584, 0.612, 0.256, -0.02, -0.1, 0.304, 1.068, 0.416,
- -0.28, 0.08, 0.38, 0.48, 0.368, 0.232, 0, 0.116, 0.764, 0.272,
- -0.164, 0.272, 0.504, 0.576, 0.248
+ -0.872, 1.228, 1.48, 1, 0.128, -0.92, -1.44, 0.276, 1.4, 1.124,
+ 0.552, 0.244, -0.504, -1.516, -0.508, 1, 1.372, 1.188, 0.356,
+ -0.424, -1.62, -0.46, 1.112, 1.28, 1.084, 0.336, -0.008, -1.296,
+ -1.304, 0.608, 1.336, 1.34, 0.632, 0.16, -0.824, -1.48, 0.3, 1.368,
+ 1.316, 0.344, -0.184, -1.028, -0.764, 0.784, 1.288, 0.96, 0.032,
+ -1.124, -1.128
],
"y": [
- -0.832, -0.064, 0.74, 1.42, 1.5, -0.308, -1.76, -1.828, -1.68,
- -1.308, -0.648, 0.04, 0.856, 1.08, 0.312, -0.664, -1.588, -1.52,
- -1.448, -1.108, -0.352, 0.312, 0.96, 1.096, 0.096, -0.94, -1.768,
- -1.552, -1.52, -1.04, -0.304, 0.272, 0.876, 1.16, 0.18, -0.772,
- -1.468, -1.38, -1.292, -0.9, -0.196, 0.428, 0.968, 1.132
+ -0.676, 0.088, 1.04, 0.636, -0.252, -1.032, -0.844, -0.352, 0.54,
+ 1.072, 0.44, -0.372, -1.008, -0.928, -0.492, 0.164, 0.94, 0.74,
+ -0.204, -1.084, -1.104, -0.7, 0.016, 1.036, 1.036, 0.056, -0.932,
+ -1.2, -0.908, -0.352, 0.584, 1.024, 0.288, -0.608, -1.164, -0.856,
+ -0.4, 0.364, 0.792, 0.312, -0.516, -0.776, -0.512, 0.044, 0.724,
+ 0.496, -0.224, -0.868, -0.712
],
"z": [
- -1.124, -0.64, -0.216, 0.464, 0.86, 0.716, -0.98, -2.04, -2.04,
- -1.636, -0.772, -0.236, 0.736, 1.132, 0.784, -0.548, -2.04, -2.04,
- -2.04, -1.12, -0.444, 0.28, 0.74, 0.948, 0.456, -0.684, -2.04,
- -2.04, -2.04, -0.84, -0.36, 0.348, 0.624, 0.66, 0.188, -0.876,
- -2.04, -2.04, -2.04, -1.044, -0.632, 0.008, 0.532, 1.04
+ -1.416, -0.652, 0.316, 0.232, -0.688, -2.04, -2.04, -1.148, -0.116,
+ 0.348, -0.028, -1.044, -2.04, -2.04, -1.36, -0.544, 0.24, 0.136,
+ -0.392, -2.04, -2.04, -1.592, -0.564, 0.432, 0.42, -0.052, -1.82,
+ -2.04, -1.972, -1.008, 0.084, 0.388, 0.028, -1.26, -2.04, -2.04,
+ -1.24, -0.208, 0.068, -0.072, -1.332, -2.04, -1.82, -0.912, 0.108,
+ 0.06, -0.748, -1.976, -2.04
]
- }
+ },
+ "createdAt": 1730110956731
},
{
- "ID": 1729161014420,
+ "id": "eadbd428-b05d-4c3a-a938-f5e8f3e1b807",
"data": {
"x": [
- 0.972, 0.516, 0.5, 0.22, -0.156, -0.28, 0.088, 0.628, 1.3, 1.148,
- 0.86, 0.504, 0.272, 0.208, -0.104, -0.008, 0.284, 0.844, 1.272,
- 0.564, 0.288, 0.432, 0.416, 0.208, -0.004, 0.18, 0.468, 1.092, 0.92,
- 0.464, 0.38, 0.348, 0.12, 0, 0.112, 0.168, 0.496, 0.98, 1.396,
- 0.984, 0.352, 0.356, 0.128, -0.072
+ 1.452, 0.64, 0.46, -1.608, -2.04, 0.592, 1.648, 1.284, 1.128, 0.664,
+ 0.764, -0.624, -2.04, -1.032, 1.368, 1.564, 1.696, 1.132, 0.508,
+ -0.496, -2.04, -0.792, 1.372, 1.404, 1.46, 0.92, 0.712, -0.096,
+ -2.04, -1.464, 1.076, 1.468, 1.676, 1.292, 0.736, 0.108, -2.04,
+ -1.416, 1.32, 1.296, 1.288, 0.624, 0.036, -1.044, -1.176, 1.036,
+ 1.648, 0.584, -0.812
],
"y": [
- -1.208, -0.804, -0.048, 0.572, 1.188, 1.06, 0.176, -0.732, -1.084,
- -0.924, -0.836, -0.46, 0.084, 0.732, 1.504, 0.964, -0.404, -1.152,
- -1.236, -1.288, -1.048, -0.384, 0.476, 1.232, 1.424, 0.212, -0.936,
- -1.268, -1.268, -1.372, -0.508, 0.228, 0.912, 1.212, 1.144, 0.072,
- -0.896, -1.4, -1.196, -0.912, -0.508, 0.156, 0.944, 1.444
+ 0.928, -0.176, -1.368, -1.968, -1.772, -1.404, -0.352, 0.904, 1.364,
+ 0.272, -0.92, -1.652, -1.6, -1.34, -0.748, 0.392, 1.192, 0.528,
+ -0.492, -1.516, -1.4, -1.108, -0.524, 0.532, 1.244, 0.696, -0.312,
+ -1.412, -1.508, -1.092, -0.712, 0.412, 1.348, 0.752, -0.38, -1.368,
+ -1.436, -1.044, -0.608, 0.488, 0.952, 0.404, -0.536, -0.992, -0.616,
+ 0, 0.664, 0.352, -0.588
],
"z": [
- -2.04, -1.312, -0.584, 0.304, 1.264, 1.312, 0.2, -0.968, -2.04,
- -2.04, -2.04, -1.412, -0.564, 0.364, 1.436, 1.068, -0.376, -2.04,
- -2.04, -2.04, -1.496, -0.844, 0.18, 0.956, 1.396, 0.3, -1.28, -2.04,
- -2.04, -2.024, -1.164, -0.304, 0.588, 1.14, 0.644, -0.32, -1.52,
- -2.04, -2.04, -2.016, -0.872, -0.204, 0.712, 1.276
+ 0.556, 0.168, -1.688, -2.04, -2.04, -2, -0.324, 0.776, 0.968, 0.512,
+ -1.116, -2.04, -2.04, -2.036, -1.184, 0.26, 0.772, 0.604, -0.496,
+ -2.04, -2.04, -2.04, -0.996, 0.516, 0.768, 0.536, -0.496, -2.04,
+ -2.04, -2.04, -1.376, 0.32, 0.816, 0.604, -0.36, -2.04, -2.04,
+ -2.04, -1.548, 0.36, 0.564, 0.18, -1.06, -2.04, -2.04, -1.272,
+ 0.096, 0.396, -1.2
]
- }
+ },
+ "createdAt": 1730110951969
},
{
- "ID": 1729161010340,
+ "id": "52b0efd9-2e93-4fbe-a990-41b9060e9ff9",
"data": {
"x": [
- 0.152, 0.404, 0.288, 0.188, -0.092, -0.108, 0.48, 1.212, 1.612,
- 0.744, -0.116, 0.2, 0.34, 0.284, -0.016, -0.288, 0.124, 0.98, 1.588,
- 1.444, 0.056, 0.14, 0.416, 0.32, 0.04, -0.16, -0.044, 0.584, 1.336,
- 1.688, 0.52, 0.064, 0.4, 0.268, 0.144, -0.16, 0.048, 0.996, 1.624,
- 1.616, 0.504, 0.256, 0.272, -0.088
+ 0.412, -0.484, -1.636, -1.372, -0.484, 0.216, 0.804, 1.46, 1.172,
+ 0.524, -0.032, -1.608, -1.292, -0.572, -0.316, 0.368, 0.692, 0.948,
+ 0.792, 0.204, -0.372, -0.988, -0.732, -0.772, -0.316, 0.62, 1.084,
+ 0.892, 0.268, -0.42, -1.156, -1.172, -0.944, -0.34, 0.532, 0.96,
+ 0.944, 0.624, 0.264, -0.5, -1.02, -0.824, -0.728, -0.056, 0.708,
+ 1.132, 0.964, 0.38
],
"y": [
- -0.7, -0.056, 0.408, 0.892, 1.232, 0.172, -0.724, -1.26, -0.916, -1,
- -0.904, -0.18, 0.388, 0.904, 1.408, 0.708, -0.468, -1.52, -1.316,
- -1.12, -1.224, -0.692, 0.128, 0.8, 1.304, 1.312, 0.22, -0.984, -1.4,
- -0.9, -1.056, -0.764, 0.004, 0.736, 1.292, 1.228, -0.056, -1.232,
- -1.388, -1.308, -1.304, -0.648, 0.228, 0.988
+ -1.024, -2.04, -1.944, -1.3, -0.596, 0.144, 1.224, 1.48, 0.476,
+ -0.94, -2.04, -2.016, -1.364, -0.856, -0.376, 0.084, 0.696, 1.132,
+ 0.808, -0.064, -1.548, -1.904, -1.424, -1.016, -0.24, 0.744, 1.632,
+ 1.468, -0.004, -2.02, -2.04, -1.684, -1.156, -0.504, 0.396, 1.228,
+ 1.536, 0.916, -0.376, -1.688, -1.672, -1.252, -0.908, -0.208, 0.904,
+ 1.456, 0.86, -0.452
],
"z": [
- -0.94, -0.436, 0.188, 0.568, 0.768, 0.284, -0.952, -2.04, -2.04,
- -2.04, -0.92, -0.332, 0.32, 0.676, 0.8, 0.52, -0.408, -1.904, -2.04,
- -2.04, -1.412, -0.564, 0.108, 0.58, 0.916, 0.632, 0.008, -1.176,
- -2.04, -2.04, -1.88, -0.732, -0.276, 0.492, 0.908, 0.972, 0.192,
- -1.392, -2.04, -2.04, -1.812, -0.78, -0.084, 0.908
+ -0.912, -2.04, -2.04, -2.04, -0.968, -0.112, 1.2, 1.672, 0.824,
+ -0.336, -2.04, -2.04, -2.04, -1.512, -0.584, -0.368, 0.34, 0.776,
+ 0.68, -0.072, -1.728, -2.04, -2.04, -1.4, -0.056, 0.64, 1.5, 1.412,
+ 0.236, -1.78, -2.04, -2.04, -1.276, -0.28, 0.028, 0.632, 1.288,
+ 1.032, -0.116, -1.8, -2.04, -2.04, -1.216, -0.344, 0.408, 1.244,
+ 1.396, 0.2
]
- }
+ },
+ "createdAt": 1730110947823
},
{
- "ID": 1729160922477,
+ "id": "4fe2f639-0080-4e3a-9655-2995565a2638",
"data": {
"x": [
- 0.648, -1.224, -2.04, -2.04, -0.552, 0.5, 1.36, 1.936, 2.04, 1.972,
- 1.608, 0.68, -1.036, -2.04, -2.04, -0.884, 0.72, 1.572, 2.04, 2.04,
- 2.016, 1.46, 0.636, -0.888, -2.04, -2.04, -0.996, 0.4, 1.168, 1.948,
- 2.04, 2.04, 1.176, 0.576, -0.988, -2.04, -2.04, -0.116, 0.62, 1.432,
- 2.04, 2.04, 1.764, 1.588
+ -1.472, -0.212, 0.86, 0.856, 0.468, 0.296, -0.7, -1.32, -0.092,
+ 0.932, 0.668, 0.452, 0.12, -0.992, -0.844, 0.348, 1.096, 0.576,
+ 0.088, -0.644, -0.792, -0.052, 0.892, 0.628, -0.688, -1.224, -0.58,
+ 0.26, 0.856, 0.776, -0.108, -1.024, -0.632, 0.244, 0.7, 0.956,
+ 0.356, -0.66, -1.448, -1.012, -0.084, 0.768, 0.664, 0.536, 0.044,
+ -1.284, -1.08, -0.264, -0.148
],
"y": [
- -0.7, -0.816, -1.26, -1.356, -0.648, -0.256, -0.02, 0.404, 0.076,
- -0.264, -0.5, -0.82, -0.808, -0.976, -1.492, -0.852, -0.316, -0.064,
- 0.288, 0.16, -0.12, -0.476, -0.788, -0.708, -1.044, -1.508, -0.996,
- -0.672, -0.468, -0.068, 0.348, 0.42, -0.104, -0.396, -0.604, -1.268,
- -1.296, -0.648, -0.404, -0.268, 0.196, 0.144, -0.196, -0.484
+ -0.684, 0.508, 1.388, 0.856, -0.592, -1.14, -0.908, -0.436, 0.652,
+ 1.284, 0.568, -0.74, -0.996, -0.652, -0.136, 0.612, 0.584, -0.02,
+ -0.716, -0.396, -0.1, 0.148, 0.34, -0.144, -0.928, -0.704, -0.188,
+ 0.452, 0.496, 0.092, -0.552, -0.596, -0.4, 0.292, 0.52, 0.112,
+ -0.532, -1.024, -0.8, -0.472, 0.172, 0.492, 0.176, -0.112, -0.484,
+ -0.6, -0.636, -0.304, 0.152
],
"z": [
- -0.832, -1.5, -1.508, -1.572, -2.04, -1.248, -0.152, 0.292, 0.404,
- 0.568, -0.268, -0.912, -1.428, -1.396, -1.324, -2.04, -1.58, -0.3,
- 0.436, 0.472, 0.744, 0.076, -0.648, -1.348, -1.42, -1.66, -2.04,
- -1.964, -0.612, 0.212, 0.98, 1.056, 1.064, -0.432, -1.62, -1.824,
- -2.04, -2.04, -1.288, 0.048, 0.604, 1.02, 1.204, 0.156
+ -1.82, -0.308, 1.184, 0.912, -0.624, -2.04, -2.04, -1.252, 0.228,
+ 1.352, 0.716, -1.02, -2.04, -2.04, -1.152, 0.32, 0.848, -0.188,
+ -1.976, -2.04, -1.46, 0.044, 0.12, -0.928, -1.764, -2.04, -1.548,
+ -0.08, 0.52, -0.384, -1.684, -2.04, -1.768, -0.644, 0.64, 0.144,
+ -1.136, -2.04, -2.04, -1.588, -0.7, -0.032, 0.244, -0.56, -1.652,
+ -1.804, -1.908, -1.708, -0.852
]
- }
+ },
+ "createdAt": 1730110939381
},
{
- "ID": 1729160918245,
+ "id": "f50f1519-8f71-491a-afc2-9c6a73143104",
"data": {
"x": [
- -0.3, 0.104, 0.2, 0.232, 0.188, 0.188, 0.596, 0.728, -0.18, -0.204,
- 0.26, 0.312, 0.328, 0.36, 0.144, 0.56, 0.708, -0.2, -0.048, 0.388,
- 0.144, 0.02, 0.296, 0.532, 0.996, 0.376, -0.196, 0.132, 0.256,
- 0.204, 0.096, 0.004, 0.44, 0.776, -0.08, -0.172, 0.136, 0.176, 0.18,
- 0.352, 0.392, 0.528, 0.684, -0.1
+ 0.276, 0.272, 0.324, 0.192, 0.372, 0.224, 0.324, 0.12, -0.6, -0.98,
+ -0.04, 0.764, 0.796, 0.512, 0.376, 0.252, 0.1, -0.3, -0.34, -0.12,
+ 0.072, 0.252, 0.292, 0.38, 0.256, -0.108, -0.276, -0.316, -0.924,
+ -0.104, 0.728, 1.248, 1.16, 0.212, -0.336, -0.532, -0.16, -1.488,
+ -1.048, 0.304, 0.668, 0.796, 0.432, 0.188, 0.168, -0.044, -0.024,
+ -0.7
],
"y": [
- -0.724, -0.272, 0.316, 0.868, 0.344, -0.556, -1.008, -1.072, -1.104,
- -0.672, -0.296, 0.352, 0.952, 0.112, -0.772, -1.112, -0.96, -0.976,
- -0.452, -0.096, 0.496, 0.8, -0.492, -1.072, -0.868, -0.968, -0.692,
- -0.2, 0.14, 0.756, 0.548, -0.76, -0.72, -0.836, -0.984, -0.616,
- -0.244, 0.32, 0.672, 0.02, -0.86, -0.936, -0.972, -0.96
+ -0.036, 0.128, 0.508, 1.276, 1.352, 0.1, -1.348, -1.372, -1.128,
+ -0.812, 0.008, 0.796, 1.156, 0.644, 0.112, -0.32, -0.572, -0.616,
+ -0.408, -0.02, 0.512, 1.072, 1.384, 0.836, -0.276, -1.672, -1.688,
+ -1.364, -0.896, -0.204, 0.668, 1.548, 1.868, 0.516, -1.7, -2.04,
+ -1.796, -1.468, -0.676, 0.188, 0.972, 1.556, 1.492, 0.376, -1.184,
+ -1.784, -1.648, -1.424
],
"z": [
- -1.128, -0.468, 0.932, 1.72, 1.112, -0.592, -2.04, -2.04, -2.04,
- -1.204, -0.364, 1.196, 2.02, 1.08, -0.976, -2.04, -2.04, -2.04,
- -1.02, -0.06, 1.764, 1.844, 0.188, -1.952, -2.04, -2.04, -1.472,
- -0.84, 0.544, 1.704, 1.488, -0.328, -2.04, -2.04, -2.04, -1.384,
- -0.476, 0.836, 1.48, 0.772, -0.784, -2.04, -2.04, -2.04
+ -0.812, -1.136, -1.048, -0.02, 0.596, 0.596, -1.276, -2.04, -2.04,
+ -1.364, -0.652, -0.14, 0.66, 0.928, 0.072, -1.188, -2.04, -2.04,
+ -1.816, -1.056, -0.58, -0.052, 0.876, 1.06, 0.064, -1.944, -2.04,
+ -2.04, -1.16, -0.528, -0.04, 0.948, 1.816, 1.304, -1.068, -2.04,
+ -2.04, -1.56, -0.416, -0.44, 0.34, 1.052, 1.456, 0.508, -1.28,
+ -2.04, -2.04, -1.916
]
- }
+ },
+ "createdAt": 1730110935138
},
{
- "ID": 1729160914261,
+ "id": "064f9a2c-d99d-4b9a-924e-d5f715573804",
"data": {
"x": [
- 0.444, 0.292, 0.112, 0.632, 1.212, -0.14, -0.168, 0.332, 0.34,
- 0.516, 0.628, 0.2, 0.748, 1.212, -0.408, -0.232, 0.192, 0.228,
- 0.348, 0.32, 0.292, 0.096, 1.136, 1.352, -0.088, 0.164, 0.332,
- 0.312, 0.68, 0.34, -0.088, 1.016, 0.772, -0.4, 0.268, 0.556, 0.636,
- 0.46, 0.304, -0.1, 0.396, 1.264, 0.156, -0.244
+ 0.244, 0.088, -0.3, -0.34, -0.272, -0.18, 0.38, 0.636, 0.428, 0.184,
+ 0.132, -0.196, -0.06, -0.416, -0.12, 0.564, 0.708, 0.532, 0.404,
+ 0.004, -0.144, -0.128, -0.452, 0.316, 0.864, 0.712, 0.428, 0.192,
+ -0.388, -0.208, -0.648, -0.588, 0.352, 0.712, 0.584, 0.196, 0.132,
+ -0.016, -0.132, -0.304, 0.256, 0.6, 0.58, 0.196, 0.08, -0.048,
+ -0.232, 0.016, -0.188
],
"y": [
- 0.86, 0.26, -0.696, -1.268, -0.872, -1.252, -0.872, -0.392, 0.22,
- 1.1, 0.28, -1.056, -0.92, -0.764, -1.056, -0.66, -0.196, 0.1, 0.352,
- 0.548, 0.44, -0.82, -0.948, -0.832, -0.896, -0.42, -0.228, 0.976,
- 0.868, -0.264, -1.944, -1.536, -1.136, -1.156, -0.6, -0.092, 0.5,
- 0.884, 0.236, -0.96, -1.332, -0.948, -1.14, -0.792
+ 0.496, -0.772, -1.608, -1.26, -0.74, -0.164, 0.428, 0.964, 0.976,
+ 0.076, -1.164, -1.46, -1.104, -0.684, 0.036, 0.876, 1.388, 0.884,
+ -0.456, -1.804, -1.552, -1.048, -0.404, 0.428, 1.272, 1.54, 0.532,
+ -1.16, -2.04, -1.516, -1.04, -0.328, 0.516, 1.352, 1.444, 0.172,
+ -1.48, -1.62, -1.316, -0.836, -0.148, 0.824, 1.524, 1.152, -0.324,
+ -1.62, -1.6, -1.132, -0.528
],
"z": [
- 2.04, 1.308, -0.296, -2.04, -2.04, -2.04, -1.436, -0.212, 1.892,
- 2.04, 1.444, -0.668, -2.04, -2.04, -1.92, -1.052, -0.552, -0.208,
- 0.176, 1.024, 0.736, -0.744, -2.04, -2.04, -1.824, -1.004, 0.888,
- 2.04, 2.04, 0.552, -1.508, -2.04, -2.04, -1.552, -0.76, 0.372,
- 1.572, 2.04, 1.04, -0.4, -2.04, -2.04, -2.04, -1.204
+ 0.536, -0.972, -2.04, -2.04, -1.864, -0.428, -0.124, 0.412, 0.74,
+ 0.208, -1.44, -2.04, -2.04, -1.4, -0.212, 0.428, 1.192, 1.076,
+ -0.276, -2.04, -2.04, -2.04, -0.66, -0.188, 0.556, 1.364, 0.948,
+ -0.824, -2.04, -2.04, -1.808, -0.204, 0.08, 0.812, 1.108, 0.344,
+ -1.812, -2.04, -2.04, -1.12, -0.548, 0.088, 0.98, 1.024, -0.336,
+ -2.04, -2.04, -2.04, -0.748
]
- }
+ },
+ "createdAt": 1730110929535
},
{
- "ID": 1729160910190,
+ "id": "16310978-ff3a-4a8d-85b1-bb25c725a10f",
"data": {
"x": [
- 1.54, 1.188, 0.064, -1.284, -2.04, -1.268, 1.12, 0.684, 0.56, 1.096,
- 0.952, -0.4, -1.816, -2.032, -0.356, 0.548, 0.808, 0.664, 1.036,
- 1.468, 1.112, -0.292, -1.96, -2.04, -0.356, 0.7, 0.492, 1.016, 1.6,
- 1.796, 1.216, -0.536, -1.948, -2.04, 0.04, 1.304, 0.716, 0.796,
- 1.384, 1.896, 1.508, -0.016, -1.668, -2.04
+ 0.144, 0.096, 0.092, -0.088, -0.388, -0.488, -0.064, 0.368, 0.436,
+ 0.248, 0.148, 0.028, -0.008, -0.372, -0.488, -0.064, 0.356, 0.472,
+ 0.332, 0.264, 0.084, 0.008, -0.404, -0.448, 0.036, 0.464, 0.52,
+ 0.356, 0.184, -0.092, -0.012, -0.572, -0.408, 0.172, 0.504, 0.512,
+ 0.144, 0.088, -0.032, -0.36, -0.48, -0.188, 0.228, 0.48, 0.412,
+ 0.256, 0.108, -0.068, -0.508
],
"y": [
- 0.46, 0.78, 0.948, 0.416, -2.036, -2.04, -0.896, -0.86, -0.396,
- 0.048, 0.548, 0.292, -0.312, -0.268, -0.852, -1.132, -0.736, -0.064,
- -0.084, -0.052, 0.392, 0.532, -0.276, -1.072, -1.344, -1.244,
- -0.856, -0.204, 0.06, 0.144, 0.248, 0.544, -1.036, -1.516, -1.448,
- -0.984, -0.84, -0.34, -0.036, 0.12, 0.372, 0.4, -0.288, -1.492
+ 0.424, -0.292, -1.036, -1.128, -0.892, -0.472, 0.004, 0.448, 0.784,
+ 0.524, -0.156, -0.888, -1.072, -0.984, -0.56, -0.04, 0.512, 0.864,
+ 0.56, -0.228, -1.12, -1.232, -1.096, -0.672, -0.06, 0.624, 1.036,
+ 0.736, -0.32, -1.264, -1.24, -1.088, -0.552, 0.016, 0.712, 0.9,
+ 0.28, -0.484, -0.964, -1.016, -0.72, -0.268, 0.248, 0.676, 0.876,
+ 0.184, -0.78, -1.072, -1.16
],
"z": [
- -0.064, 0.652, 1.148, 1.268, 0.768, -2.04, -2.04, -1.952, -0.16,
- -0.228, 0.232, 0.92, 1.196, -0.248, -2.04, -2.04, -1.88, -0.596,
- -0.368, 0.168, 0.568, 0.84, 0.724, -0.812, -2.04, -2.04, -1.108,
- -0.392, -0.092, 0.432, 0.992, 1.092, 1.004, -0.688, -2.04, -2.04,
- -1.468, -0.296, 0.072, 0.244, 0.78, 1.124, 0.956, 0.564
+ 0.26, -0.756, -2.04, -2.04, -2.008, -0.796, -0.54, -0.168, 0.492,
+ 0.576, -0.36, -2.024, -2.04, -2.04, -1.096, -0.536, 0.052, 0.736,
+ 0.812, -0.264, -2.04, -2.04, -2.04, -1.084, -0.484, 0.148, 1.088,
+ 1.148, -0.252, -2.04, -2.04, -2.04, -0.82, -0.256, 0.444, 0.692,
+ 0.216, -1.2, -2.04, -2.04, -1.66, -0.836, -0.312, 0.376, 0.932,
+ 0.212, -1.512, -2.04, -2.04
]
- }
+ },
+ "createdAt": 1730110925513
},
{
- "ID": 1729160906185,
+ "id": "c79c5e37-325c-49d5-8640-e60c23950942",
"data": {
"x": [
- 1.896, 2.04, 2.04, 2.04, 1.288, -0.004, -1.68, -2.04, -2.04, -0.74,
- 0.444, 1.66, 2.04, 2.04, 2.04, 1.024, -0.064, -1.52, -2.04, -1.752,
- -0.052, 0.84, 1.62, 2.04, 2.04, 1.6, 0.356, -0.72, -2.04, -2.04,
- -1.14, 0.556, 1.176, 2.04, 2.04, 2.004, 1.632, 0.672, -0.996, -2.04,
- -2.04, -0.824, 0.708, 1.612
+ 0.116, 0.224, 0.268, 0.432, 0.304, -0.044, -0.484, -0.512, -0.084,
+ 0.208, 0.26, 0.384, 0.372, 0.112, -0.272, -0.536, -0.396, 0.052,
+ 0.196, 0.216, 0.38, 0.408, 0.032, -0.476, -0.488, -0.088, 0.144,
+ 0.22, 0.32, 0.524, 0.292, -0.284, -0.612, -0.54, 0.004, 0.252,
+ 0.212, 0.204, 0.268, 0.204, -0.352, -0.76, -0.228, 0.256, 0.276,
+ 0.2, 0.32, 0.276
],
"y": [
- -0.244, 0.532, 0.684, -0.06, -0.84, -1.512, -1.572, -1.532, -1.42,
- -1.276, -0.912, -0.44, 0.292, 0.604, 0.3, -0.42, -1.004, -1.392,
- -1.872, -1.32, -1.048, -0.772, -0.244, 0.424, 0.764, 0.428, -0.268,
- -0.764, -1.34, -1.64, -1.192, -0.832, -0.32, 0.328, 0.96, 0.776,
- 0.048, -0.912, -1.62, -2.004, -2.008, -1.452, -1.1, -0.46
+ 0.088, 0.304, 0.632, 0.46, -0.176, -0.84, -0.96, -0.484, -0.072,
+ 0.092, 0.52, 0.756, 0.412, -0.508, -0.832, -0.684, -0.18, 0.1,
+ 0.224, 0.556, 0.508, 0.004, -0.74, -0.956, -0.52, 0.004, 0.168,
+ 0.456, 0.784, 0.448, -0.472, -0.904, -0.804, -0.368, 0.024, 0.392,
+ 0.788, 0.852, 0.248, -0.5, -0.64, -0.448, 0.008, 0.204, 0.556, 0.88,
+ 0.264, -0.48
],
"z": [
- -0.072, 0.672, 0.844, 0.988, -0.096, -1.004, -2, -2.04, -2.04, -1.9,
- -0.916, -0.28, 0.28, 0.616, 0.744, 0.236, -0.752, -1.676, -2.036,
- -2.04, -2.04, -1.132, -0.484, -0.04, 0.404, 0.748, 0.456, -0.556,
- -1.392, -2.04, -2.04, -1.984, -0.432, 0.332, 0.728, 1.044, 0.284,
- -0.676, -1.652, -2.04, -2.04, -2.04, -1.304, -0.172
+ -0.54, 0.024, 0.724, 0.336, -1.064, -2.04, -2.04, -1.592, -0.768,
+ -0.36, 0.38, 0.728, -0.06, -1.816, -2.04, -2.04, -1.02, -0.644,
+ -0.276, 0.452, 0.376, -0.804, -2.04, -2.04, -1.772, -0.864, -0.448,
+ 0.088, 0.668, 0.124, -1.456, -2.04, -2.04, -1.088, -0.544, -0.408,
+ 0.192, 0.436, -0.272, -2.04, -2.04, -1.852, -0.872, -0.608, -0.032,
+ 0.688, 0.296, -1.368
]
- }
+ },
+ "createdAt": 1730110921508
},
{
- "ID": 1729160902241,
+ "id": "c576737a-0b1f-472f-a75f-cec86f35b83c",
"data": {
"x": [
- 0.788, -0.808, -2.04, -1.736, -0.52, 0.56, 1.712, 2.028, 1.664,
- 1.284, 0.472, -1.24, -1.704, -1.276, -0.588, 0.732, 1.808, 2.032,
- 1.62, 1.188, 0.544, -1.304, -2.04, -1.132, -0.108, 0.948, 1.964,
- 1.852, 1.408, 1.068, 0.18, -1.528, -2.04, -1.496, -0.284, 1.236,
- 1.82, 1.976, 1.284, 1.048, 0.42, -1.256, -2.016, -1.276
+ 0.452, 0.764, 0.564, 0.44, 0.068, -0.516, -0.612, -0.324, 0.068,
+ 0.504, 0.62, 0.544, 0.288, -0.212, -0.712, -0.624, -0.096, 0.264,
+ 0.604, 0.744, 0.436, -0.044, -0.596, -0.684, -0.224, 0.16, 0.444,
+ 0.608, 0.468, 0.108, -0.384, -0.712, -0.444, 0.044, 0.468, 0.744,
+ 0.548, 0.228, -0.444, -0.896, -0.404, 0.084, 0.528, 0.684, 0.384,
+ 0.092, -0.484, -0.792, -0.192
],
"y": [
- -0.152, -1.504, -1.964, -1.608, -1.364, -0.804, 0.12, 1.036, 1.176,
- 0.324, -0.468, -1.732, -1.828, -1.624, -1.36, -0.712, 0.152, 1.024,
- 1.14, -0.004, -0.768, -1.748, -1.824, -1.524, -1.188, -0.496, 0.22,
- 1.048, 1.004, 0.204, -0.632, -1.652, -1.784, -1.544, -1.224, -0.488,
- 0.688, 1.168, 1.044, 0.04, -0.876, -1.716, -1.728, -1.432
+ 0.556, 1.104, 0.84, -0.12, -0.972, -1.124, -0.96, -0.652, -0.128,
+ 0.548, 0.896, 0.552, -0.224, -1.016, -1.032, -0.676, -0.24, 0.208,
+ 0.692, 0.744, 0.068, -0.98, -1.212, -0.908, -0.492, 0, 0.504, 0.836,
+ 0.48, -0.432, -0.972, -0.896, -0.472, -0.008, 0.632, 0.896, 0.232,
+ -0.836, -1.232, -1.024, -0.512, 0.048, 0.608, 0.724, 0.064, -0.992,
+ -1.204, -0.952, -0.448
],
"z": [
- -0.32, -1.636, -2.04, -2.04, -2.04, -0.616, 0.088, 0.884, 1.464,
- 0.956, -0.424, -1.708, -2.04, -2.04, -1.62, -0.516, 0.112, 1.048,
- 1.572, 0.932, -0.592, -2.04, -2.04, -2.04, -1.304, -0.196, 0.508,
- 1.008, 1.252, 0.4, -0.98, -2.04, -2.04, -2.04, -1.244, -0.512,
- 0.284, 1.036, 1.556, 0.572, -0.88, -2.04, -2.04, -2.04
+ -0.148, 0.568, 0.984, 0.06, -1.684, -2.04, -2.04, -1.508, -0.608,
+ 0.012, 0.868, 0.724, -0.56, -2.04, -2.04, -2.04, -0.964, -0.036,
+ 0.696, 0.664, -0.3, -2.036, -2.04, -2.04, -1.276, -0.46, 0.348,
+ 0.768, 0.084, -1.252, -2.04, -2.04, -1.564, -0.528, 0.588, 1.196,
+ 0.436, -1.436, -2.04, -2.04, -1.468, -0.364, 0.66, 1.048, 0.032,
+ -2.04, -2.04, -2.04, -1.144
]
- }
- },
+ },
+ "createdAt": 1730110916926
+ }
+ ]
+ },
+ {
+ "id": "9db8233a-60f2-414d-a0cd-9b0d12064616",
+ "name": "flick",
+ "icon": "Yes",
+ "createdAt": 1730110969638,
+ "recordings": [
{
- "ID": 1729160898388,
+ "id": "460e4f1f-af8f-4073-85bb-fd699717b3c7",
"data": {
"x": [
- 0.416, 1.396, 1.696, 1.292, 0.728, 0.324, -0.704, -1.328, -1.024,
- -0.304, 0.608, 1.264, 1.34, 1.136, 0.728, -0.164, -1.436, -1.556,
- -0.524, 0.528, 1.18, 1.34, 1.016, 0.728, 0.552, -0.356, -1.252,
- -1.324, -0.492, 0.528, 1.312, 1.492, 1.2, 0.708, 0.304, -0.62,
- -1.316, -0.828, 0.168, 0.572, 1.1, 1.16, 0.672, 0.572
+ 0.016, 0.028, 0.024, 0.02, 0.012, 0.028, 0.012, 0, 0.012, 0.02,
+ 0.028, 0.024, 0.008, -0.02, 0.004, 0.008, 0.136, 0.196, 0.232,
+ -0.332, -2.04, -2.04, 0.064, 2.04, 2.04, 2.04, 0.44, 1.208, 0.596,
+ 0.308, 0.168, -0.276, -0.188, -0.072, -0.04, -0.096, 0, 0.104,
+ 0.108, 0.064, 0.036, 0.036, 0, -0.012, 0.048, 0.132, 0.156, 0.124,
+ 0.096, 0.104
],
"y": [
- -0.768, 0.048, 0.96, 1.116, 0.256, -0.568, -1.772, -1.624, -1.324,
- -1.024, -0.34, 0.416, 0.948, 1.152, 0.256, -0.972, -1.616, -1.44,
- -1.204, -0.596, 0.16, 0.832, 0.98, 0.628, 0.032, -1.108, -1.456,
- -1.168, -1.196, -0.836, -0.004, 0.852, 1.04, 0.612, 0, -1.096,
- -1.524, -1.344, -1.084, -0.452, 0.42, 1.076, 1.068, 0.44
+ -0.208, -0.224, -0.232, -0.224, -0.204, -0.208, -0.212, -0.204,
+ -0.2, -0.204, -0.204, -0.216, -0.2, -0.2, -0.2, 0.036, -0.016,
+ 0.008, -0.04, -0.624, -2.04, -2.04, -2.04, -1.692, -0.82, 0.912,
+ 1.596, 0.348, -0.32, -0.632, -0.032, 0.252, 0.296, 0.376, 0.456,
+ 0.476, 0.448, 0.448, 0.416, 0.376, 0.352, 0.296, 0.22, 0.152, 0.116,
+ 0.088, 0.048, 0.008, 0.012, 0.024
],
"z": [
- -1.052, -0.232, 0.764, 1.508, 1.192, -0.284, -2.04, -2.04, -2.04,
- -1.084, -0.44, 0.04, 0.756, 0.896, 0.216, -1.028, -2.04, -2.04,
- -2.04, -0.728, -0.264, 0.392, 1.088, 1.012, -0.012, -1.428, -2.04,
- -2.04, -2.04, -0.968, -0.3, 0.312, 0.972, 1.076, 0.076, -1.364,
- -2.04, -2.04, -1.988, -0.528, -0.092, 0.428, 1.02, 0.78
+ -1.008, -1.032, -1.04, -1.02, -1.008, -1.012, -1.008, -1.016,
+ -1.024, -1.012, -0.996, -1.012, -1.024, -1.004, -1.028, -0.976,
+ -0.984, -0.856, -1.056, -2.04, -2.04, -2.04, -2.04, -1.064, 1.844,
+ 2.04, 2.04, 0.224, -0.492, -1.436, -1.848, -1.096, -0.916, -0.868,
+ -0.952, -0.9, -0.912, -0.972, -0.98, -0.976, -0.968, -1.028, -1.088,
+ -1.104, -1.14, -1.148, -1.148, -1.16, -1.18, -1.156
]
- }
+ },
+ "createdAt": 1730111021721
},
{
- "ID": 1729160894170,
+ "id": "c1393888-5895-4d82-84bc-3d33ba037b85",
"data": {
"x": [
- 1.52, 1.396, -0.492, -1.152, -0.708, 0.016, 1.208, 1.26, -0.416,
- -1.236, -0.9, -0.224, 1.116, 1.408, 0.288, -0.956, -1.308, -0.512,
- 0.308, 1.148, 0.96, -0.456, -0.608, -0.344, -0.092, 0.852, 0.984,
- 0.256, -0.816, -1.288, -0.428, 0.252, 0.996, 1.184, 0.704, -0.036,
- -0.788, -0.832, -0.256, 0.264, 0.808, 0.952, 0.572, 0.028
+ 0.044, 0.06, 0.044, 0.004, 0, -0.008, -0.02, 0.032, 0.064, 0.024,
+ 0.008, 0.036, 0.064, 0.06, 0.056, 0.04, -0.26, -1.32, -2.04, -1.056,
+ 1.98, 2.04, 1.832, 2.02, 1.316, 0.152, -0.096, -0.38, -0.38, -0.344,
+ -0.496, -0.252, -0.02, 0.016, -0.02, -0.068, -0.1, -0.072, -0.02,
+ -0.004, -0.02, -0.008, 0.016, 0.02, 0.032, 0.032, 0.028, 0.052,
+ 0.068
],
"y": [
- 1.612, 0.904, -0.764, -1.068, -0.532, 0.048, 1.14, 1.064, -0.42,
- -1.244, -0.676, -0.172, 0.94, 1.7, -0.636, -1.108, -0.472, -0.372,
- 0.24, 1.288, 0.756, -0.66, -0.924, -0.488, -0.056, 0.928, 1.256,
- -0.272, -1.076, -0.856, -0.532, -0.024, 0.908, 1.6, 0.032, -1.144,
- -1.148, -0.724, -0.66, 0, 1.012, 1.212, 0.272, -0.572
+ -0.168, -0.168, -0.184, -0.188, -0.176, -0.184, -0.168, -0.156,
+ -0.168, -0.156, -0.152, -0.14, -0.128, -0.1, -0.06, 0.016, -0.172,
+ -1.632, -2.04, -2.04, -1.112, -0.412, 1.108, 1.472, 0.844, -0.076,
+ -0.28, 0.084, 0.28, 0.28, 0.344, 0.36, 0.352, 0.348, 0.36, 0.336,
+ 0.284, 0.256, 0.228, 0.16, 0.116, 0.112, 0.108, 0.088, 0.06, 0.024,
+ 0.028, 0.052, 0.044
],
"z": [
- 1.084, 0.512, -0.784, -2.04, -2.04, -0.412, 0.836, 0.508, -0.824,
- -2.04, -2.04, -0.676, 0.884, 0.984, 0.016, -2.04, -2.04, -2.04,
- 0.008, 1.104, 0.512, -0.792, -2.04, -2.04, -0.772, 0.516, 0.888,
- -0.036, -2.04, -2.04, -2.04, -0.636, 0.688, 1.244, 0.812, -0.924,
- -2.04, -2.04, -1.58, -0.144, 0.88, 1.112, 0.356, -1.204
+ -1.02, -1.012, -1.028, -1.036, -1.052, -1.06, -1.028, -1.016, -1.02,
+ -1.024, -1.004, -1.004, -0.996, -0.984, -0.948, -1.036, -1.752,
+ -2.04, -2.04, -2.024, -1.668, 1.72, 2.04, 2.04, 0.392, -0.412,
+ -1.512, -1.48, -1.096, -1.124, -0.996, -1.032, -1.032, -1.024,
+ -1.06, -1.032, -1, -1.036, -1.124, -1.148, -1.132, -1.1, -1.088,
+ -1.048, -1.056, -1.108, -1.116, -1.096, -1.06
]
- }
- }
- ],
- "requiredConfidence": 0.76
- },
- {
- "icon": "SmallDiamond",
- "ID": 1729161417082,
- "name": "Poke",
- "recordings": [
+ },
+ "createdAt": 1730111017623
+ },
{
- "ID": 1729161719599,
+ "id": "a97b77d2-c44b-4013-840a-fe8a215808a8",
"data": {
"x": [
- 0.324, 0.22, 0.168, 0.2, 0.252, 0.216, 0.192, 0.24, 0.284, 0.284,
- 0.212, 0.216, 0.34, 0.516, 0.4, 0.412, 0.708, -0.868, -1.472, -0.68,
- -0.656, 0.308, 1.024, 0.648, 0.316, 0.076, -0.136, -0.176, 0.116,
- 0.388, 0.504, 0.436, 0.228, 0.04, -0.02, 0.124, 0.268, 0.344, 0.288,
- 0.228, 0.396, 0.504, 0.244, 0.444
+ -0.056, -0.036, -0.032, -0.024, -0.008, -0.012, -0.044, -0.04,
+ -0.004, 0.004, -0.04, -0.036, -0.016, 0.016, -0.008, -0.172, -0.672,
+ -1.864, -2.04, 0.648, 2.04, 2.04, 1.356, 1.304, 1.828, 0.508, 0.128,
+ -0.072, -0.304, -0.24, -0.204, -0.136, 0.04, 0.148, 0.172, 0.156,
+ 0.108, 0.12, 0.052, -0.028, 0, 0.076, 0.128, 0.1, 0.024, 0, 0.02,
+ 0.076, 0.104
],
"y": [
- 0.236, 0.276, 0.292, 0.296, 0.24, 0.192, 0.176, 0.208, 0.168, 0.16,
- 0.236, 0.356, 0.856, 1.78, 2.04, 1.324, -0.556, -2.04, -1.724,
- -1.364, -1.824, -1.272, -0.36, -0.116, -0.064, -0.024, 0.02, 0.212,
- 0.448, 0.552, 0.608, 0.544, 0.5, 0.372, 0.312, 0.332, 0.38, 0.476,
- 0.624, 0.952, 1.796, 2.04, 1.98, -0.028
+ -0.26, -0.264, -0.272, -0.28, -0.272, -0.296, -0.336, -0.34, -0.316,
+ -0.292, -0.268, -0.264, -0.264, -0.224, -0.196, -0.176, -0.58,
+ -2.04, -2.04, -2.04, -1.68, -1.312, 0.312, 1.596, 1.528, 0.672,
+ 0.108, 0.232, 0.42, 0.416, 0.296, 0.16, 0.024, 0.156, 0.156, 0.072,
+ 0.04, 0.08, 0.084, 0.052, 0.012, -0.016, -0.004, 0.012, -0.02, 0,
+ -0.004, -0.032, -0.044
],
"z": [
- -0.952, -0.892, -0.884, -0.84, -0.832, -0.868, -0.936, -1.036,
- -1.044, -1.08, -1.044, -1.092, -1.224, -1.456, -1.296, -0.68,
- -0.428, 1.388, 0.772, -1.1, -1.372, -1.716, -2.036, -1.516, -1.124,
- -0.86, -0.628, -0.56, -0.704, -0.784, -0.84, -0.82, -0.812, -0.828,
- -0.952, -1.076, -1.036, -1.036, -0.976, -0.908, -1.032, -1.192,
- -0.736, -0.692
+ -0.968, -0.992, -1.008, -1.012, -1.02, -1.004, -1.012, -1.048,
+ -1.084, -1.044, -0.992, -0.964, -0.96, -0.996, -0.956, -1.176,
+ -2.04, -2.04, -2.04, -2.04, -1.316, 1.372, 2.04, 2.04, 0.628, 0.46,
+ -0.4, -0.94, -0.748, -0.62, -0.696, -0.888, -1.144, -1.296, -1.348,
+ -1.404, -1.332, -1.216, -1.124, -1.088, -1.152, -1.16, -1.124,
+ -1.08, -1.06, -1.048, -1.072, -1.076, -1.076
]
- }
+ },
+ "createdAt": 1730111013390
},
{
- "ID": 1729161464980,
+ "id": "2c05aef7-fd5c-43e3-a985-bb72a0c54301",
"data": {
"x": [
- 0.052, 0.044, -0.048, -0.148, -0.04, 0.064, 0.116, 0.096, -0.04,
- -0.096, 0.184, 0.1, 0.096, -0.308, -0.348, -0.008, -0.548, -0.508,
- 0.272, 0.26, 0.16, 0.032, -0.176, -0.256, -0.156, 0.024, 0.04, 0.1,
- 0.02, -0.156, -0.12, 0.46, 0.404, 0.192, -0.116, -0.3, -0.104,
- 0.076, 0.188, 0.072, -0.132, -0.088, 0.32, 0.356
+ -0.008, -0.004, 0.012, 0.012, 0.012, 0.004, 0.004, 0.004, -0.004,
+ -0.008, 0, 0.032, 0.072, 0.088, 0.064, 0.076, -0.04, -0.564, -1.784,
+ -2.04, -0.54, 2.04, 2.04, 2.04, 2.04, 1.876, -0.136, -0.456, -0.452,
+ -0.2, -0.196, -0.38, -0.276, -0.068, 0.012, -0.008, -0.14, -0.176,
+ -0.052, -0.048, -0.08, 0, 0.032, 0.036, 0.04, 0.056, 0.068, 0.14
],
"y": [
- 0.236, 0.172, 0.2, 0.164, 0.148, 0.316, 0.564, 0.884, 1.224, 1.7,
- 2.04, 2.04, 0.528, -2.04, -2.04, -2.04, -1.988, -1.636, -0.76,
- -0.384, -0.348, -0.428, -0.696, -1.052, -1.032, -0.764, -0.572,
- -0.34, 0.368, 0.912, 0.66, 0.008, 0.188, 0.204, 0.236, 0.272, 0.352,
- 0.46, 0.604, 0.776, 0.908, 1.264, 1.868, 1.812
+ -0.096, -0.08, -0.08, -0.1, -0.108, -0.112, -0.124, -0.12, -0.124,
+ -0.12, -0.112, -0.084, -0.052, -0.052, -0.06, -0.032, 0.052, -0.46,
+ -2.04, -2.04, -2.04, -2.04, -1.728, 1.412, 2.04, 1.036, -0.976,
+ -0.86, -0.152, 0.112, 0.116, -0.1, 0.004, 0.148, 0.256, 0.344,
+ 0.208, 0.152, 0.124, 0.108, 0.076, 0.052, 0.032, -0.008, -0.004, 0,
+ -0.008, 0.12
],
"z": [
- -1.068, -0.956, -0.904, -0.88, -0.948, -0.984, -0.96, -0.864,
- -0.728, -0.628, -0.912, -1.028, -1.06, -0.176, 0.116, -0.804,
- -0.836, -0.892, -1.892, -1.768, -1.512, -1.224, -0.832, -0.596,
- -0.656, -0.684, -0.592, -0.648, -0.78, -0.772, -1.044, -1.78,
- -1.452, -1.172, -0.876, -0.616, -0.728, -0.836, -0.972, -0.96, -0.9,
- -0.992, -1.284, -1.196
+ -1.036, -1.012, -1.004, -1.028, -1.052, -1.048, -1.036, -1.032,
+ -1.044, -1.04, -1.012, -0.972, -0.94, -0.932, -0.932, -0.936,
+ -1.212, -2.04, -2.04, -2.04, -2.04, -1.48, 2.04, 2.04, 2.04, 0.384,
+ 0.352, -1.36, -1.66, -1.56, -1.128, -1.024, -1.248, -1.328, -1.204,
+ -1.156, -1.156, -1.164, -1.232, -1.228, -1.144, -1.144, -1.076,
+ -1.08, -1.1, -1.076, -1.028, -0.844
]
- }
+ },
+ "createdAt": 1730111008953
},
{
- "ID": 1729161460313,
+ "id": "b6c8590c-2f84-40aa-9357-e7ff27053629",
"data": {
"x": [
- -0.316, -0.344, -0.168, 0, 0, -0.056, -0.096, -0.244, -0.252, -0.2,
- 0.284, 0.34, -0.844, 0.02, -0.768, -0.872, 0.284, 0.36, 0.292, 0.1,
- -0.068, -0.128, -0.192, -0.116, -0.032, 0.012, 0.084, 0.068, 0.136,
- 0.408, 0.344, 0.08, -0.064, -0.136, -0.124, 0.012, 0.08, 0.096,
- 0.072, -0.164, -0.252, 0.112, 0.324, 0.388
+ -0.008, -0.008, 0.016, 0.044, -0.12, -0.432, -0.66, -0.776, -2.04,
+ -2.04, 0.132, 2.04, 2.04, 2.04, 1.856, 1.664, 0.696, -0.028, -0.1,
+ -0.324, -0.372, -0.356, -0.316, -0.256, -0.184, -0.044, 0.048,
+ 0.036, 0.032, 0.04, -0.036, -0.1, -0.1, 0.008, 0.008, -0.048, 0.004,
+ 0.048, 0.028, -0.004, -0.044, 0.016, 0.06, 0.044, 0.052, 0.088,
+ 0.08, 0.096, 0.084
],
"y": [
- 0.308, 0.308, 0.312, 0.368, 0.408, 0.428, 0.644, 1.02, 1.752, 2.04,
- 1.56, -0.984, -2.04, -2.04, -2.04, -2.036, -0.996, -0.336, -0.192,
- -0.276, -0.308, -0.448, -0.664, -0.552, -0.368, -0.18, 0.108, 0.432,
- 0.612, 0.548, 0.424, 0.264, 0.208, 0.288, 0.444, 0.496, 0.464,
- 0.432, 0.524, 0.716, 1.228, 2.04, 2.04, 0.624
+ -0.208, -0.12, -0.044, -0.008, 0.012, 0.036, -0.056, -1.396, -2.04,
+ -2.04, -2.04, -2.04, -1.528, 1.204, 1.404, 0.768, 0.076, -0.124,
+ 0.244, 0.612, 0.7, 0.624, 0.436, 0.26, 0.184, 0.144, 0.06, 0.012,
+ -0.02, -0.024, -0.14, -0.128, -0.192, -0.16, -0.16, -0.16, -0.2,
+ -0.244, -0.24, -0.216, -0.208, -0.232, -0.2, -0.188, -0.176, -0.192,
+ -0.168, -0.16, -0.172
],
"z": [
- -0.704, -0.496, -0.76, -0.992, -1.004, -0.956, -1, -0.964, -1.06,
- -1.16, -1.132, -0.748, 0.824, -0.808, -0.92, -1.168, -2.04, -1.928,
- -1.476, -1.036, -0.688, -0.532, -0.484, -0.564, -0.696, -0.748,
- -0.744, -0.852, -1.02, -1.376, -1.496, -1.132, -0.952, -0.82, -0.78,
- -0.788, -0.864, -0.944, -1.048, -0.98, -0.92, -1.16, -1.164, -1.012
+ -0.944, -0.892, -0.872, -0.888, -0.944, -0.928, -1.092, -1.696,
+ -2.04, -2.04, -2.04, 0.032, 2.04, 2.04, 2.04, 0.608, -0.26, -0.716,
+ -1.124, -0.696, -0.46, -0.444, -0.596, -0.788, -0.864, -0.948,
+ -1.168, -1.292, -1.34, -1.26, -1.304, -1.304, -1.304, -1.252, -1.2,
+ -1.152, -1.188, -1.192, -1.136, -1.124, -1.076, -1.056, -1.052,
+ -1.036, -1.004, -1.02, -1.016, -1.036, -1.024
]
- }
+ },
+ "createdAt": 1730111004935
},
{
- "ID": 1729161455886,
+ "id": "ef20f66d-03e9-411c-99a5-02f5a6f2372c",
"data": {
"x": [
- 0.1, 0.16, 0.112, -0.028, -0.12, -0.128, -0.128, -0.052, 0.168,
- 0.18, 0.3, -0.352, -0.644, -0.112, -0.732, -0.536, 0.156, 0.26,
- 0.256, 0.348, 0.172, 0.064, 0.012, -0.02, 0.068, 0.148, 0.124,
- 0.132, 0.12, 0.068, 0.128, 0, 0.04, 0.108, 0.156, 0.164, 0.06,
- -0.132, -0.128, 0.164, 0.116, 0.264, -0.96, -1.044
+ 0.012, 0.004, 0, 0, 0.02, 0.044, 0.028, 0.008, 0.004, 0.012, 0.02,
+ 0.076, 0.1, 0.008, -0.364, -1.18, -2.04, -2.04, 1.668, 2.04, 1.612,
+ 1.648, 2.04, 1.596, 0.692, 0.428, 0.212, 0.012, -0.052, -0.116,
+ -0.112, -0.132, -0.164, -0.076, 0.04, 0.056, 0.104, 0.124, 0.008,
+ -0.08, -0.112, 0, 0.112, 0.1, 0.056, 0, -0.016, -0.008, 0.056
],
"y": [
- 0.232, 0.26, 0.308, 0.316, 0.388, 0.504, 0.676, 1.26, 2.04, 2.04,
- 0.276, -2.04, -2.04, -2.04, -2.04, -2.04, -1.024, -0.512, -0.336,
- -0.284, -0.264, -0.248, -0.136, -0.136, -0.128, -0.044, -0.044,
- -0.004, 0.04, 0.092, 0.156, 0.188, 0.228, 0.304, 0.452, 0.624, 0.86,
- 1.156, 2.04, 2.04, 2.04, -1.36, -2.04, -2.04
+ -0.14, -0.156, -0.148, -0.124, -0.144, -0.148, -0.176, -0.168,
+ -0.172, -0.176, -0.156, -0.136, -0.092, 0.02, -0.148, -1.376, -2.04,
+ -2.04, -2.024, -1.188, -0.14, 1.008, 1.188, 0.584, 0.076, 0.088,
+ 0.352, 0.556, 0.504, 0.416, 0.412, 0.328, 0.216, 0.112, 0.072,
+ -0.028, -0.172, -0.228, -0.224, -0.212, -0.2, -0.232, -0.212,
+ -0.196, -0.18, -0.188, -0.188, -0.184, -0.176
],
"z": [
- -0.888, -0.968, -0.976, -0.972, -0.984, -1.004, -0.956, -0.956,
- -1.008, -0.88, -0.596, 0.076, 0.124, -1.26, -0.976, -1.184, -1.832,
- -1.652, -1.216, -1.076, -0.736, -0.608, -0.552, -0.504, -0.584,
- -0.736, -0.848, -1.124, -1.3, -1.316, -1.328, -0.992, -0.888, -0.84,
- -0.872, -0.948, -1.008, -1.02, -1.176, -1.256, -1.088, -1.036,
- 0.524, -0.384
+ -1.024, -1.012, -1.04, -1, -0.988, -1.008, -1.008, -1.024, -1.016,
+ -1.024, -1.012, -1.012, -1, -1.072, -1.448, -2.04, -2.04, -2.04,
+ -2.016, 0.476, 2.04, 2.04, 1.004, 0.06, -0.268, -0.764, -0.816,
+ -0.628, -0.632, -0.532, -0.544, -0.652, -0.796, -0.94, -1.096,
+ -1.236, -1.528, -1.728, -1.54, -1.292, -1.096, -1.1, -1.156, -1.124,
+ -1.104, -1.064, -1.052, -1.06, -1.104
]
- }
+ },
+ "createdAt": 1730111000940
},
{
- "ID": 1729161451782,
+ "id": "cb010b38-568b-48d6-9a06-86c93cb640ee",
"data": {
"x": [
- 0.244, 0.152, 0.076, -0.044, -0.052, 0.052, 0.108, 0.088, -0.004,
- -0.148, -0.272, -0.148, -0.212, -0.28, -0.124, -0.468, -0.372,
- 0.156, -0.664, -0.12, 0.364, 0.156, 0.052, -0.024, -0.064, 0.048,
- 0.196, 0.22, 0.104, 0.136, 0.116, 0.272, 0.084, -0.16, -0.128,
- -0.168, 0.04, 0.136, 0.208, 0.136, -0.048, -0.224, -0.24, 0.004
+ -0.028, -0.02, 0.008, -0.012, -0.044, -0.028, -0.052, -0.048,
+ -0.048, -0.068, -0.06, -0.036, -0.004, 0, -0.024, 0.004, 0.024,
+ 0.008, 0.036, -0.276, -1.56, -2.04, -1.392, 1.94, 2.04, 1.988, 2.04,
+ 2.04, -0.24, -0.56, -0.012, -0.3, -0.476, -0.008, 0.284, 0.072,
+ -0.116, -0.148, -0.084, -0.084, -0.16, -0.144, -0.04, 0.104, 0.144,
+ 0.068, 0.008, 0.02
],
"y": [
- 0.36, 0.26, 0.332, 0.408, 0.384, 0.336, 0.336, 0.4, 0.608, 0.904,
- 1.284, 1.996, 2.04, 2.04, -0.072, -2.04, -2.04, -2.04, -2.04, -1.58,
- -0.784, -0.404, -0.332, -0.432, -0.632, -0.688, -0.528, -0.256,
- 0.084, 0.464, 0.768, 0.48, 0.104, 0.004, 0.28, 0.3, 0.292, 0.228,
- 0.216, 0.332, 0.488, 0.756, 1.132, 1.836
+ -0.18, -0.192, -0.18, -0.18, -0.176, -0.18, -0.18, -0.188, -0.188,
+ -0.176, -0.168, -0.164, -0.164, -0.176, -0.188, -0.184, -0.172,
+ -0.148, -0.128, -0.532, -1.796, -2.04, -2.04, -1.844, -0.772, 1.076,
+ 1.776, -0.104, -0.928, -0.476, 0.04, 0.32, 0.492, 0.596, 0.516,
+ 0.46, 0.48, 0.52, 0.5, 0.496, 0.448, 0.368, 0.32, 0.256, 0.228,
+ 0.204, 0.188, 0.188
],
"z": [
- -1.416, -1.032, -0.88, -0.748, -0.724, -0.832, -0.972, -1.052,
- -1.032, -0.908, -0.804, -0.848, -0.616, -0.716, -0.736, 0.008,
- -0.512, -1.476, -1.016, -1.676, -1.948, -1.448, -1.068, -0.692,
- -0.5, -0.432, -0.448, -0.508, -0.568, -0.896, -1.448, -2.008,
- -1.528, -0.94, -0.856, -0.704, -0.808, -0.912, -1.052, -1.084,
- -0.96, -0.92, -0.988, -1.072
+ -0.996, -0.996, -1.044, -1.016, -0.996, -1.016, -1.02, -1.008,
+ -1.036, -1.028, -1.02, -1.016, -1.008, -1.016, -1.008, -1.032,
+ -1.04, -1, -1.044, -1.664, -2.04, -2.04, -2.04, -1.284, 2.04, 2.04,
+ 2.04, 0.22, -0.692, -1.972, -2.04, -1.424, -0.628, -0.604, -0.924,
+ -0.976, -0.972, -0.968, -1.008, -0.992, -0.924, -1.004, -1.068,
+ -1.152, -1.144, -1.06, -1.028, -1.04
]
- }
+ },
+ "createdAt": 1730110996785
},
{
- "ID": 1729161446750,
+ "id": "df5a3877-3447-46e2-bcbb-ea7c27ddd3f7",
"data": {
"x": [
- 0.224, 0.1, 0.008, -0.096, -0.06, 0.064, 0.168, 0.22, 0.148, 0.112,
- 0.088, 0.136, 0.156, 0.176, 0.204, 0.088, 0.08, -0.064, -0.252,
- -0.152, -0.544, -1.02, -0.32, -0.024, 0.14, 0.312, -0.06, -0.136, 0,
- -0.068, 0.164, 0.204, 0.224, 0.076, 0.008, 0, -0.16, -0.296, -0.272,
- -0.228, -0.052, 0.088, 0.12, -0.04
+ 0.04, 0.064, 0.076, 0.028, 0.008, -0.012, -0.016, 0.02, 0.016,
+ 0.004, 0.048, 0.076, 0.048, 0.048, 0.036, 0.02, 0.056, 0.116, 0.048,
+ -0.18, -1.444, -2.04, -2.04, 1.512, 1.788, 2.04, 2.04, 1.652, 0.084,
+ 0.148, -0.136, -0.892, -0.48, 0.032, 0.16, 0.376, 0.448, 0.18,
+ -0.008, 0.092, 0.092, 0.016, 0.032, 0.112, 0.164, 0.188, 0.14, 0.1,
+ 0.1
],
"y": [
- 0.056, 0.06, 0.148, 0.124, 0.084, 0.064, 0.016, 0.028, -0.056,
- -0.084, -0.052, 0.016, 0.116, 0.284, 0.656, 1.1, 2.04, 2.04, 2.04,
- 0.012, -2.04, -2.04, -2.04, -1.796, -0.636, -0.18, -0.16, -0.32,
- -0.556, -0.532, -0.46, -0.356, 0.004, 0.776, 0.956, 0.496, 0.324,
- 0.192, 0.28, 0.336, 0.236, 0.144, 0.128, 0.188
+ -0.14, -0.124, -0.116, -0.096, -0.108, -0.124, -0.136, -0.124,
+ -0.116, -0.1, -0.096, -0.1, -0.14, -0.152, -0.148, -0.116, -0.076,
+ -0.028, -0.004, -0.212, -1.144, -2.04, -2.04, -2.04, -1.024, 1.032,
+ 2.02, -1.576, -1.124, 0.292, 0.956, 1.216, 0.92, 0.748, 0.58, 0.6,
+ 0.556, 0.536, 0.484, 0.492, 0.396, 0.36, 0.36, 0.436, 0.472, 0.456,
+ 0.416, 0.42, 0.42
],
"z": [
- -1.312, -0.996, -0.808, -0.724, -0.84, -1, -1.064, -1.092, -1.016,
- -1.028, -1.036, -1.048, -1, -0.992, -1.02, -1.052, -1.008, -1.084,
- -0.792, -0.696, 1.616, -0.236, -0.964, -1.684, -1.824, -1.836,
- -1.18, -0.708, -0.568, -0.388, -0.552, -0.732, -0.692, -0.88,
- -1.276, -1.344, -1.352, -0.992, -0.928, -0.832, -0.824, -0.908,
- -1.08, -1.068
+ -1.044, -1.028, -1.044, -1.012, -1.004, -1.012, -1.02, -1.032,
+ -1.004, -0.992, -1.02, -1.02, -0.988, -1.04, -1.044, -0.996, -0.96,
+ -0.964, -0.912, -1.336, -2.04, -2.04, -2.04, -2.04, 2.04, 2.04,
+ 2.04, -0.26, -2.04, -2.04, -0.892, -0.06, -0.884, -1.216, -0.944,
+ -0.796, -0.748, -0.816, -0.824, -0.904, -1.064, -1.164, -1.128,
+ -0.992, -0.832, -0.804, -0.892, -0.964, -1.008
]
- }
+ },
+ "createdAt": 1730110992536
},
{
- "ID": 1729161442233,
+ "id": "fe1da65c-6493-4be2-96cf-a9b8ac565ed1",
"data": {
"x": [
- 0.004, 0.144, -0.5, -0.056, -0.876, -0.088, 0.48, 0.148, -0.016,
- -0.192, -0.2, -0.032, 0.012, 0.016, 0.04, 0.044, 0.084, 0.156, 0.2,
- 0.316, 0.384, 0.372, 0.244, 0.132, 0.128, 0.132, 0.16, 0.184, 0.164,
- 0.132, 0.1, 0.032, 0.06, 0.012, -0.148, 0.108, -0.38, -0.516,
- -0.656, -0.164, 0.24, 0.42, 0.412, 0.256, 0.152
+ 0.024, -0.064, -0.124, -0.068, -0.028, 0.012, 0.024, -0.008, -0.008,
+ 0.024, 0.008, -0.044, -0.056, -0.032, -0.004, -0.004, 0.056, -0.02,
+ -0.712, -2.04, -2.04, -2.04, 1.82, 2.04, 2.04, 2.04, 2.04, 0.328,
+ 0.288, -0.284, -0.336, -0.116, -0.196, -0.116, 0.184, 0.204, 0.248,
+ 0.216, 0.12, 0.104, 0.2, 0.268, 0.112, 0.028, 0.112, 0.2, 0.18, 0.1
],
"y": [
- 0.556, -2.04, -2.04, -2.04, -2.04, -1.268, -0.216, -0.088, -0.124,
- -0.108, -0.184, -0.064, -0.064, -0.076, -0.116, -0.02, 0.072, 0.168,
- 0.164, 0.188, 0.168, 0.104, 0.096, 0.132, 0.176, 0.28, 0.396, 0.552,
- 0.632, 0.804, 1.16, 1.896, 2.04, 2.04, 0.476, -2.04, -2.04, -2.04,
- -2.04, -2.04, -1.244, -0.664, -0.3, -0.408, -0.388
+ -0.092, -0.108, -0.144, -0.144, -0.136, -0.12, -0.116, -0.096,
+ -0.104, -0.12, -0.108, -0.112, -0.12, -0.104, -0.092, -0.084,
+ -0.064, -0.044, -0.344, -1.416, -2.04, -2.04, -2.04, -2.04, 0.812,
+ 2.04, 0.936, -0.78, -0.52, 0.148, 0.452, 0.648, 0.66, 0.668, 0.676,
+ 0.668, 0.652, 0.664, 0.628, 0.552, 0.476, 0.408, 0.232, 0.18, 0.132,
+ 0.072, 0.028, 0.048
],
"z": [
- -0.4, -0.256, 0.084, -1.576, -0.908, -1.9, -2.04, -1.464, -1.032,
- -0.656, -0.44, -0.544, -0.564, -0.58, -0.696, -0.792, -0.908,
- -1.084, -1.168, -1.288, -1.34, -1.292, -1.172, -0.996, -0.872,
- -0.852, -0.884, -0.944, -0.884, -0.856, -0.844, -0.796, -0.992,
- -0.716, -0.364, -0.28, -0.028, -0.456, -0.62, -1.516, -1.852,
- -1.744, -1.564, -1.172, -0.896
+ -1.032, -0.988, -1.012, -1.116, -1.096, -1.012, -1.008, -1, -1.02,
+ -1.028, -1.036, -1.028, -1.012, -1.016, -1.012, -0.988, -0.976,
+ -1.128, -1.884, -2.04, -2.04, -2.04, -2.024, 1.56, 2.04, 2.04,
+ 1.044, -0.264, -2.04, -2.016, -1.116, -0.724, -0.68, -0.716, -0.888,
+ -0.724, -0.696, -0.68, -0.664, -0.676, -0.744, -0.856, -0.936,
+ -1.088, -1.124, -1.152, -1.224, -1.2
]
- }
+ },
+ "createdAt": 1730110988086
},
{
- "ID": 1729161438150,
+ "id": "49b6fdfd-8125-4750-a90c-64669fde7af4",
"data": {
"x": [
- -0.312, -0.132, 0.252, -0.168, -0.244, -0.232, -0.188, -0.032,
- 0.168, 0.312, 0.34, 0.272, 0.196, 0.1, 0.044, 0.036, 0.012, 0.064,
- 0.092, 0.152, 0.24, 0.26, 0.176, 0.072, 0.02, 0.024, -0.108, -0.024,
- 0.216, 0.272, 0.568, -0.812, -1.336, -0.668, -0.564, -0.024, 0.324,
- 0.092, 0.036, 0.144, 0.18, 0.208, 0.268, 0.308, 0.196
+ 0.104, 0.084, 0.112, 0.112, 0.088, 0.12, 0.112, 0.056, 0.048, 0.052,
+ 0.06, 0.06, 0.024, -0.244, -1.256, -2.04, -1.192, 1.784, 2.04,
+ 1.848, 2.04, 2.04, -0.412, -0.14, -0.304, -0.264, -0.096, 0.116,
+ 0.124, 0.212, 0.164, 0.164, 0.112, -0.104, -0.164, -0.064, -0.08,
+ -0.056, -0.092, -0.052, -0.02, -0.012, 0.012, 0.044, 0.048, 0.02,
+ -0.016, -0.016
],
"y": [
- -2.04, -1.432, -0.556, -0.344, -0.22, -0.156, -0.112, -0.112, 0.064,
- 0.26, 0.348, 0.42, 0.388, 0.256, 0.208, 0.148, 0.128, 0.152, 0.136,
- 0.192, 0.264, 0.328, 0.408, 0.504, 0.668, 0.928, 1.32, 2.04, 2.04,
- 1.732, -1.584, -2.04, -2.04, -2.032, -1.96, -0.932, -0.408, -0.244,
- -0.156, -0.124, -0.18, -0.24, -0.112, -0.04, 0.016
+ -0.164, -0.18, -0.172, -0.16, -0.168, -0.152, -0.164, -0.192, -0.22,
+ -0.212, -0.172, -0.112, -0.064, -0.252, -1.464, -2.04, -2.04,
+ -1.652, -1.82, 0.412, 2.04, 0.128, -0.568, 0.036, 0.72, 1.044,
+ 1.104, 0.924, 0.736, 0.536, 0.508, 0.54, 0.608, 0.552, 0.572, 0.544,
+ 0.524, 0.5, 0.496, 0.524, 0.544, 0.528, 0.516, 0.5, 0.504, 0.464,
+ 0.456, 0.472
],
"z": [
- -1.864, -2.036, -2.04, -1.088, -0.676, -0.492, -0.46, -0.52, -0.74,
- -0.928, -1, -1.072, -1.184, -1.168, -1.132, -1.116, -1.08, -1.04,
- -0.996, -0.972, -0.984, -0.96, -0.96, -0.948, -0.932, -0.888,
- -0.868, -1.012, -1.296, -0.928, -0.856, 0.656, 0.344, -0.72, -1.004,
- -1.36, -1.548, -1.264, -1.192, -1.228, -1.092, -1.028, -1.008,
- -0.96, -0.832
+ -1.012, -1.028, -1.068, -1.048, -0.984, -0.996, -0.988, -1.008,
+ -1.076, -1.068, -1.004, -0.96, -1.112, -1.724, -2.04, -2.04, -2.04,
+ -2.02, 2.04, 2.04, 2.04, -0.732, -0.476, -2.04, -1.064, -0.472,
+ -0.364, -0.676, -0.7, -0.94, -0.948, -0.9, -0.812, -0.804, -0.884,
+ -0.988, -0.964, -1.008, -0.956, -0.912, -0.856, -0.84, -0.876,
+ -0.816, -0.78, -0.956, -1.004, -0.936
]
- }
+ },
+ "createdAt": 1730110983822
},
{
- "ID": 1729161433809,
+ "id": "b94d55af-041b-4cc2-9939-f1409bf91a71",
"data": {
"x": [
- 0.084, 0.072, 0.084, 0.104, 0.028, -0.064, 0.044, 0.148, -0.012,
- 0.476, -1.82, -1.408, 0.764, 0.124, 0.472, -0.58, -0.888, -0.28,
- -0.192, -0.06, 0.112, 0.128, 0.016, 0.048, 0.036, 0.04, -0.012,
- 0.02, 0.088, 0.032, 0.072, 0.136, 0.112, 0.052, 0, -0.016, -0.028,
- -0.084, -0.252, -0.172, 0.16, 0.18, 0.336, -2.04, -0.556
+ -0.004, -0.008, -0.004, -0.016, -0.048, -0.004, 0.028, 0, -0.028,
+ -0.012, -0.012, -0.128, -0.66, -1.82, -2.04, -0.448, 1.772, 2.04,
+ 1.744, 0.3, 2.04, 2.008, 1.044, 0.596, 0.064, 0.144, 0.212, 0.132,
+ 0.04, 0.004, 0.028, 0.032, -0.008, 0.008, 0.048, 0.024, -0.056,
+ 0.012, 0, -0.06, -0.076, -0.136, -0.18, -0.248, -0.252, -0.232,
+ -0.216, -0.172, -0.112
],
"y": [
- 0.228, 0.276, 0.364, 0.564, 0.9, 1.476, 2.04, 2.04, 2.04, -2.04,
- -2.04, -2.04, -2.04, -1.352, -0.356, -0.176, -0.24, -0.12, -0.232,
- -0.04, 0.128, 0.092, 0.184, 0.232, 0.396, 0.288, 0.3, 0.264, 0.208,
- 0.184, 0.172, 0.16, 0.156, 0.232, 0.376, 0.536, 0.74, 1.04, 1.564,
- 2.04, 2.04, 1.764, -2.04, -2.04, -2.04
+ -0.132, -0.132, -0.144, -0.152, -0.136, -0.152, -0.18, -0.172,
+ -0.136, -0.12, -0.104, -0.036, -0.36, -1.248, -2.04, -2.04, -2.04,
+ -2.04, -0.264, 0.784, 1.604, 1.404, 0.768, 0.616, 0.576, 0.704,
+ 0.812, 0.78, 0.772, 0.728, 0.652, 0.628, 0.608, 0.576, 0.532, 0.48,
+ 0.464, 0.48, 0.48, 0.384, 0.344, 0.3, 0.28, 0.244, 0.22, 0.212,
+ 0.18, 0.144, 0.116
],
"z": [
- -1.02, -0.972, -0.956, -0.964, -0.86, -0.88, -0.544, -0.768, -0.072,
- 0.076, 1.404, 0.344, -2.04, -2.04, -2.04, -0.996, -0.02, -0.368,
- -0.38, -0.552, -0.788, -0.948, -1.024, -1.084, -0.96, -0.992,
- -1.024, -1.092, -1.148, -1.128, -1.104, -1.056, -1.016, -1.036,
- -0.996, -0.952, -0.856, -0.808, -0.676, -0.592, -0.868, -0.644,
- -0.372, 1.44, -0.804
+ -1.044, -1.032, -1.004, -1.024, -1.024, -1.028, -1.064, -1.06,
+ -1.036, -1.004, -1, -1.184, -1.816, -2.04, -2.04, -2.04, -2.04,
+ -1.032, 2.04, 2.04, -0.052, 0.144, 0.052, -0.572, -0.408, -0.468,
+ -0.468, -0.564, -0.64, -0.612, -0.716, -0.724, -0.744, -0.756,
+ -0.86, -0.96, -0.92, -1.04, -1.016, -0.956, -0.884, -0.952, -0.968,
+ -0.976, -1, -1.032, -1.068, -1.052, -1.08
]
- }
+ },
+ "createdAt": 1730110979246
}
]
},
{
- "icon": "House",
- "ID": 1729161958213,
+ "id": "a50277ef-1534-4b4b-ac0c-a890cdda4e47",
"name": "circle",
+ "icon": "Square",
+ "createdAt": 1730111022972,
"recordings": [
{
- "ID": 1729162002337,
+ "id": "77871264-32b7-4e43-92d4-4914f7f474a4",
+ "data": {
+ "x": [
+ 0.328, 0.18, 0.096, 0.02, 0.044, 0.324, 0.412, 0.432, 0.5, 0.448,
+ 0.512, 0.584, 0.592, 0.692, 0.6, 0.468, 0.54, 0.58, 0.64, 0.608,
+ 0.576, 0.656, 0.768, 0.704, 0.512, 0.48, 0.556, 0.54, 0.456, 0.508,
+ 0.604, 0.7, 0.676, 0.552, 0.38, 0.444, 0.476, 0.5, 0.608, 0.44,
+ 0.44, 0.528, 0.428, 0.352, 0.464, 0.408, 0.26, 0.248, 0.16
+ ],
+ "y": [
+ 0.204, 0.256, 0.312, 0.324, 0.348, 0.488, 0.596, 0.68, 0.688, 0.668,
+ 0.68, 0.652, 0.664, 0.648, 0.54, 0.4, 0.332, 0.376, 0.42, 0.32,
+ 0.164, 0.18, 0.232, 0.148, 0.032, -0.108, -0.208, -0.336, -0.464,
+ -0.6, -0.764, -0.932, -0.804, -0.888, -1.048, -1.164, -1.212,
+ -1.264, -1.224, -1.308, -1.328, -1.284, -1.264, -1.336, -1.212,
+ -1.108, -1.004, -0.896, -0.816
+ ],
+ "z": [
+ -0.832, -0.756, -0.792, -0.836, -0.736, -0.812, -0.712, -0.48,
+ -0.46, -0.432, -0.476, -0.58, -0.46, -0.376, -0.396, -0.44, -0.624,
+ -0.636, -0.588, -0.6, -0.584, -0.548, -0.496, -0.528, -0.476,
+ -0.472, -0.456, -0.412, -0.384, -0.556, -0.768, -0.904, -1.02,
+ -0.948, -0.628, -0.552, -0.608, -0.536, -0.6, -0.484, -0.532,
+ -0.692, -0.728, -0.776, -0.872, -0.876, -0.784, -0.828, -0.84
+ ]
+ },
+ "createdAt": 1730111080605
+ },
+ {
+ "id": "7b214d41-26fa-49c3-92f7-dc49bae2e666",
"data": {
"x": [
- 0.8, 0.696, 0.812, 0.808, 0.708, 0.632, 0.412, 0.212, 0.016, -0.12,
- -0.196, -0.356, -0.524, -0.688, -0.812, -0.792, -0.692, -0.58,
- -0.516, -0.516, -0.46, -0.46, -0.512, -0.508, -0.596, -0.504,
- -0.496, -0.636, -0.652, -0.508, -0.16, 0.04, -0.008, 0.02, 0.016,
- 0.08, 0.296, 0.276, 0.764, 1.128, 1.248, 1.284, 1.212, 0.66
+ -0.076, -0.2, -0.184, -0.096, -0.048, 0.164, 0.396, 0.416, 0.292,
+ 0.092, -0.028, 0.088, 0.32, 0.568, 0.512, 0.2, 0.116, 0.132, -0.028,
+ -0.072, 0.24, 0.412, 0.436, 0.336, 0.184, 0.312, 0.472, 0.496,
+ 0.472, 0.428, 0.508, 0.604, 0.512, 0.624, 0.74, 0.544, 0.404, 0.448,
+ 0.556, 0.66, 0.7, 0.612, 0.608, 0.616, 0.56, 0.66, 0.748, 0.66
],
"y": [
- -1.504, -1.584, -1.608, -1.544, -1.412, -1.42, -1.308, -1.24,
- -1.176, -1.008, -0.876, -0.824, -0.648, -0.476, -0.296, -0.116,
- 0.048, 0.184, 0.324, 0.444, 0.596, 0.7, 0.76, 0.832, 0.868, 0.9,
- 0.876, 0.82, 0.728, 0.608, 0.656, 0.612, 0.528, 0.332, 0.208,
- -0.028, -0.204, -0.216, -0.456, -0.408, -0.588, -0.592, -0.612,
- -1.004
+ -1.156, -1.096, -1.02, -0.972, -0.844, -0.72, -0.588, -0.476, -0.3,
+ -0.248, -0.136, 0.016, 0.164, 0.304, 0.308, 0.308, 0.372, 0.432,
+ 0.464, 0.484, 0.54, 0.568, 0.576, 0.552, 0.516, 0.536, 0.584, 0.612,
+ 0.564, 0.44, 0.392, 0.284, 0.24, 0.324, 0.344, 0.236, 0.096, 0.004,
+ -0.068, -0.02, -0.048, -0.16, -0.304, -0.384, -0.436, -0.6, -0.696,
+ -0.772
],
"z": [
- -0.888, -0.864, -1.212, -1.244, -1.136, -1.08, -1.064, -0.94, -0.72,
- -0.8, -0.844, -0.832, -0.784, -0.736, -0.584, -0.448, -0.34, -0.312,
- -0.34, -0.32, -0.356, -0.316, -0.232, -0.168, -0.012, -0.064,
- -0.136, -0.148, -0.108, -0.112, -0.272, -0.336, -0.276, -0.328,
- -0.344, -0.456, -0.564, -0.716, -0.836, -1.072, -1.06, -0.972,
- -1.004, -0.82
+ -0.78, -0.776, -0.848, -0.924, -0.86, -0.828, -0.9, -0.86, -0.776,
+ -0.656, -0.616, -0.736, -0.78, -0.824, -0.812, -0.628, -0.62,
+ -0.756, -0.772, -0.72, -0.792, -0.792, -0.644, -0.672, -0.664,
+ -0.764, -0.688, -0.54, -0.5, -0.548, -0.576, -0.876, -0.824, -0.664,
+ -0.536, -0.44, -0.548, -0.648, -0.728, -0.6, -0.572, -0.448, -0.404,
+ -0.504, -0.624, -0.672, -0.76, -0.732
]
- }
+ },
+ "createdAt": 1730111076549
},
{
- "ID": 1729161997930,
+ "id": "0caa6a74-0d93-4242-a6a5-8c617b04f32b",
"data": {
"x": [
- -0.66, -0.752, -0.768, -0.824, -0.84, -0.828, -0.756, -0.84, -0.976,
- -0.976, -1.012, -0.884, -0.772, -0.772, -0.72, -0.724, -0.576,
- -0.472, -0.52, -0.628, -0.56, -0.376, -0.216, -0.032, 0.08, 0.26,
- 0.468, 0.628, 0.696, 0.92, 1.36, 1.48, 0.82, 0.528, 0.76, 0.824,
- 0.94, 1.08, 1.128, 1.032, 0.692, 0.524, 0.476, 0.348
+ 0.396, 0.54, 0.564, 0.444, 0.308, 0.448, 0.54, 0.216, -0.008, 0.068,
+ 0.32, 0.412, 0.28, 0.292, 0.288, 0.112, 0.06, 0.144, 0.184, 0.24,
+ 0.212, 0.184, 0.24, 0.32, 0.4, 0.412, 0.384, 0.388, 0.404, 0.3,
+ 0.232, 0.368, 0.556, 0.656, 0.504, 0.208, -0.048, -0.056, 0.104,
+ 0.36, 0.484, 0.424, 0.396, 0.352, 0.328, 0.52, 0.6, 0.66
],
"y": [
- -0.476, -0.264, -0.088, 0.084, 0.208, 0.252, 0.384, 0.432, 0.48,
- 0.508, 0.536, 0.548, 0.604, 0.612, 0.664, 0.652, 0.668, 0.728, 0.72,
- 0.6, 0.528, 0.52, 0.508, 0.436, 0.372, 0.308, 0.232, 0.216, 0.116,
- -0.016, 0.024, -0.112, -0.468, -0.708, -0.724, -0.776, -0.82,
- -0.828, -0.864, -0.836, -0.872, -0.82, -0.852, -0.8
+ -0.676, -0.816, -0.956, -0.896, -1.284, -1.272, -1.18, -1.256,
+ -1.372, -1.44, -1.408, -1.308, -1.292, -1.24, -1.172, -1.148,
+ -1.072, -1.08, -1.036, -0.82, -0.808, -0.824, -0.768, -0.624,
+ -0.512, -0.356, -0.18, -0.136, -0.068, -0.004, 0.032, 0.124, 0.208,
+ 0.3, 0.392, 0.384, 0.512, 0.42, 0.512, 0.584, 0.676, 0.684, 0.66,
+ 0.648, 0.64, 0.668, 1.008, 0.704
],
"z": [
- -0.672, -0.556, -0.412, -0.292, -0.176, -0.156, -0.24, -0.156,
- -0.044, -0.048, -0.052, -0.136, -0.148, -0.056, -0.116, -0.04, -0.1,
- -0.136, -0.092, -0.032, -0.132, -0.304, -0.38, -0.504, -0.568,
- -0.652, -0.668, -0.748, -0.688, -0.608, -0.668, -0.928, -0.744,
- -0.672, -0.9, -0.96, -1.052, -1.148, -1.236, -1.356, -1.256, -1.22,
- -1.252, -1.224
+ -0.372, -0.504, -0.612, -0.744, -0.692, -0.804, -0.892, -0.476,
+ -0.268, -0.38, -0.524, -0.628, -0.6, -0.624, -0.704, -0.708, -0.636,
+ -0.72, -0.804, -0.868, -0.836, -0.82, -0.864, -0.824, -0.804,
+ -0.792, -0.676, -0.636, -0.688, -0.7, -0.708, -0.852, -0.948,
+ -0.948, -0.796, -0.652, -0.628, -0.708, -0.724, -0.744, -0.744,
+ -0.64, -0.576, -0.568, -0.544, -0.592, -0.824, -0.612
]
- }
+ },
+ "createdAt": 1730111072430
},
{
- "ID": 1729161993696,
+ "id": "103110e8-0f71-4267-9a83-05fb1627fcb8",
"data": {
"x": [
- -0.452, -0.364, -0.284, -0.22, -0.104, -0.016, 0.104, 0.2, 0.328,
- 0.532, 0.756, 1.08, 1.196, 0.964, 0.792, 0.612, 0.364, 0.276, 0.232,
- 0.284, 0.384, 0.348, 0.252, 0.116, -0.14, -0.316, -0.456, -0.612,
- -0.896, -0.816, -0.516, -0.46, -0.556, -0.584, -0.608, -0.664,
- -0.588, -0.54, -0.504, -0.516, -0.624, -0.684, -0.736, -0.732
+ 0.672, 0.684, 0.52, 0.42, 0.472, 0.528, 0.488, 0.472, 0.488, 0.572,
+ 0.448, 0.3, 0.396, 0.696, 0.784, 0.628, 0.62, 0.768, 0.852, 0.72,
+ 0.46, 0.32, 0.48, 0.752, 0.728, 0.552, 0.644, 0.512, 0.468, 0.588,
+ 0.296, 0.372, 0.3, 0.456, 0.7, 0.496, 0.144, 0.084, 0.196, 0.432,
+ 0.568, 0.632, 0.76, 0.548, 0.164, -0.012, -0.028, 0.152
],
"y": [
- 0.552, 0.54, 0.508, 0.408, 0.248, 0.06, -0.08, -0.264, -0.564, -0.8,
- -0.764, -0.776, -0.872, -1.1, -1.268, -1.388, -1.504, -1.48, -1.492,
- -1.528, -1.508, -1.512, -1.52, -1.472, -1.416, -1.392, -1.112,
- -0.964, -0.708, -0.428, -0.16, 0.004, 0.2, 0.332, 0.396, 0.452,
- 0.536, 0.612, 0.668, 0.696, 0.74, 0.72, 0.72, 0.64
+ 0.464, 0.516, 0.508, 0.492, 0.56, 0.608, 0.604, 0.536, 0.596, 0.612,
+ 0.5, 0.268, 0.176, 0.172, 0.12, 0.024, 0.008, 0.04, 0.136, 0.136,
+ 0.02, -0.084, -0.08, -0.132, -0.152, -0.424, -0.472, -0.64, -0.764,
+ -0.756, -0.644, -0.72, -0.812, -0.972, -0.968, -0.872, -0.916,
+ -1.024, -1.124, -1.276, -1.192, -1.156, -1.052, -0.924, -0.884,
+ -0.852, -0.82, -0.736
],
"z": [
- -0.128, -0.22, -0.268, -0.308, -0.376, -0.448, -0.52, -0.568,
- -0.624, -0.828, -0.94, -1.064, -1.152, -0.936, -0.86, -0.76, -0.684,
- -0.74, -0.74, -0.864, -0.996, -1.104, -1.176, -1.2, -0.928, -0.76,
- -0.644, -0.6, -0.404, -0.384, -0.46, -0.376, -0.296, -0.268, -0.228,
- -0.196, -0.26, -0.296, -0.292, -0.236, -0.18, -0.176, -0.2, -0.188
+ -0.804, -0.672, -0.548, -0.516, -0.544, -0.572, -0.48, -0.524,
+ -0.492, -0.428, -0.332, -0.54, -0.728, -0.824, -0.852, -0.88,
+ -0.984, -0.908, -0.712, -0.548, -0.496, -0.528, -0.608, -0.716,
+ -0.86, -0.66, -0.784, -0.724, -0.764, -0.956, -0.62, -0.78, -0.468,
+ -0.476, -0.72, -0.736, -0.484, -0.628, -0.808, -0.928, -0.98,
+ -0.972, -1.044, -0.956, -0.788, -0.724, -0.712, -0.8
]
- }
+ },
+ "createdAt": 1730111068366
},
{
- "ID": 1729161989408,
+ "id": "30943b8c-0f57-449d-8cf5-7313793f2e57",
"data": {
"x": [
- 0.324, 0.228, 0.184, 0.096, 0.04, 0.028, 0.016, -0.032, 0.024,
- 0.136, -0.332, -0.64, -0.648, -0.68, -0.836, -0.888, -0.604, -0.508,
- -0.448, -0.392, -0.496, -0.616, -0.576, -0.516, -0.356, -0.248,
- -0.388, -0.58, -0.52, -0.424, -0.264, -0.076, 0.044, 0.072, 0.12,
- 0.06, 0.008, 0.088, 0.376, 0.708, 0.888, 0.76, 0.724, 0.532
+ 0.26, 0.288, 0.28, 0.152, 0.124, 0.056, 0.04, 0.172, 0.248, 0.324,
+ 0.472, 0.484, 0.352, 0.256, 0.236, 0.28, 0.42, 0.424, 0.36, 0.332,
+ 0.424, 0.452, 0.372, 0.284, 0.296, 0.404, 0.476, 0.456, 0.456,
+ 0.464, 0.324, 0.34, 0.404, 0.428, 0.452, 0.472, 0.484, 0.384, 0.512,
+ 0.564, 0.508, 0.48, 0.284, 0.3, 0.832, 1.028, 0.78, 0.608, 0.588
],
"y": [
- -1.476, -1.26, -1.144, -1.012, -0.8, -0.672, -0.52, -0.504, -0.344,
- -0.164, -0.244, -0.144, -0.016, 0.116, 0.072, 0.128, 0.152, 0.18,
- 0.232, 0.34, 0.404, 0.472, 0.508, 0.532, 0.584, 0.724, 0.7, 0.608,
- 0.564, 0.528, 0.576, 0.508, 0.456, 0.276, 0.06, -0.148, -0.36,
- -0.584, -0.744, -0.868, -1.136, -1.432, -1.648, -1.776
+ -1.348, -1.288, -1.3, -1.332, -1.356, -1.368, -1.368, -1.26, -1.18,
+ -1.06, -1.036, -0.952, -0.88, -0.788, -0.672, -0.5, -0.328, -0.172,
+ -0.12, 0, 0.084, 0.204, 0.316, 0.384, 0.464, 0.508, 0.56, 0.624,
+ 0.728, 0.768, 0.728, 0.668, 0.592, 0.516, 0.384, 0.328, 0.268, 0.18,
+ 0.064, 0.048, 0, -0.08, -0.232, -0.344, -0.38, -0.316, -0.4, -0.48,
+ -0.492
],
"z": [
- -1.036, -1.168, -1.176, -1.144, -1.184, -1.024, -0.896, -0.772,
- -0.836, -1.168, -0.684, -0.608, -0.656, -0.748, -0.548, -0.636,
- -0.724, -0.72, -0.744, -0.736, -0.668, -0.564, -0.584, -0.548,
- -0.544, -0.516, -0.288, -0.24, -0.344, -0.268, -0.304, -0.396,
- -0.476, -0.456, -0.448, -0.504, -0.54, -0.668, -0.744, -0.84, -1,
- -0.932, -1.12, -1.032
+ -0.492, -0.544, -0.568, -0.532, -0.664, -0.864, -0.852, -0.744,
+ -0.752, -0.68, -0.776, -0.792, -0.836, -0.772, -0.716, -0.564,
+ -0.576, -0.604, -0.604, -0.592, -0.684, -0.72, -0.732, -0.704,
+ -0.668, -0.636, -0.612, -0.516, -0.352, -0.34, -0.292, -0.416,
+ -0.568, -0.532, -0.632, -0.608, -0.652, -0.584, -0.76, -0.796,
+ -0.716, -0.744, -0.7, -0.636, -0.928, -1.024, -0.956, -0.98, -0.832
]
- }
+ },
+ "createdAt": 1730111064260
},
{
- "ID": 1729161985455,
+ "id": "65e35b65-3640-435c-b215-919d02ffbd1d",
"data": {
"x": [
- 0.28, 0.456, 0.532, 0.62, 0.652, 0.664, 0.764, 0.828, 0.856, 0.828,
- 0.708, 0.608, 0.58, 0.472, 0.392, 0.288, 0.188, 0.084, 0.012,
- -0.048, -0.196, -0.284, -0.304, -0.484, -0.564, -0.524, -0.496,
- -0.572, -0.7, -0.812, -1.116, -1.104, -1.016, -0.872, -0.764,
- -0.732, -0.692, -0.672, -0.652, -0.704, -0.76, -0.628, -0.516,
- -0.444, -0.292
+ 0.484, 0.276, 0.212, 0.408, 0.44, 0.304, 0.296, 0.404, 0.344, 0.204,
+ 0.276, 0.432, 0.456, 0.42, 0.432, 0.436, 0.36, 0.24, 0.2, 0.368,
+ 0.272, 0.144, 0.204, 0.212, 0.132, 0.064, 0.1, 0.156, 0.42, 0.412,
+ 0.132, -0.028, 0, 0.188, 0.308, 0.416, 0.516, 0.5, 0.396, 0.276,
+ 0.316, 0.38, 0.448, 0.424, 0.376, 0.316, 0.412, 0.504, 0.408
],
"y": [
- 0.376, 0.252, 0.188, 0.104, -0.064, -0.172, -0.208, -0.344, -0.552,
- -0.692, -0.82, -0.932, -0.956, -1.008, -1, -0.944, -0.856, -0.876,
- -0.824, -0.76, -0.684, -0.572, -0.464, -0.372, -0.3, -0.18, -0.08,
- -0.056, 0.056, 0.148, 0.156, 0.2, 0.24, 0.308, 0.368, 0.436, 0.488,
- 0.524, 0.612, 0.516, 0.5, 0.572, 0.428, 0.328, 0.304
+ 0.512, 0.42, 0.356, 0.376, 0.3, 0.232, 0.188, 0.188, 0, -0.108,
+ -0.18, -0.196, -0.256, -0.38, -0.548, -0.584, -0.544, -0.752,
+ -0.856, -0.86, -0.864, -1.18, -1.252, -1.092, -1.04, -1.052, -1.164,
+ -1.212, -1.236, -1.192, -1.176, -1.076, -1.016, -0.956, -0.852,
+ -0.788, -0.704, -0.596, -0.536, -0.384, -0.272, -0.18, -0.068,
+ 0.008, 0, 0, -0.004, 0.072, 0.156
],
"z": [
- -0.592, -0.652, -0.624, -0.62, -0.68, -0.812, -0.988, -1.012,
- -1.004, -1.116, -1.172, -1.14, -1.148, -1.072, -1.096, -1.124,
- -1.16, -1.208, -1.172, -1.112, -1.004, -0.936, -0.96, -0.844,
- -0.828, -0.884, -0.812, -0.62, -0.52, -0.416, -0.264, -0.292,
- -0.352, -0.4, -0.384, -0.276, -0.184, -0.096, -0.268, -0.296,
- -0.364, -0.572, -0.524, -0.48, -0.44
+ -0.616, -0.688, -0.708, -0.744, -0.768, -0.768, -0.708, -0.656,
+ -0.752, -0.78, -0.752, -0.708, -0.76, -0.808, -0.844, -0.908,
+ -0.892, -0.776, -0.696, -0.948, -0.892, -0.732, -0.804, -0.792,
+ -0.796, -0.6, -0.6, -0.708, -0.968, -1.008, -0.944, -0.892, -0.784,
+ -0.808, -0.748, -0.776, -0.808, -0.768, -0.744, -0.612, -0.72,
+ -0.808, -0.828, -0.836, -0.792, -0.72, -0.86, -1.06, -1.108
]
- }
+ },
+ "createdAt": 1730111060117
},
{
- "ID": 1729161981858,
+ "id": "0609c195-c769-44bc-a401-a3a676629863",
"data": {
"x": [
- -0.432, -0.448, -0.336, -0.132, -0.008, 0.008, 0.088, 0.164, 0.208,
- 0.352, 0.484, 0.584, 0.748, 0.964, 1.052, 0.848, 0.652, 0.54, 0.46,
- 0.38, 0.316, 0.208, 0.152, 0.092, 0.004, -0.128, -0.284, -0.492,
- -0.624, -0.504, -0.36, -0.272, -0.26, -0.288, -0.344, -0.444,
- -0.592, -0.7, -0.672, -0.636, -0.52, -0.512, -0.604
+ 0.032, 0.024, -0.044, -0.06, 0.12, 0.048, -0.024, 0.04, 0.192,
+ 0.296, 0.34, 0.252, 0.152, 0.1, 0.076, 0.364, 0.576, 0.412, 0.104,
+ 0.008, 0.232, 0.26, 0.204, 0.204, 0.256, 0.288, 0.34, 0.408, 0.376,
+ 0.276, 0.196, 0.272, 0.412, 0.344, 0.424, 0.552, 0.476, 0.26, 0.308,
+ 0.54, 0.464, 0.212, 0.3, 0.504, 0.396, 0.264, 0.424, 0.584, 0.672
],
"y": [
- 0.624, 0.588, 0.56, 0.52, 0.492, 0.28, 0.172, 0.044, -0.12, -0.212,
- -0.3, -0.392, -0.384, -0.38, -0.524, -0.768, -0.916, -1.12, -1.26,
- -1.336, -1.404, -1.4, -1.288, -1.276, -1.216, -1.06, -0.872, -0.732,
- -0.584, -0.496, -0.416, -0.336, -0.22, -0.108, -0.052, -0.072,
- -0.04, -0.008, 0, 0.048, 0.068, 0.104, 0.2
+ -1.34, -1.288, -1.284, -1.284, -1.164, -1.116, -1.024, -0.936,
+ -0.78, -0.856, -0.668, -0.432, -0.244, -0.048, 0.084, 0.248, 0.384,
+ 0.404, 0.324, 0.424, 0.528, 0.568, 0.576, 0.64, 0.7, 0.732, 0.8,
+ 0.816, 0.8, 0.72, 0.644, 0.612, 0.516, 0.364, 0.272, 0.284, 0.184,
+ 0.068, 0.128, 0.236, 0.068, -0.176, -0.168, -0.08, -0.172, -0.42,
+ -0.552, -0.456, -0.384
],
"z": [
- -0.452, -0.456, -0.46, -0.528, -0.584, -0.568, -0.696, -0.78,
- -0.804, -0.928, -0.952, -0.952, -0.94, -0.936, -0.928, -0.8, -0.764,
- -0.836, -0.956, -1.008, -1.1, -1.1, -1.164, -1.136, -1.204, -1.188,
- -1.012, -0.796, -0.548, -0.62, -0.752, -0.992, -1.136, -1.12,
- -0.972, -0.868, -0.792, -0.728, -0.8, -0.808, -0.8, -0.696, -0.556
+ -0.724, -0.696, -0.8, -0.876, -0.956, -0.876, -0.824, -0.828,
+ -0.932, -0.856, -0.74, -0.612, -0.4, -0.468, -0.516, -0.7, -0.812,
+ -0.664, -0.592, -0.636, -0.836, -0.772, -0.672, -0.632, -0.588,
+ -0.516, -0.356, -0.336, -0.428, -0.584, -0.632, -0.592, -0.692,
+ -0.732, -0.808, -0.78, -0.884, -0.992, -0.876, -0.632, -0.608,
+ -0.772, -0.824, -0.772, -0.572, -0.616, -0.896, -0.92, -1.048
]
- }
+ },
+ "createdAt": 1730111055582
},
{
- "ID": 1729161977644,
+ "id": "eab4ad7a-30a8-408d-b23c-e1ff2c779d8a",
"data": {
"x": [
- 0.376, 0.216, 0.208, 0.256, 0.212, 0.184, 0.2, 0.04, -0.092, -0.228,
- -0.324, -0.372, -0.324, -0.244, -0.26, -0.244, -0.104, -0.036,
- -0.224, -0.404, -0.508, -0.5, -0.452, -0.388, -0.34, -0.376, -0.416,
- -0.5, -0.536, -0.5, -0.34, -0.248, -0.3, -0.272, -0.144, -0.06,
- -0.096, 0.052, 0.232, 0.444, 0.656, 0.644, 0.604, 0.616
+ -0.004, -0.164, 0.056, 0.14, 0.092, -0.004, -0.088, -0.192, -0.212,
+ -0.092, -0.156, -0.232, -0.232, -0.152, -0.004, -0.132, -0.28,
+ -0.292, -0.272, -0.292, -0.24, -0.116, -0.188, -0.372, -0.248,
+ -0.036, 0.068, 0.196, 0.236, 0.06, -0.052, -0.016, 0.084, 0.188,
+ 0.256, 0.32, 0.328, 0.272, 0.28, 0.352, 0.416, 0.344, 0.192, 0.112,
+ 0.128, 0.24, 0.3, 0.352, 0.34
],
"y": [
- -1.324, -1.46, -1.564, -1.556, -1.58, -1.504, -1.388, -1.336,
- -1.208, -1.032, -0.86, -0.748, -0.652, -0.5, -0.376, -0.22, -0.104,
- 0.08, 0.236, 0.432, 0.532, 0.572, 0.624, 0.676, 0.768, 0.86, 0.868,
- 0.884, 0.904, 0.948, 0.98, 0.884, 0.74, 0.512, 0.348, 0.144, -0.1,
- -0.216, -0.192, -0.248, -0.356, -0.556, -0.728, -0.816
+ -0.64, -0.92, -0.988, -1.004, -0.856, -0.736, -0.828, -1.06, -1.152,
+ -1.14, -1.14, -1.032, -1.012, -1.116, -1.112, -1.068, -1.036,
+ -1.044, -0.996, -1.032, -1.02, -1.024, -0.92, -0.896, -0.808, -0.76,
+ -0.62, -0.436, -0.396, -0.4, -0.352, -0.328, -0.264, -0.196, -0.12,
+ -0.068, 0.008, 0.048, 0.104, 0.204, 0.272, 0.296, 0.292, 0.332,
+ 0.388, 0.504, 0.56, 0.596, 0.624
],
"z": [
- -0.784, -0.764, -0.936, -1.08, -1.152, -1.216, -1.252, -1.16,
- -1.108, -0.996, -0.82, -0.752, -0.752, -0.856, -0.828, -0.852,
- -0.808, -0.728, -0.468, -0.304, -0.224, -0.328, -0.424, -0.44,
- -0.324, -0.148, -0.128, -0.12, -0.16, -0.116, -0.148, -0.24, -0.248,
- -0.3, -0.412, -0.636, -0.792, -0.992, -1.164, -1.272, -1.308,
- -1.152, -1.064, -1.196
+ -0.932, -0.764, -0.988, -1.028, -1.028, -0.696, -0.488, -0.544,
+ -0.86, -1.032, -0.824, -0.552, -0.412, -0.46, -0.736, -0.752,
+ -0.688, -0.696, -0.692, -0.732, -0.856, -1.076, -1.072, -0.804,
+ -0.756, -0.828, -0.832, -0.72, -0.764, -0.696, -0.728, -0.808,
+ -0.928, -0.988, -0.984, -0.976, -0.96, -0.892, -0.892, -0.9, -0.856,
+ -0.832, -0.808, -0.852, -0.856, -0.884, -0.812, -0.724, -0.6
]
- }
+ },
+ "createdAt": 1730111051003
},
{
- "ID": 1729161973811,
+ "id": "1b72a86b-8c83-492f-9bd9-861418f71d19",
"data": {
"x": [
- 0.26, -0.076, -0.036, 0.208, 0.272, 0.064, 0.052, 0.324, 0.448,
- 0.436, 0.476, 0.332, 0.068, 0.028, 0.004, 0.048, -0.044, -0.152,
- -0.124, -0.248, -0.34, -0.444, -0.484, -0.52, -0.644, -0.68, -0.536,
- -0.656, -0.86, -0.804, -0.644, -0.6, -0.708, -0.824, -0.752, -0.796,
- -0.884, -0.78, -0.696, -0.756, -0.644, -0.484, -0.392, -0.316
+ 0.692, 0.632, 0.68, 0.688, 0.596, 0.576, 0.7, 0.684, 0.656, 0.808,
+ 0.868, 0.836, 0.708, 0.44, 0.304, 0.444, 0.748, 0.984, 0.296, 0.148,
+ 0.68, 0.756, 0.364, -0.1, 0.28, 0.404, -0.004, 0.244, 0.276, 0.172,
+ 0.156, 0.376, 0.512, 0.516, 0.392, 0.072, 0.004, 0.368, 0.604,
+ 0.488, 0.212, 0.192, 0.268, 0.356, 0.4, 0.468, 0.492, 0.38
],
"y": [
- 0.68, 0.408, 0.168, -0.136, -0.38, -0.636, -0.688, -0.852, -0.776,
- -0.912, -0.984, -1.112, -1.264, -1.352, -1.396, -1.408, -1.424,
- -1.344, -1.22, -1.148, -1.108, -0.904, -0.728, -0.56, -0.388,
- -0.264, -0.144, -0.06, -0.012, 0.16, 0.188, 0.316, 0.356, 0.404,
- 0.548, 0.576, 0.6, 0.58, 0.708, 0.744, 0.764, 0.78, 0.768, 0.696
+ 0.208, 0.064, 0.084, 0.176, 0.124, -0.124, -0.12, -0.116, -0.148,
+ -0.26, -0.392, -0.468, -0.432, -0.46, -0.476, -0.764, -0.94, -0.692,
+ -0.656, -0.752, -0.872, -0.908, -0.808, -0.916, -1.028, -1.024,
+ -1.152, -1.112, -1.128, -1.168, -1.016, -0.852, -0.724, -0.712,
+ -0.732, -0.668, -0.6, -0.376, -0.18, 0.1, 0.284, 0.452, 0.56, 0.548,
+ 0.5, 0.504, 0.48, 0.448
],
"z": [
- -0.552, -0.032, -0.116, -0.552, -0.92, -1.104, -1.384, -1.656,
- -1.576, -1.232, -1.096, -1.056, -1.008, -1.172, -1.268, -1.308,
- -1.2, -1.052, -1.124, -1.104, -1.08, -0.996, -0.852, -0.64, -0.384,
- -0.308, -0.512, -0.392, -0.22, -0.288, -0.396, -0.376, -0.14, -0.02,
- -0.212, -0.084, 0.12, 0.188, 0.184, 0.256, 0.156, 0.052, 0.04, 0.016
+ -0.688, -0.764, -0.796, -0.688, -0.504, -0.52, -0.696, -0.672,
+ -0.58, -0.584, -0.6, -0.752, -0.74, -0.624, -0.428, -0.488, -0.744,
+ -1.224, -0.548, -0.18, -0.66, -0.86, -0.796, -0.496, -0.788, -1.016,
+ -0.768, -0.92, -0.984, -0.976, -0.94, -0.816, -0.756, -0.88, -1.18,
+ -1.068, -0.78, -0.78, -0.808, -0.756, -0.48, -0.372, -0.328, -0.456,
+ -0.656, -0.772, -0.752, -0.732
]
- }
+ },
+ "createdAt": 1730111046637
},
{
- "ID": 1729161969706,
+ "id": "ab5494a6-ff70-45fe-ae11-8fed15a4f5e9",
"data": {
"x": [
- 0.244, 0.004, -0.024, -0.256, -0.552, -0.692, -0.608, -0.62, -0.692,
- -0.732, -0.692, -0.696, -0.652, -0.616, -0.468, -0.292, -0.184,
- -0.212, -0.164, -0.224, -0.36, -0.452, -0.416, -0.376, -0.388,
- -0.388, -0.336, -0.236, -0.004, 0.232, 0.328, 0.528, 0.56, 0.416,
- 0.772, 0.968, 0.42, 0.224, 0.276, -0.108, -0.308, -0.688, -0.9,
- -0.616
+ 0.44, 0.388, 0.312, 0.268, 0.26, 0.304, 0.312, 0.308, 0.288, 0.34,
+ 0.408, 0.44, 0.38, 0.268, 0.416, 0.54, 0.552, 0.412, 0.432, 0.532,
+ 0.528, 0.404, 0.356, 0.352, 0.376, 0.492, 0.556, 0.504, 0.512,
+ 0.744, 0.6, 0.34, 0.248, 0.244, 0.268, 0.388, 0.504, 0.352, 0.34,
+ 0.252, 0.284, 0.192, 0.116, -0.048, -0.088, -0.144, -0.164, -0.096,
+ -0.06
],
"y": [
- -1.112, -1.232, -1.288, -1.232, -1.112, -0.932, -0.76, -0.524,
- -0.444, -0.348, -0.224, -0.16, -0.044, 0.116, 0.244, 0.468, 0.612,
- 0.864, 1.048, 1.088, 1.02, 0.948, 0.932, 0.844, 0.744, 0.66, 0.496,
- 0.432, 0.252, 0.156, 0.056, -0.164, -0.4, -0.528, -0.436, -0.432,
- -0.632, -0.808, -1.04, -1.36, -1.548, -1.4, -1.164, -0.912
+ 0.624, 0.7, 0.736, 0.8, 0.864, 0.876, 0.836, 0.784, 0.74, 0.72,
+ 0.712, 0.624, 0.44, 0.392, 0.388, 0.44, 0.376, 0.296, 0.308, 0.364,
+ 0.284, 0.252, 0.26, 0.116, -0.064, -0.112, -0.084, -0.164, -0.372,
+ -0.368, -0.332, -0.46, -0.564, -0.584, -0.652, -0.764, -0.872,
+ -0.928, -0.784, -0.772, -0.868, -1.112, -1.204, -1.192, -1.104,
+ -1.096, -1.144, -1.236, -1.264
],
"z": [
- -1.392, -1.444, -1.72, -1.656, -1.376, -1.104, -1.012, -0.856,
- -0.756, -0.788, -0.824, -0.724, -0.556, -0.084, 0.248, 0.24, 0.284,
- 0.26, 0.188, 0.236, 0.256, 0.212, 0.136, 0.076, 0.068, 0.04, -0.028,
- -0.132, -0.284, -0.632, -0.948, -1.312, -1.536, -1.508, -1.6,
- -1.504, -0.82, -0.728, -1.256, -1.456, -1.632, -1.476, -1.312,
- -1.432
+ -0.788, -0.704, -0.608, -0.5, -0.356, -0.288, -0.352, -0.488,
+ -0.556, -0.532, -0.472, -0.472, -0.708, -0.724, -0.796, -0.776,
+ -0.896, -0.82, -0.772, -0.712, -0.712, -0.752, -0.848, -0.876,
+ -0.912, -0.708, -0.516, -0.58, -0.808, -1.024, -0.852, -0.624,
+ -0.772, -0.804, -0.776, -0.66, -0.888, -0.788, -0.756, -0.408,
+ -0.352, -0.52, -0.92, -0.84, -0.656, -0.42, -0.392, -0.568, -0.816
]
- }
+ },
+ "createdAt": 1730111042105
}
]
}
diff --git a/src/utils/prediction.ts b/src/utils/prediction.ts
index 39acf7413..24434f236 100644
--- a/src/utils/prediction.ts
+++ b/src/utils/prediction.ts
@@ -21,7 +21,7 @@ export const getDetectedAction = (
.map((action) => ({
action,
thresholdDelta:
- confidences[action.ID] -
+ confidences[action.id] -
(action.requiredConfidence ?? mlSettings.defaultRequiredConfidence),
}))
.sort((left, right) => {
diff --git a/vite.config.ts b/vite.config.ts
index 8843e473c..05928841f 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -78,6 +78,7 @@ export default defineConfig(async ({ mode }): Promise => {
globals: true,
environment: "jsdom",
exclude: [...configDefaults.exclude, "**/e2e/**"],
+ setupFiles: ["fake-indexeddb/auto"],
},
resolve: {
alias: {